From 4926e516a43e9ce8e1c2c87d7fff133d6014b599 Mon Sep 17 00:00:00 2001 From: Pascal Terjan <pterjan@mandriva.com> Date: Wed, 30 Sep 2009 16:52:06 +0200 Subject: [PATCH] Detect devtmpfs support at boot time We can't know for target kernel Signed-off-by: Pascal Terjan <pterjan@mandriva.com> --- mkinitrd | 78 ++++++++++++++++++------------------------------------------- 1 files changed, 23 insertions(+), 55 deletions(-) diff --git a/mkinitrd b/mkinitrd index f939a24..287570f 100755 --- a/mkinitrd +++ b/mkinitrd @@ -62,7 +62,6 @@ GRAPHICSMODS="" DRM_WHITELIST="i915" PREMODS="" DMRAIDS="" -NODEVTMPFS=1 ncryptodevs=0 ncryptoparts=0 ncryptolvs=0 @@ -1265,9 +1264,6 @@ if [ -z "$MNTIMAGE" -o -z "$IMAGE" ]; then exit 1 fi -grep -q devtmpfs /proc/filesystems -NODEVTMPFS=$? - mkdir -p $MNTIMAGE mkdir -p $MNTIMAGE/lib/firmware mkdir -p $MNTIMAGE/lib/modules/$kernel @@ -1319,34 +1315,6 @@ for MODULE in $resmods $resolved ; do installmodule $MODULE done -# mknod'ing the devices instead of copying them works both with and -# without devfs... -if [ $NODEVTMPFS -eq 1 ]; then -mkdir $MNTIMAGE/dev/mapper - -mknod $MNTIMAGE/dev/ram0 b 1 0 -mknod $MNTIMAGE/dev/ram1 b 1 1 -ln -sf ram1 $MNTIMAGE/dev/ram -fi #NODEVTMPFS - -if [ $NODEVTMPFS -eq 1 ]; then -mknod $MNTIMAGE/dev/null c 1 3 -mknod $MNTIMAGE/dev/zero c 1 5 -mknod $MNTIMAGE/dev/urandom c 1 9 -mknod $MNTIMAGE/dev/systty c 4 0 -if ! echo "$(uname -m)" | grep -q "s390"; then - for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do - mknod $MNTIMAGE/dev/tty$i c 4 $i - done -fi -for i in 0 1 2 3 ; do - mknod $MNTIMAGE/dev/ttyS$i c 4 $(($i + 64)) -done -mknod $MNTIMAGE/dev/tty c 5 0 -mknod $MNTIMAGE/dev/console c 5 1 -mknod $MNTIMAGE/dev/ptmx c 5 2 -fi #NODEVTMPFS - if [ -n "$raiddevices" ]; then inst /sbin/mdadm "$MNTIMAGE" if [ -f /etc/mdadm.conf ]; then @@ -1574,29 +1542,19 @@ echo Mounting sysfs filesystem mount -t sysfs /sys /sys EOF -if [ $NODEVTMPFS -ne 1 ]; then -cemit << EOF -echo Creating /dev -mount -t devtmpfs /dev /dev -EOF -else + cemit << EOF echo Creating /dev -mount -o mode=0755 -t tmpfs /dev /dev +echo Trying to use devtmpfs (ignore errors) +mount -o mode=0755 -t devtmpfs /dev /dev +cond -ne 0 /bin/init_devs EOF -fi #NODEVTMPFS -cemit << EOF -/bin/ln -s ram1 /dev/ram -mkdir /dev/pts -mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts -mkdir /dev/shm -mkdir /dev/mapper -/bin/ln -s fb0 /dev/fb -EOF +cat > $MNTIMAGE/bin/init_devs <<EOF +#!/bin/nash + +mount -o mode=0755 -t tmpfs /dev /dev -if [ $NODEVTMPFS -eq 1 ]; then -cemit << EOF echo Creating initial device nodes mknod /dev/null c 1 3 mknod /dev/zero c 1 5 @@ -1614,14 +1572,24 @@ EOF # (yay, fbcon bugs!) if ! echo "$(uname -m)" | grep -q "s390"; then for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do - emit "mknod /dev/tty$i c 4 $i" - done + echo "mknod /dev/tty$i c 4 $i" + done >> $MNTIMAGE/bin/init_devs fi for i in 0 1 2 3 ; do - emit "mknod /dev/ttyS$i c 4 $(($i + 64))" -done -fi #NODEVTMPFS + echo "mknod /dev/ttyS$i c 4 $(($i + 64))" +done >> $MNTIMAGE/bin/init_devs + +chmod +x $MNTIMAGE/bin/init_devs + +cemit << EOF +/bin/ln -s ram1 /dev/ram +mkdir /dev/pts +mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts +mkdir /dev/shm +mkdir /dev/mapper +/bin/ln -s fb0 /dev/fb +EOF if [ -x /usr/libexec/plymouth/plymouth-populate-initrd ]; then emit "/bin/plymouthd --attach-to-session" -- 1.7.1