diff --git a/Dockerfile.qemu b/Dockerfile.qemu index 452a1bed5..ee7c36907 100644 --- a/Dockerfile.qemu +++ b/Dockerfile.qemu @@ -1,6 +1,6 @@ FROM justincormack/alpine-qemu COPY alpine/initrd.img.gz . -COPY alpine/kernel/vmlinuz64 . +COPY alpine/kernel/x86_64/vmlinuz64 . ENTRYPOINT [ "qemu-system-x86_64", "-serial", "stdio", "-kernel", "vmlinuz64", "-initrd", "initrd.img.gz", "-m", "2048", "-append", "earlyprintk=serial console=ttyS0 noapic", "-vnc", "none" ] diff --git a/Dockerfile.qemu.armhf b/Dockerfile.qemu.armhf index 17f857314..25ef995e1 100644 --- a/Dockerfile.qemu.armhf +++ b/Dockerfile.qemu.armhf @@ -1,7 +1,7 @@ FROM justincormack/alpine-qemu COPY alpine/initrd-arm.img . -COPY alpine/kernel/zImage . +COPY alpine/kernel/arm/zImage . COPY alpine/kernel/dtb dtb RUN gzip -9 initrd-arm.img diff --git a/Dockerfile.test b/Dockerfile.test index 431b204af..1619bd430 100644 --- a/Dockerfile.test +++ b/Dockerfile.test @@ -1,6 +1,6 @@ FROM justincormack/alpine-qemu COPY alpine/initrd.img.gz . -COPY alpine/kernel/vmlinuz64 . +COPY alpine/kernel/x86_64/vmlinuz64 . ENTRYPOINT [ "qemu-system-x86_64", "-serial", "stdio", "-kernel", "vmlinuz64", "-initrd", "initrd.img.gz", "-m", "1024", "-append", "earlyprintk=serial console=ttyS0 noapic mobyplatform=test", "-vnc", "none" ] diff --git a/alpine/Dockerfile b/alpine/Dockerfile index 51f330afe..54b194c7b 100644 --- a/alpine/Dockerfile +++ b/alpine/Dockerfile @@ -1,5 +1,7 @@ FROM alpine:3.4 +ENV ARCH=x86_64 + RUN \ addgroup -g 50 docker && \ adduser -G docker -u 1001 -s /bin/sh -D -g "Docker" docker && \ @@ -30,11 +32,11 @@ RUN \ COPY etc /etc/ RUN mkdir -p /etc/docker -ADD kernel/aufs-utils.tar / +ADD kernel/$ARCH/aufs-utils.tar / COPY mkinitrd.sh /bin/ -COPY kernel/kernel-source-info /etc/ -ADD kernel/kernel-patches.tar /etc/kernel-patches -ADD kernel/kernel-modules.tar / +COPY kernel/$ARCH/kernel-source-info /etc/ +ADD kernel/$ARCH/kernel-patches.tar /etc/kernel-patches +ADD kernel/$ARCH/kernel-modules.tar / COPY packages/proxy/slirp-proxy /usr/bin/ COPY packages/proxy/slirp-proxy /sbin/proxy-vsockd diff --git a/alpine/Dockerfile.bios b/alpine/Dockerfile.bios index 07daee20c..583536f89 100644 --- a/alpine/Dockerfile.bios +++ b/alpine/Dockerfile.bios @@ -1,6 +1,8 @@ # Create a legacy BIOS bootable ISO FROM ubuntu:15.10 +ENV ARCH=x86_64 + RUN apt-get update && apt-get -y upgrade && apt-get -y install \ genisoimage \ xorriso \ @@ -13,7 +15,7 @@ RUN mkdir -p /tmp/iso/isolinux && \ cp usr/lib/syslinux/modules/bios/ldlinux.c32 /tmp/iso/isolinux COPY initrd.img /tmp/iso -COPY kernel/vmlinuz64 /tmp/iso +COPY kernel/$ARCH/vmlinuz64 /tmp/iso COPY isolinux.cfg /tmp/iso/isolinux RUN cd /tmp/iso && \ diff --git a/alpine/Dockerfile.efi b/alpine/Dockerfile.efi index d61003c85..b455880d6 100644 --- a/alpine/Dockerfile.efi +++ b/alpine/Dockerfile.efi @@ -1,12 +1,14 @@ # Create a EFI Bootable ISO FROM alpine:3.4 +ENV ARCH=x86_64 + RUN apk add --no-cache binutils mtools xorriso gummiboot RUN mkdir -p /tmp/efi COPY initrd.img.gz /tmp/efi -COPY kernel/vmlinuz64 /tmp/efi +COPY kernel/$ARCH/vmlinuz64 /tmp/efi # Create a EFI boot file with kernel and initrd. From: # https://github.com/haraldh/mkrescue-uefi/blob/master/mkrescue-uefi.sh diff --git a/alpine/kernel/.gitignore b/alpine/kernel/.gitignore index 595fb72a7..a4129c97c 100644 --- a/alpine/kernel/.gitignore +++ b/alpine/kernel/.gitignore @@ -1,9 +1,2 @@ -vmlinuz64 -vmlinux -zImage -aufs-utils.tar -kernel-patches.tar -kernel-modules.tar -kernel-source-info -mobykernel-build -mobyarmkernel-build +x86_64 +arm diff --git a/alpine/kernel/Dockerfile b/alpine/kernel/Dockerfile index e4bdddf20..ab39deab3 100644 --- a/alpine/kernel/Dockerfile +++ b/alpine/kernel/Dockerfile @@ -57,7 +57,7 @@ RUN git clone -b "$AUFS_BRANCH" "$AUFS_REPO" /aufs && \ patch -p1 < "$patch"; \ done -COPY kernel_config /linux/arch/x86/configs/x86_64_defconfig +COPY kernel_config.x86_64 /linux/arch/x86/configs/x86_64_defconfig COPY kernel_config.arm /linux/arch/arm/configs/versatile_defconfig # Apply local patches diff --git a/alpine/kernel/Makefile b/alpine/kernel/Makefile index 625f868b9..afb79d958 100644 --- a/alpine/kernel/Makefile +++ b/alpine/kernel/Makefile @@ -1,28 +1,30 @@ -all: vmlinuz64 +ARCH ?= x86_64 -mobykernel-build: Dockerfile kernel_config - docker build -t mobykernel:build . +all: $(ARCH)/vmlinuz64 + +$(ARCH)/mobykernel-build: Dockerfile kernel_config.$(ARCH) + mkdir -p $(ARCH) && \ + docker build --build-arg ARCH=$(ARCH) -t mobykernel-$(ARCH):build . touch $@ -mobyarmkernel-build: Dockerfile kernel_config.arm - docker build --build-arg ARCH=arm -t mobyarmkernel:build . - touch $@ +$(ARCH)/aufs-utils.tar $(ARCH)/kernel-source-info $(ARCH)/kernel-patches.tar $(ARCH)/kernel-modules.tar: $(ARCH)/mobykernel-build + docker run --rm mobykernel-$(ARCH):build cat /$(notdir $@) > $@ || ! rm $@ -aufs-utils.tar kernel-source-info kernel-patches.tar kernel-modules.tar: mobykernel-build - docker run --rm mobykernel:build cat /$@ > $@ || ! rm $@ +$(ARCH)/bzImage $(ARCH)/zImage: $(ARCH)/aufs-utils.tar $(ARCH)/kernel-source-info $(ARCH)/kernel-patches.tar $(ARCH)/kernel-modules.tar $(ARCH)/mobykernel-build + docker run --rm mobykernel-$(ARCH):build cat /linux/arch/$(ARCH)/boot/$(notdir $@) > $@ || ! rm $@ -vmlinuz64: aufs-utils.tar kernel-source-info kernel-patches.tar kernel-modules.tar mobykernel-build - docker run --rm mobykernel:build cat /linux/arch/x86_64/boot/bzImage > $@ || ! rm $@ +$(ARCH)/vmlinux: $(ARCH)/bzImage + docker run --rm mobykernel-$(ARCH):build cat /linux/vmlinux > $@ || ! rm $@ -vmlinux: vmlinuz64 - docker run --rm mobykernel:build cat /linux/vmlinux > $@ || ! rm $@ +$(ARCH)/vmlinuz64: $(ARCH)/bzImage + cp $< $@ -arm: zImage +arm: arm/zImage -zImage: mobyarmkernel-build aufs-utils.tar kernel-source-info kernel-patches.tar kernel-modules.tar - docker run --rm mobyarmkernel:build cat /linux/arch/arm/boot/zImage > $@ +clean-arch: + rm -rf $(ARCH) + docker images -q mobykernel-$(ARCH):build | xargs docker rmi -f || true clean: - rm -f zImage vmlinuz64 aufs-utils.tar kernel-source-info kernel-patches.tar mobykernel-build mobyarmkernel-build - docker images -q mobykernel:build | xargs docker rmi -f || true - docker images -q mobyarmkernel:build | xargs docker rmi -f || true + $(MAKE) clean-arch ARCH=arm + $(MAKE) clean-arch ARCH=x86_64 diff --git a/alpine/kernel/kernel_config b/alpine/kernel/kernel_config.x86_64 similarity index 100% rename from alpine/kernel/kernel_config rename to alpine/kernel/kernel_config.x86_64 diff --git a/scripts/moby.sh b/scripts/moby.sh index 05773bf34..f2196ff18 100755 --- a/scripts/moby.sh +++ b/scripts/moby.sh @@ -10,7 +10,7 @@ else cp /Applications/Docker.app/Contents/Resources/moby/initrd.img /Applications/Docker.app/Contents/Resources/moby/initrd.img- cp /Applications/Docker.app/Contents/Resources/moby/vmlinuz64 /Applications/Docker.app/Contents/Resources/moby/vmlinuz64- cp alpine/initrd.img /Applications/Docker.app/Contents/Resources/moby/initrd.img - cp alpine/kernel/vmlinuz64 /Applications/Docker.app/Contents/Resources/moby/vmlinuz64 + cp alpine/kernel/x86_64/vmlinuz64 /Applications/Docker.app/Contents/Resources/moby/vmlinuz64 fi killall com.docker.driver.amd64-linux