mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env bash
 | |
| # Generate a minimal filesystem for CRUX/Linux and load it into the local
 | |
| # docker as "cruxlinux"
 | |
| # requires root and the crux iso (http://crux.nu)
 | |
| 
 | |
| set -e
 | |
| 
 | |
| die () {
 | |
|     echo >&2 "$@"
 | |
|     exit 1
 | |
| }
 | |
| 
 | |
| [ "$#" -eq 1 ] || die "1 argument(s) required, $# provided. Usage: ./mkimage-crux.sh /path/to/iso"
 | |
| 
 | |
| ISO=${1}
 | |
| 
 | |
| ROOTFS=$(mktemp -d /tmp/rootfs-crux-XXXXXXXXXX)
 | |
| CRUX=$(mktemp -d /tmp/crux-XXXXXXXXXX)
 | |
| TMP=$(mktemp -d /tmp/XXXXXXXXXX)
 | |
| 
 | |
| VERSION=$(basename --suffix=.iso $ISO | sed 's/[^0-9.]*\([0-9.]*\).*/\1/')
 | |
| 
 | |
| # Mount the ISO
 | |
| mount -o ro,loop $ISO $CRUX
 | |
| 
 | |
| # Extract pkgutils
 | |
| tar -C $TMP -xf $CRUX/tools/pkgutils#*.pkg.tar.gz
 | |
| 
 | |
| # Put pkgadd in the $PATH
 | |
| export PATH="$TMP/usr/bin:$PATH"
 | |
| 
 | |
| # Install core packages
 | |
| mkdir -p $ROOTFS/var/lib/pkg
 | |
| touch $ROOTFS/var/lib/pkg/db
 | |
| for pkg in $CRUX/crux/core/*; do
 | |
|     pkgadd -r $ROOTFS $pkg
 | |
| done
 | |
| 
 | |
| # Remove agetty and inittab config
 | |
| if (grep agetty ${ROOTFS}/etc/inittab 2>&1 > /dev/null); then
 | |
|     echo "Removing agetty from /etc/inittab ..."
 | |
|     chroot ${ROOTFS} sed -i -e "/agetty/d" /etc/inittab
 | |
|     chroot ${ROOTFS} sed -i -e "/shutdown/d" /etc/inittab
 | |
|     chroot ${ROOTFS} sed -i -e "/^$/N;/^\n$/d" /etc/inittab
 | |
| fi
 | |
| 
 | |
| # Remove kernel source
 | |
| rm -rf $ROOTFS/usr/src/*
 | |
| 
 | |
| # udev doesn't work in containers, rebuild /dev
 | |
| DEV=$ROOTFS/dev
 | |
| rm -rf $DEV
 | |
| mkdir -p $DEV
 | |
| mknod -m 666 $DEV/null c 1 3
 | |
| mknod -m 666 $DEV/zero c 1 5
 | |
| mknod -m 666 $DEV/random c 1 8
 | |
| mknod -m 666 $DEV/urandom c 1 9
 | |
| mkdir -m 755 $DEV/pts
 | |
| mkdir -m 1777 $DEV/shm
 | |
| mknod -m 666 $DEV/tty c 5 0
 | |
| mknod -m 600 $DEV/console c 5 1
 | |
| mknod -m 666 $DEV/tty0 c 4 0
 | |
| mknod -m 666 $DEV/full c 1 7
 | |
| mknod -m 600 $DEV/initctl p
 | |
| mknod -m 666 $DEV/ptmx c 5 2
 | |
| 
 | |
| IMAGE_ID=$(tar --numeric-owner -C $ROOTFS -c . | docker import - crux:$VERSION)
 | |
| docker tag $IMAGE_ID crux:latest
 | |
| docker run -i -t crux echo Success.
 | |
| 
 | |
| # Cleanup
 | |
| umount $CRUX
 | |
| rm -rf $ROOTFS
 | |
| rm -rf $CRUX
 | |
| rm -rf $TMP
 |