]> git.ipfire.org Git - thirdparty/systemd.git/blob - test/create-busybox-container
docs: document new description field
[thirdparty/systemd.git] / test / create-busybox-container
1 #!/usr/bin/env bash
2
3 set -e
4 set -u
5 set -o pipefail
6
7 root="${1:?Usage $0 container-root}"
8 mkdir -p "$root"
9 mkdir "$root/bin"
10 cp $(type -P busybox) "$root/bin"
11
12 ID_LIKE=$(awk -F= '$1=="ID_LIKE" { print $2 ;}' /etc/os-release)
13 if [[ "$ID_LIKE" = *"suse"* ]]; then
14 mkdir -p "$root/lib"
15 mkdir -p "$root/lib64"
16 for lib in $(find /lib*/ld*); do
17 [[ -d $root/$(dirname $lib) ]] || mkdir -p $root/$(dirname $lib)
18 cp $lib $root/$lib
19 done
20 fi
21
22 mkdir -p "$root/usr/lib"
23 touch "$root/usr/lib/os-release"
24
25 ln -s busybox "$root/bin/sh"
26 ln -s busybox "$root/bin/cat"
27 ln -s busybox "$root/bin/tr"
28 ln -s busybox "$root/bin/ps"
29 ln -s busybox "$root/bin/ip"
30
31 mkdir -p "$root/sbin"
32 cat <<'EOF' >"$root/sbin/init"
33 #!/bin/sh
34
35 printf "ps aufx:\n"
36 ps aufx
37
38 printf "/proc/1/cmdline:\n"
39 printf "%s\n\n" "$(tr '\0' ' ' </proc/1/cmdline)"
40
41 printf "/proc/1/environ:\n"
42 printf "%s\n\n" "$(tr '\0' '\n' </proc/1/environ)"
43
44 printf "/proc/1/mountinfo:\n"
45 cat /proc/self/mountinfo
46 printf "\n"
47
48 printf "/proc/1/cgroup:\n"
49 printf "%s\n\n" "$(cat /proc/1/cgroup)"
50
51 printf "/proc/1/uid_map:\n"
52 printf "%s\n\n" "$(cat /proc/1/uid_map)"
53
54 printf "/proc/1/setgroups:\n"
55 printf "%s\n\n" "$(cat /proc/1/setgroups)"
56
57 printf "/proc/1/gid_map:\n"
58 printf "%s\n\n" "$(cat /proc/1/gid_map)"
59
60 printf "ip link:\n"
61 ip link
62 EOF
63 chmod +x "$root/sbin/init"