mkimage-busybox.sh 1005 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env bash
  2. # Generate a very minimal filesystem based on busybox-static,
  3. # and load it into the local docker under the name "busybox".
  4. BUSYBOX=$(which busybox)
  5. [ "$BUSYBOX" ] || {
  6. echo "Sorry, I could not locate busybox."
  7. echo "Try 'apt-get install busybox-static'?"
  8. exit 1
  9. }
  10. set -e
  11. ROOTFS=/tmp/rootfs-busybox-$$-$RANDOM
  12. mkdir $ROOTFS
  13. cd $ROOTFS
  14. mkdir bin etc dev dev/pts lib proc sys tmp
  15. touch etc/resolv.conf
  16. cp /etc/nsswitch.conf etc/nsswitch.conf
  17. echo root:x:0:0:root:/:/bin/sh > etc/passwd
  18. echo root:x:0: > etc/group
  19. ln -s lib lib64
  20. ln -s bin sbin
  21. cp $BUSYBOX bin
  22. for X in $(busybox --list)
  23. do
  24. ln -s busybox bin/$X
  25. done
  26. rm bin/init
  27. ln bin/busybox bin/init
  28. cp /lib/x86_64-linux-gnu/lib{pthread,c,dl,nsl,nss_*}.so.* lib
  29. cp /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 lib
  30. for X in console null ptmx random stdin stdout stderr tty urandom zero
  31. do
  32. cp -a /dev/$X dev
  33. done
  34. tar --numeric-owner -cf- . | docker import - busybox
  35. docker run -i -u root busybox /bin/echo Success.