# HG changeset patch # User Christopher Rogers # Date 1330127887 18000 # Node ID 85aca4fdc71d15925728ef207a440300be0277c1 # Parent 666c76a20586be397c5e6db1b667b1791aa8d840 initramfs: Updated init and linuxrc. diff -r 666c76a20586 -r 85aca4fdc71d initramfs/init --- a/initramfs/init Tue Jan 24 05:06:38 2012 -0500 +++ b/initramfs/init Fri Feb 24 18:58:07 2012 -0500 @@ -1,35 +1,51 @@ #!/bin/sh +success() +{ + cat > /tmp/init + [ -d /proc/sys ] && umount /proc + echo -e "\\033[70G[ \\033[1;32mOK\\033[0;39m ]" + exit +} + launch_init() { + mount --move /dev/pts /mnt/dev/pts + mount --move /dev/shm /mnt/dev/shm + success < /init.log + mount --move /dev /mnt/dev + [ -f /mnt/dev/sdc ] || mknod /mnt/dev/sdc b 8 32 + [ -f /mnt/dev/sdc1 ] || mknod /mnt/dev/sdc1 b 8 33 + mount --move /run /mnt/run + mkdir -p /mnt/dev/pts + mount --move /dev/pts /mnt/dev/pts + mkdir -p /mnt/dev/shm + mount --move /dev/shm /mnt/dev/shm + success < /etc/mdadm.conf grep -qs " $root " /etc/mdadm.conf || root=$(awk '/dev.md/ { print $2; exit }' < /etc/mdadm.conf) @@ -122,13 +146,13 @@ mount_mapper /etc/mdadm.conf fi if lvmsetup; then - echo -n "lvm $root..." + echo -n "Switching / to lvm $root..." mount_mapper fi if grep -q mount= /proc/cmdline; then root="$(sed 's/.*mount=\([^ ]*\).*/\1/' < /proc/cmdline)" dev=$(blkid | grep $root | sed 's/:.*//;q') - echo -n "Mounting $dev ($root) ..." + echo "Mounting $dev ($root) ..." if ! mount $dev /mnt; then if echo $dev | grep -q "/dev/sd"; then delay=`cat /sys/module/usb_storage/parameters/delay_use` @@ -142,37 +166,45 @@ fi if grep -q loopfs= /proc/cmdline; then loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)" - echo -n "loop $loopfs..." + echo -n "Into loop file $loopfs..." losetup /dev/loop0 /mnt/$loopfs mount /dev/loop0 /mnt 2> /dev/null fi if grep -q bindfs= /proc/cmdline; then bind="$(sed 's/.*bindfs=\([^ ]*\).*/\1/' < /proc/cmdline)" + echo "Binding ${bind/,/ to } ..." mount --bind /mnt/${bind%,*} /mnt/${bind%,*}/${bind#*,} fi grep -q cryptoroot= /proc/cmdline && try_init umount /sys if grep -q subroot= /proc/cmdline; then subroot="/$(sed 's/.*subroot=\([^ ]*\).*/\1/' < /proc/cmdline)" && - if [ -s /usr/share/boot/busybox-static ]; then - mv /usr/share/boot/busybox-static . - /busybox-static rm -rf /etc /lib /*bin /usr /var - exec /busybox-static chroot /mnt$subroot /sbin/init + echo -n "Chrooting to $subroot..." + mount --move /dev/pts /mnt$subroot/dev/pts + shm=$subroot/dev/shm + mount --move /dev/shm /mnt$shm && + if mv /usr/share/boot/busybox-static /mnt$shm 2> /dev/null; then + success < /tmp/init +if [ $free -lt 50 ] || ! mount -t tmpfs $size tmpfs /mnt; then echo -e "\\033[70G[ \\033[1;33mSkipped\\033[0;39m]" - exec /sbin/init + exit fi -for i in $(ls -a /); do +for i in $(ls -ar /); do case "$i" in .|..) ;; mnt) mkdir /mnt/mnt;; @@ -184,3 +216,4 @@ esac done launch_init_modular +fi diff -r 666c76a20586 -r 85aca4fdc71d initramfs/linuxrc --- a/initramfs/linuxrc Tue Jan 24 05:06:38 2012 -0500 +++ b/initramfs/linuxrc Fri Feb 24 18:58:07 2012 -0500 @@ -4,8 +4,8 @@ export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin -mount -n -t proc proc /proc -mount -n -t sysfs sysfs /sys +mount -t proc proc /proc -o nosuid,noexec,nodev +mount -t sysfs sys /sys -o nosuid,noexec,nodev #mount -n -o remount,rw / # for the case we forgot rw boot option ln -sf /proc/mounts /etc/mtab # this allows us to use umount -a @@ -320,8 +320,12 @@ #mount -n -o move /proc proc #mount -n -o move /sys sys fumount /sys +fumount /run +fumount /dev if [ ! -e /dev/console ]; then mknod /dev/console c 5 1; fi +if [ ! -d dev/shm ]; then mkdir -p dev/shm; fi +if [ ! -d dev/pts ]; then mkdir -p dev/pts; fi # find chroot and init if [ -x bin/chroot ]; then CHROOT=bin/chroot; fi