From c74408d7b8e70c67e411bc21a31b98cbf5480a47 Mon Sep 17 00:00:00 2001 From: jpetazzo Date: Thu, 14 Mar 2013 03:16:42 +0000 Subject: [PATCH] Add contrib/ directory, README, and script to create a basic busybox image --- contrib/README | 4 ++++ contrib/mkimage-busybox.sh | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 contrib/README create mode 100755 contrib/mkimage-busybox.sh diff --git a/contrib/README b/contrib/README new file mode 100644 index 0000000000..92b1d94433 --- /dev/null +++ b/contrib/README @@ -0,0 +1,4 @@ +The `contrib` directory contains scripts, images, and other helpful things +which are not part of the core docker distribution. Please note that they +could be out of date, since they do not receive the same attention as the +rest of the repository. diff --git a/contrib/mkimage-busybox.sh b/contrib/mkimage-busybox.sh new file mode 100755 index 0000000000..6c091d2c4a --- /dev/null +++ b/contrib/mkimage-busybox.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Generate a very minimal filesystem based on busybox-static, +# and load it into the local docker under the name "busybox". + +BUSYBOX=$(which busybox) +[ "$BUSYBOX" ] || { + echo "Sorry, I could not locate busybox." + echo "Try 'apt-get install busybox-static'?" + exit 1 +} + +set -e +ROOTFS=/tmp/rootfs-busybox-$$-$RANDOM +mkdir $ROOTFS +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 root:x:0: > etc/group +ln -s lib lib64 +ln -s bin sbin +cp $BUSYBOX bin +for X in $(busybox --list) +do + ln -s busybox bin/$X +done +rm bin/init +ln bin/busybox bin/init +cp /lib/x86_64-linux-gnu/lib{pthread,c,dl,nsl,nss_*}.so.* lib +cp /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 lib +for X in console null ptmx random stdin stdout stderr tty urandom zero +do + cp -a /dev/$X dev +done + +tar -cf- . | docker put busybox +docker run -i -a -u root busybox /bin/echo Success. +