--- trunk/mkinitrd-magellan/livecd/linuxrc.sh 2008/06/26 22:21:36 753 +++ trunk/mkinitrd-magellan/livecd/linuxrc.sh 2010/12/16 01:24:51 1188 @@ -1,5 +1,5 @@ #!/bin/sh -# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd-magellan/livecd/linuxrc.sh,v 1.7 2008-06-26 22:21:36 niro Exp $ +# $Id$ # loads given kernel modules load_kernel_modules() @@ -55,16 +55,22 @@ ## some defaults ## DOSCSI=no DOUSB=no -DOSATA=no +DOSATA=yes DOFB=no -DOPATA=no +DOPATA=yes FORCED_ROOTFS="" +INITEXEC="/sbin/init" +BREAK_ENABLED=no ## starts here ## # mount essential filesystems mount -t proc proc /proc mount -t sysfs sysfs /sys +mount -t tmpfs tmpfs /dev -o rw,mode=0644,size=1024 + +# install all busybox applets +busybox --install -s # silencio echo 0 > /proc/sys/kernel/printk @@ -73,24 +79,19 @@ for i in $(cat /proc/cmdline) do case "${i}" in - doscsi) - DOSCSI=yes - ;; - dousb) - DOUSB=yes - ;; - dosata) - DOSATA=yes - ;; - dofb) - DOFB=yes - ;; - dopata) - DOPATA=yes - ;; - rootfs=*) - FORCED_ROOTFS="${i#*=}" - ;; + doscsi) DOSCSI=yes;; + noscsi) DOSCSI=no;; + dousb) DOUSB=yes;; + nousb) DOUSB=no;; + dosata) DOSATA=yes ;; + nosata) DOSATA=no ;; + dofb) DOFB=yes;; + nofb) DOFB=no;; + dopata) DOPATA=yes;; + nopata) DOPATA=no;; + rootfs=*) FORCED_ROOTFS="${i#*=}";; + init=*) INITEXEC="${i#*=}";; + break) BREAK_ENABLED=yes ;; esac done @@ -102,6 +103,11 @@ [ "${DOUSB}" = "yes" ] && load_kernel_modules "usb" [ "${DOSATA}" = "yes" ] && load_kernel_modules "sata" +# populate dev +mdev -s +# handle hotplug events properly +echo /sbin/mdev > /proc/sys/kernel/hotplug + # create newroot mount point mkdir -p /sysroot # fake a new filesystem (also needed with an initramfs!!) @@ -180,9 +186,9 @@ [ ! -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 ${BINDIR}/dev/tty c 5 0 || die + [ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0 # busybox needs this one - [ ! -e /sysroot/dev/tty5 ] && mknod ${BINDIR}/dev/tty5 c 4 5 || die + [ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5 (cd /sysroot/mnt/cloop; cp -a etc root home var /sysroot) @@ -193,11 +199,21 @@ cd / +# unset hotplug event-manager +echo > /proc/sys/kernel/hotplug + # de-silencio echo 3 > /proc/sys/kernel/printk +if [[ ${BREAK_ENABLED} = yes ]] +then + echo "-- Break requested, type 'exit' to resume operation ..." + ash +fi + echo "-- Switching to real sysroot ..." +umount /dev umount /sys umount /proc -exec run-init /sysroot /sbin/init $@ /sysroot/dev/console +exec run-init /sysroot ${INITEXEC} $@ /sysroot/dev/console