From 53543363a8ab4424c17ed7aec0e8aefc4df86b3d Mon Sep 17 00:00:00 2001 From: Ben Shelton Date: Mon, 21 Jul 2014 11:53:47 -0500 Subject: busybox: mdev: Ensure /dev/initctl exists after tmpfs mount During boot, there is a brief window during which /dev/initctl is missing, which breaks initscripts that would need to access it. This occurs because /etc/init.d/mountall.sh (rcS.d/S02...) attempts to ensure /dev/initctl is present, but /etc/init.d/mdev (rcS.d/S06...) mounts over /dev and clobbers the work done by mountall, and then does not wait synchronously until initctl is ready before continuing. To close this window, in /etc/init.d/mdev, we check whether /dev/initctl is present, and if not, we remove it and recreate it. This is the same thing that is done by /etc/init.d/mountall.sh, and we have verified that any writers of /dev/initctl will wait synchronously until sysvinit notices the change in fd and does the read, so no race exists. Signed-off-by: Richard Tollerton Signed-off-by: Ben Shelton Signed-off-by: Richard Purdie --- meta/recipes-core/busybox/files/mdev | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meta/recipes-core/busybox/files/mdev b/meta/recipes-core/busybox/files/mdev index c4447ef160..96252477e0 100755 --- a/meta/recipes-core/busybox/files/mdev +++ b/meta/recipes-core/busybox/files/mdev @@ -7,3 +7,13 @@ mount -t devpts devpts /dev/pts touch /dev/mdev.seq echo "/sbin/mdev" > /proc/sys/kernel/hotplug mdev -s + +# +# We might have mounted something over /dev, see if /dev/initctl is there. +# +if test ! -p /dev/initctl +then + rm -f /dev/initctl + mknod -m 600 /dev/initctl p +fi + -- cgit 1.2.3-korg