summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mdk-stage1/doc/UPDATEMODULES5
-rw-r--r--perl-install/install_steps.pm16
2 files changed, 21 insertions, 0 deletions
diff --git a/mdk-stage1/doc/UPDATEMODULES b/mdk-stage1/doc/UPDATEMODULES
index 11c3d07ce..ceef21758 100644
--- a/mdk-stage1/doc/UPDATEMODULES
+++ b/mdk-stage1/doc/UPDATEMODULES
@@ -24,6 +24,9 @@ This disk may also contain some update or new modules for installed kernels.
Those modules must be placed in directory <kernel-version>. They must be
gzipped if the installed kernel modules are gzipped.
+You may need to specify the "category" so that new modules are used correctly.
+For example, a scsi module should be put in category disk/scsi so that it is
+put in scsi_hostadapter and initrd.
Here's a typical scenario:
@@ -61,6 +64,8 @@ msdos
ppa
# ISA network card needing options
ne io=0x300 irq=7
+# New module [list_modules: disk/scsi]
+a320raid
[root@obiwan mnt]# (cd floppy/2.6.8.1-20mdk ; find -type f)
./kernel/fs/msdos/msdos.ko.gz
./kernel/drivers/scsi/ppa.ko.gz
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
index caedbcdf3..333ff3525 100644
--- a/perl-install/install_steps.pm
+++ b/perl-install/install_steps.pm
@@ -625,6 +625,22 @@ sub updateModulesFromFloppy {
run_program::run("cd /floppy/$kernel_version ; find -type f | cpio -pdu $::prefix/lib/modules/$kernel_version");
run_program::rooted($::prefix, 'depmod', '-a', '-F', "/boot/System.map-$kernel_version", $kernel_version);
}
+
+ my $category;
+ foreach (cat_('/floppy/to_load')) {
+ chomp;
+ if (/^#/) {
+ ($category) = $1 if /\[list_modules: (.*?)\]/;
+ } elsif ($category) {
+ log::l("adding $_ to $category\n");
+ my $r = \%list_modules::l;
+ $r = $r->{$_} foreach split('/', $category);
+ push @$r, $_;
+
+ $category = '';
+ }
+ }
+
fs::umount("/floppy");
}