From 66ba586cacd20b7d7db79c53604e7814038102b5 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 22 Jul 2016 12:25:54 +0200 Subject: [PATCH] Move built kernel to arch specific subdir We want be able to build kernels for different archs without that they clash with each other so we but the generated files into an $arch subdir. Signed-off-by: Natanael Copa --- Dockerfile.qemu | 2 +- Dockerfile.qemu.armhf | 2 +- Dockerfile.test | 2 +- alpine/Dockerfile | 10 +++-- alpine/Dockerfile.bios | 4 +- alpine/Dockerfile.efi | 4 +- alpine/kernel/.gitignore | 11 +----- alpine/kernel/Dockerfile | 2 +- alpine/kernel/Makefile | 38 ++++++++++--------- .../{kernel_config => kernel_config.x86_64} | 0 scripts/moby.sh | 2 +- 11 files changed, 39 insertions(+), 38 deletions(-) rename alpine/kernel/{kernel_config => kernel_config.x86_64} (100%) 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