summaryrefslogtreecommitdiffstats
path: root/images/make_boot_img
diff options
context:
space:
mode:
Diffstat (limited to 'images/make_boot_img')
-rwxr-xr-ximages/make_boot_img27
1 files changed, 25 insertions, 2 deletions
diff --git a/images/make_boot_img b/images/make_boot_img
index bc341be9c..02fd0b85d 100755
--- a/images/make_boot_img
+++ b/images/make_boot_img
@@ -143,8 +143,9 @@ sub initrd {
my $stage1_root = "../mdk-stage1";
_ "rm -rf $tmp_initrd";
- mkdir_p("$tmp_initrd$_") foreach qw(/etc /lib /modules /sbin /tmp /var);
+ mkdir_p("$tmp_initrd$_") foreach qw(/etc /firmware /lib /modules /sbin /tmp /var);
symlink "../modules", "$tmp_initrd/lib/modules";
+ symlink "../firmware", "$tmp_initrd/lib/firmware";
symlink "/proc/mounts", "$tmp_initrd/etc/mtab";
symlink "../tmp", "$tmp_initrd/var/run";
@@ -156,7 +157,29 @@ sub initrd {
foreach ("/usr/share/ldetect-lst/fallback-modules.alias", "/lib/module-init-tools/ldetect-lst-modules.alias") {
_ "install -D $_ $tmp_initrd$_";
}
-
+ foreach my $firm (glob_("all.kernels$I/$ext/firmware/*")) {
+ my $dest=$firm;
+ $dest =~ s|all.kernels$I/$ext/||;
+ _ "cp -a $firm $tmp_initrd/$dest";
+ };
+
+ output("$tmp_initrd/hotplug", q{#!/bin/sh -e
+if [ "$SUBSYSTEM" = firmware ] && [ "$ACTION" = add ] && [ -n "$FIRMWARE" ] ; then
+ if [ ! -e /sys$DEVPATH/loading ]; then
+ exit 1
+ fi
+ if [ -e "/lib/firmware/$FIRMWARE" ]; then
+ echo 1 > /sys$DEVPATH/loading
+ cat "/lib/firmware/$FIRMWARE" > /sys$DEVPATH/data
+ echo 0 > /sys$DEVPATH/loading
+ exit 0
+ fi
+ echo -1 > /sys$DEVPATH/loading
+ exit 1
+fi
+});
+ _ "chmod 755 $tmp_initrd/hotplug";
+ symlink "../hotplug", "$tmp_initrd/sbin/hotplug";
_ "install $stage1_root/init $tmp_initrd/";
foreach ('stage1', 'pppd', 'pppoe') {
_ "install $stage1_root/$_ $tmp_initrd/sbin/";