Index: mkinitrd-6_3_5/livecd/linuxrc.sh =================================================================== --- mkinitrd-6_3_5/livecd/linuxrc.sh (Revision 1225) +++ mkinitrd-6_3_5/livecd/linuxrc.sh (Arbeitskopie) @@ -92,6 +92,7 @@ rootfs=*) FORCED_ROOTFS="${i#*=}";; init=*) INITEXEC="${i#*=}";; break) BREAK_ENABLED=yes ;; + rootdelay=*) ROOTDELAY="${i#*=}";; esac done @@ -124,6 +125,12 @@ sleep 8 fi +# respect rootdelay kernel param +if [ ! -z "${ROOTDELAY}" ]; then + echo "-- Requested a rootdelay of ${ROOTDELAY} seconds ..." + sleep ${ROOTDELAY} +fi + # searching cdrom with cdid BOOT_DEVICE="" FSTYPE="" @@ -182,14 +189,19 @@ done mkdir -p initrd proc tmp sys var/tmp dev media - # make /sysroot/dev/console & /mnt/dev/null - [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1 - [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3 - # only to be safe and to have a log channel - [ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0 - # busybox needs this one - [ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5 - + # use devtmpfs if supported + if [ "$(grep devtmpfs /proc/filesystems | cut -d$'\t' -f2)" = "devtmpfs" ] + then + mount -t devtmpfs dev /sysroot/dev + else + # make /sysroot/dev/console & /mnt/dev/null + [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1 + [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3 + # only to be safe and to have a log channel + [ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0 + # busybox needs this one + [ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5 + fi (cd /sysroot/mnt/cloop; cp -a etc root home var /sysroot) # ensure the right permissions Index: mkinitrd-6_3_5/mkinitrd.in =================================================================== --- mkinitrd-6_3_5/mkinitrd.in (Revision 1225) +++ mkinitrd-6_3_5/mkinitrd.in (Arbeitskopie) @@ -809,6 +809,10 @@ fi done +# respect rootdelay kernel param +add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in rootdelay=*) ROOTDELAY="${i#*=}";; esac; done' +add_initrd 'if [ ! -z "${ROOTDELAY}" ]; then echo "-- Requested a rootdelay of ${ROOTDELAY} seconds ..."; sleep ${ROOTDELAY};fi' + # lvm support if [ -n "${vg_list}" ] then @@ -850,13 +854,16 @@ # get the right initexec add_initrd "INITEXEC=\"${INITEXEC}\"" # support init=* from cmdline -add_initrd 'for i in $(cat /proc/cmdline); do if [[ ${i} = init=* ]]; then INITEXEC=${i/init=}; fi; done' +add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in init=*) INITEXEC="${i#*=}";; esac; done' add_initrd 'echo "-- Mounting sysroot ..."' add_initrd '. /etc/rootdev' add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' add_initrd 'mount /sysroot || ash' +# use devtmpfs if supported +add_initrd "if [ \"\$(grep devtmpfs /proc/filesystems | cut -d$'\t' -f2)\" = \"devtmpfs\" ]; then mount -t devtmpfs dev /sysroot/dev;fi" + # unset hotplug event-manager add_initrd 'echo > /proc/sys/kernel/hotplug' @@ -864,8 +871,8 @@ add_initrd 'echo 3 > /proc/sys/kernel/printk' add_initrd 'BREAK_ENABLED=no' -add_initrd 'for i in $(cat /proc/cmdline); do if [[ ${i} = break ]]; then BREAK_ENABLED=yes; fi; done' -add_initrd 'if [[ ${BREAK_ENABLED} = yes ]]; then echo "-- Break requested, type 'exit' to resume operation ..."; ash; fi' +add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in break) BREAK_ENABLED=yes;; esac; done' +add_initrd 'if [ "${BREAK_ENABLED}" = "yes" ]; then echo "-- Break requested, type 'exit' to resume operation ..."; ash; fi' add_initrd 'echo "-- Switching to real sysroot ..."' add_initrd 'umount /dev'