diff options
Diffstat (limited to 'test/create-busybox-container')
-rwxr-xr-x | test/create-busybox-container | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/test/create-busybox-container b/test/create-busybox-container new file mode 100755 index 0000000..5ded429 --- /dev/null +++ b/test/create-busybox-container @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +set -e +set -u +set -o pipefail + +root="${1:?Usage $0 container-root}" +mkdir -p "$root" +mkdir "$root/bin" +cp $(type -P busybox) "$root/bin" + +os_release=$(test -e /etc/os-release && echo /etc/os-release || echo /usr/lib/os-release) +ID_LIKE=$(awk -F= '$1=="ID_LIKE" { print $2 ;}' $os_release) +if [[ "$ID_LIKE" = *"suse"* ]]; then + mkdir -p "$root/lib" + mkdir -p "$root/lib64" + for lib in $(find /lib*/ld*); do + [[ -d $root/$(dirname $lib) ]] || mkdir -p $root/$(dirname $lib) + cp $lib $root/$lib + done +fi + +mkdir -p "$root/usr/lib" +touch "$root/usr/lib/os-release" + +ln -s busybox "$root/bin/sh" +ln -s busybox "$root/bin/cat" +ln -s busybox "$root/bin/tr" +ln -s busybox "$root/bin/ps" +ln -s busybox "$root/bin/ip" + +mkdir -p "$root/sbin" +cat <<'EOF' >"$root/sbin/init" +#!/bin/sh + +printf "ps aufx:\n" +ps aufx + +printf "/proc/1/cmdline:\n" +printf "%s\n\n" "$(tr '\0' ' ' </proc/1/cmdline)" + +printf "/proc/1/environ:\n" +printf "%s\n\n" "$(tr '\0' '\n' </proc/1/environ)" + +printf "/proc/1/mountinfo:\n" +cat /proc/self/mountinfo +printf "\n" + +printf "/proc/1/cgroup:\n" +printf "%s\n\n" "$(cat /proc/1/cgroup)" + +printf "/proc/1/uid_map:\n" +printf "%s\n\n" "$(cat /proc/1/uid_map)" + +printf "/proc/1/setgroups:\n" +printf "%s\n\n" "$(cat /proc/1/setgroups)" + +printf "/proc/1/gid_map:\n" +printf "%s\n\n" "$(cat /proc/1/gid_map)" + +printf "ip link:\n" +ip link +EOF +chmod +x "$root/sbin/init" |