diff options
author | Eric Hameleers <alien@slackware.com> | 2016-06-15 10:54:13 +0200 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2016-06-15 10:54:13 +0200 |
commit | 930ccf2cb0520107fe72f6deef82d2145713a7b5 (patch) | |
tree | 2cb7b258b9cc96915575bf7b8422c0c7801c4c68 /liveinit | |
parent | a4a87869b08723a3d784bec866e53939d9579d1d (diff) | |
download | liveslak-930ccf2cb0520107fe72f6deef82d2145713a7b5.tar.gz liveslak-930ccf2cb0520107fe72f6deef82d2145713a7b5.tar.xz |
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).
Diffstat (limited to 'liveinit')
-rwxr-xr-x | liveinit | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -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 |