summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@mandriva.org>2009-09-09 17:50:59 +0000
committerPascal Terjan <pterjan@mandriva.org>2009-09-09 17:50:59 +0000
commit77964056ffe63d87bee4e4afe8ddec541b0b5ce2 (patch)
tree661a584e903890f687d1f3e72a6c738217b4f516
parent07a8cc9cc9ed5c6fb9d69ecbf66f0dd51a702b1a (diff)
downloaddrakx-77964056ffe63d87bee4e4afe8ddec541b0b5ce2.tar
drakx-77964056ffe63d87bee4e4afe8ddec541b0b5ce2.tar.gz
drakx-77964056ffe63d87bee4e4afe8ddec541b0b5ce2.tar.bz2
drakx-77964056ffe63d87bee4e4afe8ddec541b0b5ce2.tar.xz
drakx-77964056ffe63d87bee4e4afe8ddec541b0b5ce2.zip
embed all firmwares that are needed by the modules we embed
-rw-r--r--images/Makefile2
-rw-r--r--images/NEWS3
-rwxr-xr-ximages/make_boot_img5
-rwxr-xr-ximages/update_kernel1
-rw-r--r--kernel/modules.pl11
5 files changed, 17 insertions, 5 deletions
diff --git a/images/Makefile b/images/Makefile
index 7415cc690..987005132 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -1,6 +1,6 @@
include ../Makefile.config
-VERSION=1.41
+VERSION=1.42
PRODUCT=drakx-installer-images
KERNELS=$(shell rpm -qf /lib/modules/2.*)
diff --git a/images/NEWS b/images/NEWS
index 587a41dd7..50bead4f3 100644
--- a/images/NEWS
+++ b/images/NEWS
@@ -1,7 +1,10 @@
+Version 1.42 - 9 September 2009, by Pascal Terjan
+
- include squashfs-lzma and sqlzma kernel modules in all.rdz
- add /dev/ptmx (for screen to work)
- drop duplicated code including busybox, ka version is better than
the one of DEBUGSTAGE1
+- embed all firmwares that are needed by the modules we embed
Version 1.40 - 14 April 2009, by Pascal Terjan
diff --git a/images/make_boot_img b/images/make_boot_img
index fab6183f7..2d077d4b2 100755
--- a/images/make_boot_img
+++ b/images/make_boot_img
@@ -157,10 +157,7 @@ sub initrd {
foreach ("/usr/share/ldetect-lst/fallback-modules.alias", "/lib/module-init-tools/ldetect-lst-modules.alias") {
_ "install -D $_ $tmp_initrd$_";
}
- # FIXME: we could just look at all network modules, run modinfo and them and look for the firmware field:
- # (we may also want to add firmware for SCSI and the like if any):
- foreach (grep { warn "> $_\n"; m!(3com|acenic|adaptec|cxgb3|e100|kaweth|tehuti|tigon)! } glob_("/lib/firmware/*")) {
- warn ">> $_\n";
+ foreach (glob_("all.kernels$I/firmware/*")) {
_ "cp -a $_ $tmp_initrd$_";
};
diff --git a/images/update_kernel b/images/update_kernel
index 3488acd06..37084b39f 100755
--- a/images/update_kernel
+++ b/images/update_kernel
@@ -73,6 +73,7 @@ sub extract_installed_rpm {
}
sys('perl', '../kernel/modules.pl', 'remove_unneeded_modules', $kern_ver);
+ sys('perl', '../kernel/modules.pl', 'get_firmwares', $kern_ver);
sys('perl', '../kernel/modules.pl', 'make_modules_per_image', $kern_ver);
rm_rf("$local_dir/modules");
diff --git a/kernel/modules.pl b/kernel/modules.pl
index 6fd0fd07d..a47b272f9 100644
--- a/kernel/modules.pl
+++ b/kernel/modules.pl
@@ -41,6 +41,17 @@ sub modules() {
@nls_modules, map { category2modules($_) } split(' ', $images_cat);
}
+sub get_firmwares() {
+ 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) = @_;