From 930ccf2cb0520107fe72f6deef82d2145713a7b5 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Wed, 15 Jun 2016 10:54:13 +0200 Subject: Deal properly with the user enabling any optional/addon kernel modules. When the user loads a non-system squashfs module (for instance from the optional or addons subdirectories) and this contains kernel modules, then the kernel must be made aware using a "depmod -a" call. The previous implementation did this at the end of rc.local but that was too late in the boot process: the kernel needs to be aware of the new modules straight from the start, so that udev can enable the hardware which is supported by these new kernel drivers on time. So the depmod call was moved to the live init script (inside the initrd). --- liveinit | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'liveinit') diff --git a/liveinit b/liveinit index 68a0713..43c8a9c 100755 --- a/liveinit +++ b/liveinit @@ -1004,6 +1004,23 @@ EOT done fi + # Find out if the user enabled any optional/addon kernel modules: + RUN_DEPMOD=0 + for MOD in $(cat /sys/block/loop*/loop/backing_file |grep -E "optional|addons") + do + if [ -d /mnt/live/modules/$(basename $MOD .sxz)/lib/modules/$(uname -r)/ ] + then + # Found kernel modules directory; we need to make a 'depmod' call. + RUN_DEPMOD=1 + fi + done + if [ $RUN_DEPMOD -eq 1 ]; then + # This costs a few seconds in additional boot-up time unfortunately: + echo "${MARKER}: Additional kernel module(s) found... need a bit" + chroot /mnt/overlay /sbin/depmod -a + fi + unset RUN_DEPMOD + # Delete ALSA state file, the Live OS may be booted on different computers: rm -f /mnt/overlay/var/lib/alsa/asound.state -- cgit v1.2.3