[PATCH] host/rootfs: add /dev/fd and /dev/std*
This is the same as 14483e1a690c (img/app: add /dev/fd and /dev/std*), but for the host. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com> --- host/rootfs/etc/s6-linux-init/scripts/rc.init | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/host/rootfs/etc/s6-linux-init/scripts/rc.init b/host/rootfs/etc/s6-linux-init/scripts/rc.init index 674fd38cc76837c7be25a5ef060f0f4d4b786394..ec654dd0ff329e01a25c03bdd80ee839e679e4d0 100755 --- a/host/rootfs/etc/s6-linux-init/scripts/rc.init +++ b/host/rootfs/etc/s6-linux-init/scripts/rc.init @@ -2,6 +2,11 @@ # SPDX-License-Identifier: EUPL-1.2+ # SPDX-FileCopyrightText: 2020-2022, 2024 Alyssa Ross <hi@alyssa.is> +if { ln -s /proc/self/fd /dev } +if { ln -s /proc/self/fd/0 /dev/stdin } +if { ln -s /proc/self/fd/1 /dev/stdout } +if { ln -s /proc/self/fd/2 /dev/stderr } + if { s6-rc-init -c /etc/s6-rc /run/service } if { mount --make-shared /run } --- base-commit: 39baa378367d95fac6ce4d0140b25203b2ee9b53 change-id: 20250805-host-dev-fd-51d57d8341bb -- Sincerely, Demi Marie Obenour (she/her/hers)
Demi Marie Obenour <demiobenour@gmail.com> writes:
This is the same as 14483e1a690c (img/app: add /dev/fd and /dev/std*), but for the host.
Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com> --- host/rootfs/etc/s6-linux-init/scripts/rc.init | 5 +++++ 1 file changed, 5 insertions(+)
Hmm. I did it only for img/app on purpose, because that's the only place we run arbitrary executables. In host/rootfs (and vm/sys/net), we only run a limited set of code that we control. WDYT?
diff --git a/host/rootfs/etc/s6-linux-init/scripts/rc.init b/host/rootfs/etc/s6-linux-init/scripts/rc.init index 674fd38cc76837c7be25a5ef060f0f4d4b786394..ec654dd0ff329e01a25c03bdd80ee839e679e4d0 100755 --- a/host/rootfs/etc/s6-linux-init/scripts/rc.init +++ b/host/rootfs/etc/s6-linux-init/scripts/rc.init @@ -2,6 +2,11 @@ # SPDX-License-Identifier: EUPL-1.2+ # SPDX-FileCopyrightText: 2020-2022, 2024 Alyssa Ross <hi@alyssa.is>
+if { ln -s /proc/self/fd /dev } +if { ln -s /proc/self/fd/0 /dev/stdin } +if { ln -s /proc/self/fd/1 /dev/stdout } +if { ln -s /proc/self/fd/2 /dev/stderr } + if { s6-rc-init -c /etc/s6-rc /run/service }
if { mount --make-shared /run }
--- base-commit: 39baa378367d95fac6ce4d0140b25203b2ee9b53 change-id: 20250805-host-dev-fd-51d57d8341bb -- Sincerely, Demi Marie Obenour (she/her/hers)
On 8/8/25 14:03, Alyssa Ross wrote:
Demi Marie Obenour <demiobenour@gmail.com> writes:
This is the same as 14483e1a690c (img/app: add /dev/fd and /dev/std*), but for the host.
Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com> --- host/rootfs/etc/s6-linux-init/scripts/rc.init | 5 +++++ 1 file changed, 5 insertions(+)
Hmm. I did it only for img/app on purpose, because that's the only place we run arbitrary executables. In host/rootfs (and vm/sys/net), we only run a limited set of code that we control. WDYT?
We control the code to some degree, but third-party dependencies might depend on these files existing, and failures due to these being missing could be extremely difficult to debug. In particular, portable code might use /dev/fd intentionally, as the BSDs have it. -- Sincerely, Demi Marie Obenour (she/her/hers)
Demi Marie Obenour <demiobenour@gmail.com> writes:
On 8/8/25 14:03, Alyssa Ross wrote:
Demi Marie Obenour <demiobenour@gmail.com> writes:
This is the same as 14483e1a690c (img/app: add /dev/fd and /dev/std*), but for the host.
Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com> --- host/rootfs/etc/s6-linux-init/scripts/rc.init | 5 +++++ 1 file changed, 5 insertions(+)
Hmm. I did it only for img/app on purpose, because that's the only place we run arbitrary executables. In host/rootfs (and vm/sys/net), we only run a limited set of code that we control. WDYT?
We control the code to some degree, but third-party dependencies might depend on these files existing, and failures due to these being missing could be extremely difficult to debug. In particular, portable code might use /dev/fd intentionally, as the BSDs have it.
Makes sense. In that case we should also do it in vm/sys/net as well. Do you think we even need to do it in host/initramfs?
participants (2)
-
Alyssa Ross -
Demi Marie Obenour