summaryrefslogtreecommitdiffstats
path: root/tools/i386
diff options
context:
space:
mode:
authorErwan Velu <erwan@mandriva.org>2002-02-13 17:31:41 +0000
committerErwan Velu <erwan@mandriva.org>2002-02-13 17:31:41 +0000
commitc4301d1c1317db55049a76cc1bb6a8a139384cb0 (patch)
tree65235c798ea6df977b2c7d68ee77b3609a7fdfc7 /tools/i386
parentd01bc83159bdcdea52c227c5876b0c9b88f292d6 (diff)
downloaddrakx-c4301d1c1317db55049a76cc1bb6a8a139384cb0.tar
drakx-c4301d1c1317db55049a76cc1bb6a8a139384cb0.tar.gz
drakx-c4301d1c1317db55049a76cc1bb6a8a139384cb0.tar.bz2
drakx-c4301d1c1317db55049a76cc1bb6a8a139384cb0.tar.xz
drakx-c4301d1c1317db55049a76cc1bb6a8a139384cb0.zip
Adding missing file on netboot
Diffstat (limited to 'tools/i386')
-rw-r--r--tools/i386/netboot/device.map1
-rwxr-xr-xtools/i386/netboot/makeImages31
2 files changed, 32 insertions, 0 deletions
diff --git a/tools/i386/netboot/device.map b/tools/i386/netboot/device.map
new file mode 100644
index 000000000..bf3423b23
--- /dev/null
+++ b/tools/i386/netboot/device.map
@@ -0,0 +1 @@
+(fd0) /dev/fd0
diff --git a/tools/i386/netboot/makeImages b/tools/i386/netboot/makeImages
new file mode 100755
index 000000000..79d45c11e
--- /dev/null
+++ b/tools/i386/netboot/makeImages
@@ -0,0 +1,31 @@
+#!/bin/sh
+# compile multiple grub stages (1, 2, pxegrub and nbgrub) for all supported network cards
+LOCALPATH=`pwd`
+PATHGRUB="../grub-0.91" # Path were grub is stored
+DRIVERTOCOMPILE=`grep NETBOOT_DRIVERS= ${PATHGRUB}/configure.in | cut -d " " -f 4 | cut -d "." -f 1`
+
+echo "Cleaning old drivers"
+for i in `ls`
+do
+ if [ -d $i ]; then
+ rm -rf $i
+ fi
+
+done
+
+cd ${PATHGRUB}
+
+echo "Compiling new ones"
+for i in ${DRIVERTOCOMPILE}
+ do
+ make clean
+ ./configure --enable-$i --enable-diskless
+ make
+ mkdir ${LOCALPATH}/$i
+ cp stage1/stage1 ${LOCALPATH}/$i/stage1
+ cp stage2/stage2 ${LOCALPATH}/$i/stage2
+ cp stage2/pxegrub ${LOCALPATH}/$i/pxegrub
+ cp stage2/nbgrub ${LOCALPATH}/$i/nbgrub
+ echo "compil done for " $i
+done
+cp ${PATHGRUB}/grub/grub ${LOCALPATH} -f
kwb">@_; $module = $conf->mapping($module); my (undef, $after) = parse_non_virtual($module, $conf->{$module}{install}) or return; my ($l, $_other_cmds) = partition_modprobes($after); @$l; } sub set_above { my ($conf, $module, $o_modules) = @_; $module = $conf->mapping($module); my @modules = $conf->mapping(split(' ', $o_modules || '')); { #- first add to "install" command my ($before, $after) = parse_non_virtual($module, $conf->{$module}{install}); my ($_previous_modules, $other_cmds) = partition_modprobes($after || ''); $after = join('; ', @$other_cmds, map { "/sbin/modprobe $_" } @modules); $conf->{$module}{install} = unparse_non_virtual($module, '--ignore-install', $before, $after); } { #- then to "remove" command my ($before, $after) = parse_non_virtual($module, $conf->{$module}{remove}); my ($_previous_modules, $other_cmds) = partition_modprobes($before || ''); $before = join('; ', @$other_cmds, map { "/sbin/modprobe -r $_" } @modules); $conf->{$module}{remove} = unparse_non_virtual($module, '-r --ignore-remove', $before, $after); } } sub create_from_old() { #- use module-init-tools script run_program::rooted($::prefix, "/sbin/generate-modprobe.conf", ">", file()); } sub read { my ($type, $o_file) = @_; my $file = $o_file || do { my $f = $::prefix . file(); if (!-e $f && -e "$::prefix/etc/modules.conf") { create_from_old(); } $f; }; my $conf = modules::any_conf::read_handled($type, $file); extract_probeall_field($conf); $conf; } sub write { my ($conf, $o_file) = @_; remove_probeall_field($conf); my $_b = before_leaving { extract_probeall_field($conf) }; modules::any_conf::write($conf, $o_file); } ################################################################################ sub remove_braces { my ($s) = @_; $s =~ s/^\s*\{\s*(.*)\s*;\s*\}\s*$/$1/; $s; } sub parse_non_virtual { my ($module, $s) = @_; my ($before, $options, $after) = $s =~ m!^(?:(.*);)? \s*(?:/sbin/)?modprobe\s+(-\S+\s+)*\Q$module\E \s*(?:&&\s*(.*))?$!x or return; $options =~ /--ignore-(install|remove)\b/ or return; ($before, $after) = map { remove_braces($_ || '') } $before, $after; $after =~ s!\s*;\s*/bin/true$!!; $before, $after; } sub unparse_non_virtual { my ($module, $mode, $before, $after) = @_; ($before ? "$before; " : '') . (($before || $after) ? "/sbin/modprobe --first-time $mode $module" : '') . ($after ? " && { $after; /bin/true; }" : ''); } sub partition_modprobes { my ($s) = @_; my (@modprobes, @other_cmds); my @l = split(/\s*;\s*/, $s); foreach (@l) { if (m!^(?:/sbin/)?modprobe\s+(?:-r\s+)?(\S+)$!) { push @modprobes, $1; } else { push @other_cmds, $1; } } \@modprobes, \@other_cmds; } sub parse_for_probeall { my ($module, $s) = @_; parse_non_virtual($module, $s) and return; if ($s =~ /[{&|]/) { log::l("weird install line in modprobe.conf for $module: $s"); return; } $s ne '/bin/true' or return; #- we have "alias $module off" here $s =~ s!\s*;\s*/bin/true$!!; my ($l, $other_cmds) = partition_modprobes($s); @$other_cmds ? undef : $l; } sub extract_probeall_field { my ($conf) = @_; foreach my $module (keys %$conf) { $conf->{$module}{install} or next; my $l = parse_for_probeall($module, $conf->{$module}{install}) or next; $conf->{$module}{probeall} = join(' ', @$l); delete $conf->{$module}{install}; } } sub remove_probeall_field { my ($conf) = @_; foreach my $module (keys %$conf) { my $modules = delete $conf->{$module}{probeall} or next; $conf->{$module}{install} = join('; ', (map { "/sbin/modprobe $_" } split(' ', $modules)), '/bin/true'); } } 1;