From 456162b3e36a08eca88c64064afb02eb5cd0a7e5 Mon Sep 17 00:00:00 2001 From: Antoine Ginies Date: Fri, 12 Nov 2004 10:37:21 +0000 Subject: fix custom options and dhcp/ip addr --- drakpxelinux.pl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'drakpxelinux.pl') diff --git a/drakpxelinux.pl b/drakpxelinux.pl index 85ffc70..86c0b6d 100644 --- a/drakpxelinux.pl +++ b/drakpxelinux.pl @@ -22,7 +22,7 @@ # thx R1 for test and some debug # cvs.mandrakesoft.com module: /soft/drakpxelinux -my $version = "1.0.1"; +my $version = "1.0.2"; use lib qw(/usr/lib/libDrakX); use standalone; @@ -157,18 +157,19 @@ sub get_items() { if (any { /^label/ } cat_($conf)) { if (/^label/) { ($label) = /^label\s(.*)/ } if (/KERNEL/) { ($kernel) = /KERNEL\s(.*)/ } - my ($initrd, $automatic, $interface, $network, $server, $directory, $ramdisk, $vga, $display) = m!\s*APPEND\sinitrd=(.*?rdz)\s\bautomatic=method\b:(nfs|http),interface:(eth0|eth1|eth2),network:(dhcp|10.0.1.33),server:(.*?),directory:(.*?)\s\bramdisk_size\b=(.*?)\sroot=/dev/ram3\srw\svga=(.*?)\sdisplay=(.*?)\s!; + my ($initrd, $automatic, $interface, $network, $server, $directory, $ramdisk, $vga, $devram, $display, $opts) = m!\s*APPEND\sinitrd=(.*?rdz)\s\bautomatic=method\b:(nfs|http),interface:(eth0|eth1|eth2),network:(dhcp|\d+\.\d+\.\d+\.\d+),server:(.*?),directory:(.*?)\s\bramdisk_size\b=(.*?)\sroot=(/dev/ram3\srw)\svga=(.*?)\sdisplay=(.*?)\s(.*)!; # in case of parameter not on this order (previous pxe default file) + $devram or my ($devra) = m!root=(/dev/ram3\srw)!; $initrd or my ($init) = m!\s*APPEND\s\binitrd\b=(.*?)\s!; $ramdisk or my ($ramdis) = m!\bramdisk_size\b=(\d+)\s!; $automatic or my ($automati) = m!\bautomatic\b=method:(nfs|http)!; $vga or my ($vg) = m!\bvga\b=(.*?)\s!; $display or my ($displa) = m!\bdisplay\b=(.*?)\s!; $interface or my ($interfac) = m!\binterface\b:(eth0|eth1|eth2)!; - $network or my ($networ) = m!\bnetwork\b:(dhcp|10.0.1.33)!; + $network or my ($networ) = m!\bnetwork\b:(dhcp|\d+\.\d+\.\d+\.\d+)!; $server or my ($serve) = m!\bserver\b:(.*?),!; $directory or my ($director) = m!\bdirectory\b:(.*?)\s!; - my $initall; my $ramdiskall; my $autoall; my $vgaall; my $displayall; my $interfaceall; my $networkall; my $serverall; my $directoryall; + my $optsall; my $initall; my $ramdiskall; my $autoall; my $vgaall; my $displayall; my $interfaceall; my $networkall; my $serverall; my $directoryall; my $devramall; if ($initrd) { $initall = $initrd } else { $initall = $init } if ($ramdisk) { $ramdiskall = $ramdisk } else { $ramdiskall = $ramdis } if ($automatic) { $autoall = $automatic } else { $autoall = $automati } @@ -178,10 +179,11 @@ sub get_items() { if ($network) { $networkall = $network } else { $networkall = $networ } if ($server) { $serverall = $server } else { $serverall = $serve } if ($directory) { $directoryall = $directory } else { $directoryall = $director } + if ($devram) { $devramall = $devram } else { $devramall = $devra } my ($allopt) = m!\s*APPEND\s(.*)!; my ($autocomp) = m!\bautomatic\b=(.*?)\s!; - my ($devram) = m!root=(/dev/ram3\srw)!; - $allopt and my $optionsall = join(' ', grep { ! /root=$devram/ && ! /initrd=$initall/ && !/display=$displayall/ && ! /ramdisk_size=$ramdiskall/ && ! /automatic=$autocomp/ && !/vga=$vgaall/ } split(' ', $allopt)); + my $optionsall = join(' ', grep { ! /root=$devramall/ && ! /initrd=$initall/ && !/display=$displayall/ && ! /ramdisk_size=$ramdiskall/ && ! /automatic=$autocomp/ && !/vga=$vgaall/ } split(' ', $allopt)); + if ($opts) { $optsall = $opts } else { $optsall = $optionsall } if ($label && $kernel && $initall) { my $information = get_information($label); # my $vgares = $list_vga_res{$vgaall}; @@ -199,7 +201,7 @@ sub get_items() { ramdisk => $ramdiskall, vga => $vgaall, display => $displayall, - option => $optionsall, + option => $optsall, },; } } @@ -270,13 +272,13 @@ EOF append_to_file($conf, " label $a->{label} KERNEL $a->{kernel} - APPEND initrd=$a->{initrd} automatic=method:$a->{automatic},interface:$a->{interface},network:$a->{network},server:$a->{server},directory:$a->{directory} ramdisk_size=$a->{ramdisk} root=/dev/ram3 rw vga=$a->{vga} + APPEND initrd=$a->{initrd} automatic=method:$a->{automatic},interface:$a->{interface},network:$a->{network},server:$a->{server},directory:$a->{directory} ramdisk_size=$a->{ramdisk} vga=$a->{vga} $a->{option} "); } elsif ($a->{interface} && $a->{display}) { append_to_file($conf, " label $a->{label} KERNEL $a->{kernel} - APPEND initrd=$a->{initrd} automatic=method:$a->{automatic},interface:$a->{interface},network:$a->{network},server:$a->{server},directory:$a->{directory} ramdisk_size=$a->{ramdisk} root=/dev/ram3 rw vga=$a->{vga} display=$a->{display} + APPEND initrd=$a->{initrd} automatic=method:$a->{automatic},interface:$a->{interface},network:$a->{network},server:$a->{server},directory:$a->{directory} ramdisk_size=$a->{ramdisk} vga=$a->{vga} display=$a->{display} $a->{option} "); # case of .img image } else { -- cgit v1.2.1