docker build -f dom0/alpine-build -t $BUILDER_LABEL .
fi
-
-# Run build container: build Xen and QEMU
-if ! test -d out
-then
- mkdir out
- docker run -v $OUT_DIR:/root/out -t $BUILDER_LABEL /root/alpine-build-script
-fi
-
-
# Create Dom0
exists=`docker images $DOM0_LABEL | grep $DOM0_LABEL`
if test -z "$exists"
FROM alpine
-ADD out/xen /root/
-ADD out/qemu /root/
+RUN \
+ apk update && \
+ apk add openrc
+
ADD dom0/udhcpc.script /usr/share/udhcpc/default.script
+COPY --from=xen-builder /root/out/ /
RUN \
- apk update && \
-# System
- apk add openrc && \
rc-update add networking sysinit && \
rc-update add loopback sysinit && \
for i in /etc/init.d/*; do rc-update add $i default; done && \
echo "auto lo" > /etc/network/interfaces && \
echo "auto eth0" >> /etc/network/interfaces && \
echo "iface eth0 inet dhcp" >> /etc/network/interfaces && \
-# Install
- cd /root && cp -ar * / && rm -rf * && \
echo "ttyS0" >> /etc/securetty && \
echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab && \
# Xen run deps
# QEMU run deps
apk add glib pixman libcap libattr
+
ADD dom0/sleep /root
ENTRYPOINT ["/bin/sh"]
-FROM alpine
+FROM alpine as xen-builder
COPY dom0/xen-patch /root/
COPY dom0/qemu-patch /root/
COPY dom0/linux-config /root/
COPY dom0/alpine-build-script /root/
+ENV SOURCE_DIR=/root
+ENV OUT_DIR=/root/out
+ENV XEN_VERSION=4.10.0-rc3
+ENV QEMU_VERSION=2.10.1
+ENV LINUX_VERSION=4.14
+
RUN \
apk update && \
# Xen build deps
chmod +x /root/alpine-build-script && \
# Linux build deps
apk add bc
+
+# Download and build Xen
+RUN \
+cd $SOURCE_DIR && \
+curl -fsSLO https://downloads.xenproject.org/release/xen/$XEN_VERSION/xen-$XEN_VERSION.tar.gz && \
+tar xvzf xen-$XEN_VERSION.tar.gz && \
+cd xen-$XEN_VERSION && \
+patch -p1 < $SOURCE_DIR/xen-patch && \
+./configure --prefix=/usr --with-system-qemu=/usr/lib/xen/bin/qemu-system-i386 --disable-stubdom --disable-qemu-traditional --disable-rombios && \
+make -j4 && \
+mkdir -p DESTDIR=$OUT_DIR/xen && \
+make DESTDIR=$OUT_DIR install
+
+# Download and build QEMU
+RUN \
+cd $SOURCE_DIR && \
+curl -fsSLO https://download.qemu.org/qemu-$QEMU_VERSION.tar.xz && \
+tar xvJf qemu-$QEMU_VERSION.tar.xz && \
+cd qemu-$QEMU_VERSION && \
+patch -p1 < $SOURCE_DIR/qemu-patch && \
+export PKG_CONFIG_PATH=$SOURCE_DIR/xen/tools/pkg-config && \
+export INST_DIR=$OUT_DIR/xen && \
+./configure --prefix=/usr --enable-xen --target-list=i386-softmmu \
+ --extra-cflags="-I$INST_DIR/usr/include" \
+ --extra-ldflags="-L$INST_DIR/usr/lib -Wl,-rpath-link=$INST_DIR/usr/lib \
+ -L$INST_DIR/usr/lib64 -Wl,-rpath-link=$INST_DIR/usr/lib64" \
+ --disable-kvm --enable-virtfs --disable-werror && \
+make -j 4 && \
+mkdir -p DESTDIR=$OUT_DIR/qemu && \
+make DESTDIR=$OUT_DIR install
+
+# Download and build Linux
+RUN \
+cd $SOURCE_DIR && \
+curl -fsSLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-$LINUX_VERSION.tar.xz && \
+tar xvJf linux-$LINUX_VERSION.tar.xz && \
+cd linux-$LINUX_VERSION && \
+cp $SOURCE_DIR/linux-config .config && \
+make -j 4 && \
+cp arch/x86/boot/bzImage $OUT_DIR/boot/kernel
+
ENTRYPOINT ["/bin/sh"]
+++ /dev/null
-#!/bin/bash
-
-SOURCE_DIR=/root
-OUT_DIR=/root/out
-XEN_VERSION=4.10.0-rc3
-QEMU_VERSION=2.10.1
-LINUX_VERSION=4.14
-
-cd $SOURCE_DIR
-curl -fsSLO https://downloads.xenproject.org/release/xen/$XEN_VERSION/xen-$XEN_VERSION.tar.gz
-tar xvzf xen-$XEN_VERSION.tar.gz
-cd xen-$XEN_VERSION
-patch -p1 < $SOURCE_DIR/xen-patch
-./configure --prefix=/usr --with-system-qemu=/usr/lib/xen/bin/qemu-system-i386 --disable-stubdom --disable-qemu-traditional --disable-rombios
-make -j4
-mkdir -p DESTDIR=$OUT_DIR/xen
-make DESTDIR=$OUT_DIR/xen install
-
-cd $SOURCE_DIR
-curl -fsSLO https://download.qemu.org/qemu-$QEMU_VERSION.tar.xz
-tar xvJf qemu-$QEMU_VERSION.tar.xz
-cd qemu-$QEMU_VERSION
-patch -p1 < $SOURCE_DIR/qemu-patch
-export PKG_CONFIG_PATH=$SOURCE_DIR/xen/tools/pkg-config
-export INST_DIR=$OUT_DIR/xen
-./configure --prefix=/usr --enable-xen --target-list=i386-softmmu \
- --extra-cflags="-I$INST_DIR/usr/include" \
- --extra-ldflags="-L$INST_DIR/usr/lib -Wl,-rpath-link=$INST_DIR/usr/lib \
- -L$INST_DIR/usr/lib64 -Wl,-rpath-link=$INST_DIR/usr/lib64" \
- --disable-kvm --enable-virtfs --disable-werror
-make -j 4
-mkdir -p DESTDIR=$OUT_DIR/qemu
-make DESTDIR=$OUT_DIR/qemu install
-mkdir -p DESTDIR=$OUT_DIR/xen/usr/lib/xen/bin
-cp i386-softmmu/qemu-system-i386 $OUT_DIR/xen/usr/lib/xen/bin
-
-cd $SOURCE_DIR
-curl -fsSLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-$LINUX_VERSION.tar.xz
-tar xvJf linux-$LINUX_VERSION.tar.xz
-cd linux-$LINUX_VERSION
-cp $SOURCE_DIR/linux-config .config
-make -j 4
-cp arch/x86/boot/bzImage $OUT_DIR/xen/boot/kernel