summaryrefslogtreecommitdiffstats
path: root/initrd/initrd-stuff/init
diff options
context:
space:
mode:
Diffstat (limited to 'initrd/initrd-stuff/init')
-rwxr-xr-xinitrd/initrd-stuff/init14
1 files changed, 8 insertions, 6 deletions
diff --git a/initrd/initrd-stuff/init b/initrd/initrd-stuff/init
index e10f52ad..56d3cb0f 100755
--- a/initrd/initrd-stuff/init
+++ b/initrd/initrd-stuff/init
@@ -383,16 +383,18 @@ and list the modules loaded until\n now."
waitfor /tmp/svcfg 20000 || error " For some reason the software config \
of this client did not finish in\n time. You might check the process list \
and list the modules loaded until\n now."
+# close runlevel script for stuff to execute during early bootup
+d_mkbootld close
# IP configuration is made and should not be updated automatically, udevd
# should be killed if started within init
killall -9 dhcpcd dhclient pump 2>/dev/null
# unmount the bind mounted modules directory
-umount -n /lib/modules/${KERNEL} 2>/dev/null || {
- usleep 40 && umount -n /lib/modules/${KERNEL} || \
- error "Unmount of the kernel modules directory failed for some reason."
-}
-# close runlevel script for stuff to execute during early bootup
-d_mkbootld close
+for i in 0 40 100 200 300 500 800 1000 1200; do
+ usleep $i && umount -n /lib/modules/${KERNEL} 2>/dev/null && break
+ error " Waited $i ticks to unmount kernel module directory ..." nonfatal
+done
+[ $i -gt 1000 ] && error " Unmount of the kernel modules directory \
+failed for some reason. Some\n modprobe still active!?"
# check for inittab file
test -f /mnt/etc/inittab || error " The file /etc/inittab does not exist or \
is no regular one. It is needed\n for the bootup procedure to follow."