|
@@ -1,49 +0,0 @@
|
|
|
-#!/usr/bin/env bash
|
|
|
-# Generate a very minimal filesystem based on busybox-static,
|
|
|
-# and load it into the local docker under the name "docker-ut".
|
|
|
-
|
|
|
-missing_pkg() {
|
|
|
- echo "Sorry, I could not locate $1"
|
|
|
- echo "Try 'apt-get install ${2:-$1}'?"
|
|
|
- exit 1
|
|
|
-}
|
|
|
-
|
|
|
-BUSYBOX=$(which busybox)
|
|
|
-[ "$BUSYBOX" ] || missing_pkg busybox busybox-static
|
|
|
-SOCAT=$(which socat)
|
|
|
-[ "$SOCAT" ] || missing_pkg socat
|
|
|
-
|
|
|
-shopt -s extglob
|
|
|
-set -ex
|
|
|
-ROOTFS=`mktemp -d ${TMPDIR:-/var/tmp}/rootfs-busybox.XXXXXXXXXX`
|
|
|
-trap "rm -rf $ROOTFS" INT QUIT TERM
|
|
|
-cd $ROOTFS
|
|
|
-
|
|
|
-mkdir bin etc dev dev/pts lib proc sys tmp
|
|
|
-touch etc/resolv.conf
|
|
|
-cp /etc/nsswitch.conf etc/nsswitch.conf
|
|
|
-echo root:x:0:0:root:/:/bin/sh > etc/passwd
|
|
|
-echo daemon:x:1:1:daemon:/usr/sbin:/bin/sh >> etc/passwd
|
|
|
-echo root:x:0: > etc/group
|
|
|
-echo daemon:x:1: >> etc/group
|
|
|
-ln -s lib lib64
|
|
|
-ln -s bin sbin
|
|
|
-cp $BUSYBOX $SOCAT bin
|
|
|
-for X in $(busybox --list)
|
|
|
-do
|
|
|
- ln -s busybox bin/$X
|
|
|
-done
|
|
|
-rm bin/init
|
|
|
-ln bin/busybox bin/init
|
|
|
-cp -P /lib/x86_64-linux-gnu/lib{pthread*,c*(-*),dl*(-*),nsl*(-*),nss_*,util*(-*),wrap,z}.so* lib
|
|
|
-cp /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 lib
|
|
|
-cp -P /usr/lib/x86_64-linux-gnu/lib{crypto,ssl}.so* lib
|
|
|
-for X in console null ptmx random stdin stdout stderr tty urandom zero
|
|
|
-do
|
|
|
- cp -a /dev/$X dev
|
|
|
-done
|
|
|
-
|
|
|
-chmod 0755 $ROOTFS # See #486
|
|
|
-tar --numeric-owner -cf- . | docker import - docker-ut
|
|
|
-docker run -i -u root docker-ut /bin/echo Success.
|
|
|
-rm -rf $ROOTFS
|