From: Peter Korsgaard Date: Sun, 17 Jun 2018 17:58:37 +0200 Subject: [Buildroot] [PATCH 2/2] sysvinit: add /dev/std{in, out, err} symlinks to inittab In-Reply-To: <87efivf8zk.fsf@dell.be.48ers.dk> (Peter Korsgaard's message of "Tue, 01 May 2018 21:53:35 +0200") References: <20180404180935.15185-1-joerg.krause@embedded.rocks> <20180404180935.15185-3-joerg.krause@embedded.rocks> <87efivf8zk.fsf@dell.be.48ers.dk> Message-ID: <87wouxl80i.fsf@dell.be.48ers.dk> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net >>>>> "Peter" == Peter Korsgaard writes: >>>>> "J?rg" == J?rg Krause writes: >> Some applications, e.g. bashs process subsitution feature, rely on the >> convention of `/dev/fd` being a symbolic link to `/proc/self/fd`. >> This symbolic link and his companions `/dev/std*` are created by (e)udev [1], >> but not by mdev, resulting in the following error when using the following >> expression: >> ``` >> bash: /dev/fd/62: No such file or directory >> ``` >> For the sake of simplicity, lets fix this by creating the symlinks in inittab. >> It is only really needed if eudev isn't used, but it doesn't really hurt to >> create them even if eudev will recreate them afterwards. >> Note, that we do not create the symlink `/dev/core` as `/proc/kcore` is >> not available on all platforms, e.g. ARM, and the feature is not much >> appreciated [2]. >> [1] >> https://github.com/gentoo/eudev/blob/8943501993322c59a6eb5be456b0d716aafff21e/src/shared/dev-setup.c#L35-L40 >> [2] https://lwn.net/Articles/45315/ >> Signed-off-by: J?rg Krause >> --- >> package/sysvinit/inittab | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> diff --git a/package/sysvinit/inittab b/package/sysvinit/inittab >> index fad91eae8b..608aabce07 100644 >> --- a/package/sysvinit/inittab >> +++ b/package/sysvinit/inittab >> @@ -9,7 +9,11 @@ si1::sysinit:/bin/mount -o remount,rw / >> si2::sysinit:/bin/mkdir -p /dev/pts >> si3::sysinit:/bin/mkdir -p /dev/shm >> si4::sysinit:/bin/mount -a >> -si5::sysinit:/bin/hostname -F /etc/hostname >> +si5::sysinit:/bin/ln -sf /proc/self/fd /dev/fd >> +si6::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin >> +si7::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout >> +si8::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr > This will fail on static /dev on a readonly rootfs, so I've redirected > errors to /dev/null. > Committed with that changed, thanks. > I have also added a patch adding these symlinks in the default skeleton > to handle static /dev on readonly rootfs setups. Committed to 2018.02.x, thanks. -- Bye, Peter Korsgaard