From: Alex Hornung Date: Sat, 10 Jul 2010 15:13:37 +0000 (+0100) Subject: initrd - minor fixes X-Git-Url: https://gitweb.dragonflybsd.org/~mneumann/dragonfly.git/commitdiff_plain/b2ca7e5e500009de153d6a79aa6eb5e2c3e19640 initrd - minor fixes * mount the new root as read-only so that fsck doesn't complain and drop us to single-user mode. * drop a few unnecessary tools from the initrd * Remove a debug printf from the mini_init. * Mount the device as read-only in rcmount_crypt since fsck and so on expect it that way. --- diff --git a/sbin/mkinitrd/mini_init/oinit.c b/sbin/mkinitrd/mini_init/oinit.c index 3c99220872..ff40fd5074 100644 --- a/sbin/mkinitrd/mini_init/oinit.c +++ b/sbin/mkinitrd/mini_init/oinit.c @@ -124,7 +124,6 @@ runcom(char **argv_orig) setctty(_PATH_CONSOLE); - printf("Child talking, about to call /etc/rc\n"); argv[0] = "sh"; argv[1] = _PATH_RUNCOM; argv[2] = "autoboot" ; diff --git a/sbin/mkinitrd/mkinitrd.sh b/sbin/mkinitrd/mkinitrd.sh index 7e3d2b952c..d6ab2a5a93 100644 --- a/sbin/mkinitrd/mkinitrd.sh +++ b/sbin/mkinitrd/mkinitrd.sh @@ -2,8 +2,8 @@ BUILD_DIR="/tmp/initrd" INITRD_SIZE="15m" -BIN_TOOLS="echo ln ls mkdir mv rm rmdir sh" -SBIN_TOOLS="mount mount_devfs mount_hammer mount_nfs mount_null mount_procfs mount_tmpfs umount iscontrol cryptsetup lvm sysctl" +BIN_TOOLS="mkdir rm sh kill" +SBIN_TOOLS="mount mount_devfs mount_hammer mount_nfs mount_null mount_procfs mount_tmpfs umount iscontrol cryptsetup lvm sysctl udevd" INITRD_DIRS="bin boot dev etc mnt proc sbin tmp var new_root" CONTENT_DIRS="/usr/share/initrd" diff --git a/share/initrd/rc b/share/initrd/rc index c26fd7e25c..05f2a852db 100644 --- a/share/initrd/rc +++ b/share/initrd/rc @@ -6,6 +6,7 @@ /sbin/mount_tmpfs tmpfs /tmp /sbin/mount_tmpfs tmpfs /var mkdir /var/tmp +mkdir /var/run rescue_shell() { echo "Starting recovery shell!" @@ -13,6 +14,9 @@ rescue_shell() { exit 0 } +# Start udevd +/sbin/udevd + for rcs in /etc/rc.*; do if [ -x $rcs ]; then . $rcs @@ -36,7 +40,7 @@ if [ "$TYPE" = "local" ]; then FSTYPE=$2 MOUNTFROM=$3 echo "executing /sbin/mount -t $FSTYPE $4 $MOUNTFROM /new_root" - /sbin/mount -t $FSTYPE $4 $MOUNTFROM /new_root + /sbin/mount -o ro -t $FSTYPE $4 $MOUNTFROM /new_root if [ "$?" -ne "0" ]; then rescue_shell fi @@ -51,6 +55,11 @@ else fi fi +# Stop udevd +read UDEVD_PID < /var/run/udevd.pid +kill $UDEVD_PID + +# Clean up rm -rf /var/* rm -rf /tmp/* /sbin/umount /var diff --git a/share/initrd/rcmount_crypt b/share/initrd/rcmount_crypt index 9fc0a033cc..52c18c7b4d 100755 --- a/share/initrd/rcmount_crypt +++ b/share/initrd/rcmount_crypt @@ -22,7 +22,7 @@ if [ "$?" -ne "0" ]; then fi # Mount, as is expected, onto /new_root -mount -t $FSTYPE /dev/mapper/$VOLUME /new_root +mount -o ro -t $FSTYPE /dev/mapper/$VOLUME /new_root if [ "$?" -ne "0" ]; then return 3; fi