#!/sbin/runscript # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 description="mount devtmpfs on /dev" depend() { keyword -vserver -lxc } mount_dev_directory() { local mounted=false fstab=false action=--mount msg=Mounting rc=0 if ! grep -qs devtmpfs /proc/filesystems; then eerror "CONFIG_DEVTMPFS=y is required in your kernel configuration" eerror "for this version of udev to run successfully." eerror "This requires immediate attention." if ! mountinfo -q /dev; then mount -n -t tmpfs dev /dev busybox mdev -s mkdir /dev/pts fi return 1 fi # Is /dev already a mounted devtmpfs? mountinfo -q -f devtmpfs /dev && mounted=true # If an entry for /dev exists in fstab it must be a devtmpfs. fstabinfo -q -t devtmpfs /dev && fstab=true # No options are processed here as they should all be in /etc/fstab if $fstab; then $mounted && action=--remount && msg=Remounting ebegin "$msg /dev according to /etc/fstab" fstabinfo $action /dev rc=$? elif ! $mounted; then ebegin "Mounting /dev" # Some devices require exec, Bug #92921 mount -n -t devtmpfs -o "exec,nosuid,mode=0755,size=10M" udev /dev rc=$? else ebegin "Using /dev mounted from kernel" fi eend $rc } seed_dev() { # Seed /dev with some things that we know we need # creating /dev/console, /dev/tty and /dev/tty1 to be able to write # to $CONSOLE with/without bootsplash before udevd creates it [ -c /dev/console ] || mknod -m 600 /dev/console c 5 1 [ -c /dev/tty1 ] || mknod -m 620 /dev/tty1 c 4 1 [ -c /dev/tty ] || mknod -m 666 /dev/tty c 5 0 # udevd will dup its stdin/stdout/stderr to /dev/null # and we do not want a file which gets buffered in ram [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3 # so udev can add its start-message to dmesg [ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11 # Create problematic directories mkdir -p /dev/pts /dev/shm return 0 } start() { mount_dev_directory || return 1 seed_dev return 0 }