diff options
author | Colin Guthrie <colin@mageia.org> | 2013-11-01 10:35:03 +0000 |
---|---|---|
committer | Colin Guthrie <colin@mageia.org> | 2013-11-02 11:47:27 +0000 |
commit | 284ba5ab6fc742dd3f7a5a4705207f9b2d4de5be (patch) | |
tree | 18eb615cabb1ea6cee90c1ef7b6fe01812c1c0dd | |
parent | 74cc75140329a03e5ed6f952932f8ea937216209 (diff) | |
download | drakx-284ba5ab6fc742dd3f7a5a4705207f9b2d4de5be.tar drakx-284ba5ab6fc742dd3f7a5a4705207f9b2d4de5be.tar.gz drakx-284ba5ab6fc742dd3f7a5a4705207f9b2d4de5be.tar.bz2 drakx-284ba5ab6fc742dd3f7a5a4705207f9b2d4de5be.tar.xz drakx-284ba5ab6fc742dd3f7a5a4705207f9b2d4de5be.zip |
images/kernel: Ensure the previously hand-picked modules are included in the new dracut-based initrd.
This removes functions no longer called and adds a new one which will
simply list the desired modules and pass them on the dracut command line.
This should mean we have the same modules as before (at least) which should
mean less regressions.
This does increase the size of the initrd back up quite a lot (as expected)
so we may want to look at optimising other areas to bring it back down a bit
again.
-rw-r--r-- | images/NEWS | 2 | ||||
-rwxr-xr-x | images/make_boot_img | 3 | ||||
-rw-r--r-- | kernel/modules.pl | 31 |
3 files changed, 11 insertions, 25 deletions
diff --git a/images/NEWS b/images/NEWS index 11b33e10a..3cf924b06 100644 --- a/images/NEWS +++ b/images/NEWS @@ -1,3 +1,5 @@ +- include network modules as specified by kernel/list_modules.pm + Version 1.94 - 29 October 2013 by Colin Guthrie - adapt to a dracut based stage1 diff --git a/images/make_boot_img b/images/make_boot_img index eb2146fa2..2be5bbde5 100755 --- a/images/make_boot_img +++ b/images/make_boot_img @@ -153,6 +153,7 @@ sub initrd { my $init_binary = $ENV{USE_LOCAL_STAGE1} ? trim(`realpath ../mdk-stage1/init`) : ""; my ($ext) = $img =~ /rdz-(.*)/ or die "bad initrd name ($img)"; my $modules = " network mgainstaller "; + my $drivers = `perl ../kernel/modules.pl list_needed_modules $kernel | xargs`; if ($ENV{DEBUGSTAGE1} || $ENV{BUILD_KA}) { $modules="$modules busybox "; @@ -162,7 +163,7 @@ sub initrd { mkdir_p("build/dracut.conf.d"); touch("build/dracut.conf"); # TODO if --nofscks and --no-hostonly are switched, dracut gives an error - fix or report upstream - __ "DRAKX_STAGE1_BINARY=$stage1_binary DRAKX_INIT_BINARY=$init_binary dracut --conf ./build/dracut.conf --confdir ./build/dracut.conf.d --nofscks --no-hostonly --add ' $modules ' --omit ' dash modsign systemd plymouth btrfs crypt lvm cifs resume rootfs-block biosdevname shutdown ' '$img' '$kernel'" + __ "DRAKX_STAGE1_BINARY=$stage1_binary DRAKX_INIT_BINARY=$init_binary dracut --conf ./build/dracut.conf --confdir ./build/dracut.conf.d --nofscks --no-hostonly --add ' $modules ' --omit ' dash modsign systemd plymouth btrfs crypt lvm cifs resume rootfs-block biosdevname shutdown ' --add-drivers ' $drivers ' '$img' '$kernel'" } diff --git a/kernel/modules.pl b/kernel/modules.pl index b64c92fa2..3b68b4039 100644 --- a/kernel/modules.pl +++ b/kernel/modules.pl @@ -41,38 +41,21 @@ sub modules() { @nls_modules, map { category2modules($_) } split(' ', $images_cat); } -sub get_firmwares() { +sub list_needed_modules { my ($kern_ver) = @_; - foreach (all("all.kernels/$kern_ver/modules")) { - foreach(`/sbin/modinfo -Ffirmware "all.kernels/$kern_ver/modules/$_"`) { - mkdir_p(dirname("all.kernels/$kern_ver/firmware/$_")); - eval { cp_af("/lib/firmware/$_", "all.kernels/$kern_ver/firmware/$_"); }; - } - } -} - -sub remove_unneeded_modules { - my ($kern_ver) = @_; - - load_dependencies("all.kernels/$kern_ver/modules.dep"); + load_dependencies("/lib/modules/$kern_ver/modules.dep"); my @all = modules(); my @all_with_deps = map { dependencies_closure($_) } @all; - my %wanted_modules = map { (list_modules::modname2filename($_) . ".ko.xz" => 1) } @all_with_deps; - foreach (all("all.kernels/$kern_ver/modules")) { - $wanted_modules{$_} or unlink "all.kernels/$kern_ver/modules/$_"; + my %wanted_modules = map { (list_modules::modname2filename($_) => 1) } @all_with_deps; + foreach (`find /lib/modules/$kern_ver -name '*.ko.?z'`) { + my $modfile = basename($_); + $modfile =~ s/\.ko\.xz//; + $wanted_modules{$modfile} and print "$modfile\n"; } } -sub make_modules_per_image { - my ($kern_ver) = @_; - - my $dir = "all.kernels/$kern_ver/modules"; - - system("cd $dir ; tar cf ../all_modules.tar *.ko.*") == 0 or die "tar failed\n"; -} - sub get_main_modules() { my $base = dirname($0); my $main = chomp_(cat_("$base/RPMS/.main")); |