aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZev Weiss <zev@bewilderbeest.net>2017-03-21 21:02:37 -0500
committerZev Weiss <zev@bewilderbeest.net>2017-03-21 21:02:37 -0500
commit6d478c3dd46e2083fb29ff5fb8d143cbfae2903b (patch)
tree07551dd7136d8efdaf9fa84486d778aeb46b6eab
parent046266a2f776b770e18115d8c9a764c9498b78a8 (diff)
downloadvirtme-6d478c3dd46e2083fb29ff5fb8d143cbfae2903b.tar.gz
virtme-init: create /dev/{fd,std{in,out,err}} symlinks
bash, for example, wants /dev/fd to exist for implementing process substitution (e.g. 'cat <(echo hello)'). Might as well provide the usual three stdio links while we're there. Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
-rwxr-xr-xvirtme/guest/virtme-init10
1 files changed, 10 insertions, 0 deletions
diff --git a/virtme/guest/virtme-init b/virtme/guest/virtme-init
index 0a17c2b..3f68b9a 100755
--- a/virtme/guest/virtme-init
+++ b/virtme/guest/virtme-init
@@ -121,6 +121,16 @@ mkdir -p -m 0755 /dev/shm /dev/pts
mount -t devpts -o gid=tty,mode=620,noexec,nosuid devpts /dev/pts
mount -t tmpfs -o mode=1777,nosuid,nodev tmpfs /dev/shm
+# Install /proc/self/fd symlinks into /dev if not already present
+declare -r -A fdlinks=(["/dev/fd"]="/proc/self/fd"
+ ["/dev/stdin"]="/proc/self/fd/0"
+ ["/dev/stdout"]="/proc/self/fd/1"
+ ["/dev/stderr"]="/proc/self/fd/2")
+
+for p in "${!fdlinks[@]}"; do
+ [[ -e "$p" ]] || ln -s "${fdlinks[$p]}" "$p"
+done
+
# Bring up networking
ip link set dev lo up