X-Git-Url: http://gitweb/?a=blobdiff_plain;ds=sidebyside;f=udev%2Fstart_udev;h=d8f4b26fce9e6a6c72a3df6d832330355dead79d;hb=dda3fa49b5ae606f13f2ab7b8a4430a0ede18521;hp=1be7ce90bec54fcf162456dd49d318edcb9af963;hpb=6dca1d213a39ee6af51632926e8b7c8914215cd9;p=crossrootfs.git diff --git a/udev/start_udev b/udev/start_udev index 1be7ce9..d8f4b26 100644 --- a/udev/start_udev +++ b/udev/start_udev @@ -1,17 +1,32 @@ #!/bin/sh -# mount /dev as a tmpfs; note: some video drivers require exec access in /dev -/bin/mount -n -t tmpfs udev /dev -o exec,nosuid,mode=0755 +# - if /dev is not mounted - mount as a devtmpfs (CONFIG_DEVTMPFS=y) +# - if /dev is mounted (e.g. due to handover from initramfs or +# CONFIG_DEVTMPFS_MOUNT=y), remount with specific options +# - some video drivers require exec access in /dev, thus it's set here +# - for completness, we add few sanity limits (2k non-empty files, 16k inodes) -# unset hotplugger +UDEVOPTS="exec,nosuid,noatime,mode=0755,nr_blocks=2048,nr_inodes=16384" +if /bin/mountpoint -q /dev ; then + /bin/mount -n -o remount,${UDEVOPTS} dev /dev +else + /bin/mount -n -t devtmpfs -o ${UDEVOPTS} dev /dev +fi + +# mount /run directory +/bin/mount -n -t tmpfs -o mode=0755,nosuid,nodev,exec tmpfs /run + +# make sure hotplugger is not set echo > /proc/sys/kernel/hotplug -# populate /dev with static nodes and directories -/bin/cp -a /lib/udev/devices/* /dev/ +# since v155, udevd automatically copies /lib/udev/devices +# and creates /proc/{kcore,self/fd/{0,1,2}} symlinks -# launch udev daemon -/sbin/udevd --daemon +# launch udev daemon, make sure it's not running first +test -z "$(/bin/pidof -s udevd)" && /sbin/udevd --daemon # coldplug devices and wait for the queue to be processed -/sbin/udevadm trigger +/sbin/udevadm trigger --type=subsystems --action=add +/sbin/udevadm trigger --type=devices --action=add /sbin/udevadm settle +