From 87dae6079b81abed032ec937d9f24248f92aafd2 Mon Sep 17 00:00:00 2001 From: Justin Cormack Date: Wed, 13 Jan 2016 15:49:38 +0000 Subject: [PATCH] Initial arm support Not yet working, some parts also not yet cross compiled Signed-off-by: Justin Cormack --- Dockerfile.armhf | 10 ++++++++++ Makefile | 6 ++++++ alpine/.gitignore | 3 ++- alpine/Makefile | 20 +++++++++++++++----- alpine/kernel/.gitignore | 1 + alpine/kernel/Makefile | 14 ++++++++++---- alpine/packages/9pudc/Makefile | 2 +- alpine/packages/Makefile | 6 ++++++ alpine/packages/docker/Makefile | 7 ++++--- alpine/packages/mdnstool/Dockerfile | 9 +++++++-- alpine/packages/mdnstool/Makefile | 2 +- 11 files changed, 63 insertions(+), 17 deletions(-) create mode 100644 Dockerfile.armhf diff --git a/Dockerfile.armhf b/Dockerfile.armhf new file mode 100644 index 000000000..3eaa1cecb --- /dev/null +++ b/Dockerfile.armhf @@ -0,0 +1,10 @@ +FROM alpine:3.3 + +COPY alpine/initrd-arm.img . +COPY alpine/kernel/zImage . + +RUN apk update && apk add qemu-system-arm + +RUN gzip -9 initrd-arm.img + +ENTRYPOINT [ "qemu-system-arm", "-cpu", "cortexa15", "-M", "cubieboard", "-no-reboot", "-serial", "stdio", "-kernel", "zImage", "-initrd", "initrd-arm.img.gz", "-m", "256", "-append", "console=ttyAMA0", "-vnc", "none" ] diff --git a/Makefile b/Makefile index 10f88537a..c8b30af2b 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,12 @@ qemu: all docker build -t mobyqemu:build . docker run -it mobyqemu:build +qemu-arm: Dockerfile.armhf + $(MAKE) -C alpine/kernel arm + $(MAKE) -C alpine arm + docker build -f Dockerfile.armhf -t mobyarmqemu:build . + docker run -it mobyarmqemu:build + clean: $(MAKE) -C alpine clean $(MAKE) -C xhyve clean diff --git a/alpine/.gitignore b/alpine/.gitignore index 5470df47a..a61d42fc3 100644 --- a/alpine/.gitignore +++ b/alpine/.gitignore @@ -1 +1,2 @@ -initrd.img +*.img +Dockerfile.armhf diff --git a/alpine/Makefile b/alpine/Makefile index e723dc5ee..70b35f036 100644 --- a/alpine/Makefile +++ b/alpine/Makefile @@ -4,17 +4,27 @@ ETCFILES=etc/issue etc/motd etc/inittab etc/network/interfaces ETCFILES+=etc/hostname- etc/resolv.conf- etc/hosts- ETCFILES+=etc/securetty -kernel/aufs-utils.tar: - $(MAKE) -C kernel aufs-utils.tar - -initrd.img: Dockerfile mkinitrd.sh repositories $(ETCFILES) kernel/aufs-utils.tar +initrd.img: Dockerfile mkinitrd.sh repositories $(ETCFILES) rm -f initrd.img $(MAKE) -C packages + $(MAKE) -C kernel docker build -t mobyinitrd:build . docker run mobyinitrd:build /bin/mkinitrd.sh > $@ +arm: initrd-arm.img + +Dockerfile.armhf: Dockerfile + cat Dockerfile | sed 's@FROM alpine@FROM justincormack/armhf-alpine@' | sed 's/syslinux//' > $@ + +initrd-arm.img: Dockerfile.armhf + rm -f initrd-arm.img + $(MAKE) -C packages arm + $(MAKE) -C kernel arm + docker build -f Dockerfile.armhf -t mobyinitrdarm:build . + docker run mobyinitrdarm:build /bin/mkinitrd.sh > $@ + clean: - rm -f initrd.img + rm -f initrd.img initrd-arm.img Dockerfile.armhf $(MAKE) -C packages clean $(MAKE) -C kernel clean docker images -q mobyinitrd:build | xargs docker rmi -f diff --git a/alpine/kernel/.gitignore b/alpine/kernel/.gitignore index 69529a9eb..9010dc23c 100644 --- a/alpine/kernel/.gitignore +++ b/alpine/kernel/.gitignore @@ -1,2 +1,3 @@ vmlinuz64 +zImage aufs-utils.tar diff --git a/alpine/kernel/Makefile b/alpine/kernel/Makefile index e093cc9e2..2f295d0a8 100644 --- a/alpine/kernel/Makefile +++ b/alpine/kernel/Makefile @@ -1,12 +1,18 @@ -all: vmlinuz64 aufs-utils.tar +all: vmlinuz64 vmlinuz64: kernel_config Dockerfile docker build -t mobykernel:build . docker run mobykernel:build cat /linux/arch/x86_64/boot/bzImage > $@ + docker run mobykernel:build cat /aufs-utils.tar > aufs-utils.tar -aufs-utils.tar: vmlinuz64 - docker run mobykernel:build cat /aufs-utils.tar > $@ +arm: zImage + +zImage: kernel_config.arm Dockerfile + docker build --build-arg ARCH=arm -t mobyarmkernel:build . + docker run mobyarmkernel:build cat /linux/arch/arm/boot/zImage > $@ + docker run mobyarmkernel:build cat /aufs-utils.tar > aufs-utils.tar clean: - rm -f vmlinuz64 aufs-utils.tar + rm -f zImage vmlinuz64 aufs-utils.tar docker images -q mobykernel:build | xargs docker rmi -f + docker images -q mobyarmkernel:build | xargs docker rmi -f diff --git a/alpine/packages/9pudc/Makefile b/alpine/packages/9pudc/Makefile index bfe3dd9e4..6bac8ba1f 100644 --- a/alpine/packages/9pudc/Makefile +++ b/alpine/packages/9pudc/Makefile @@ -1,7 +1,7 @@ all: 9pudc 9pudc: Dockerfile main.go - docker build --build-arg GOOS=$(GOOS) --build-arg GOARCH=$(GOARCH) -t 9pudc:build . + docker build --build-arg GOOS=$(OS) --build-arg GOARCH=$(ARCH) -t 9pudc:build . docker run 9pudc:build cat /go/bin/9pudc > 9pudc chmod 755 9pudc diff --git a/alpine/packages/Makefile b/alpine/packages/Makefile index bd271e67c..47f98571e 100644 --- a/alpine/packages/Makefile +++ b/alpine/packages/Makefile @@ -4,6 +4,12 @@ all: $(MAKE) -C mdnstool $(MAKE) -C docker +arm: + $(MAKE) -C 9pudc ARCH=arm + $(MAKE) -C 9pudfuse ARCH=arm + $(MAKE) -C mdnstool ARCH=arm + $(MAKE) -C docker ARCH=arm + clean: $(MAKE) -C 9pudc clean $(MAKE) -C 9pudfuse clean diff --git a/alpine/packages/docker/Makefile b/alpine/packages/docker/Makefile index 000bef359..8090388a1 100644 --- a/alpine/packages/docker/Makefile +++ b/alpine/packages/docker/Makefile @@ -1,11 +1,12 @@ all: docker DOCKER_VERSION=1.9.1 -ARCH=x86_64 -OS=Linux +ARCH?=x86_64 +OS?=Linux docker: - curl -L -o docker https://get.docker.com/builds/${OS}/${ARCH}/docker-${DOCKER_VERSION} + [ "${ARCH}" != "arm" ] && curl -L -o docker https://get.docker.com/builds/${OS}/${ARCH}/docker-${DOCKER_VERSION} || \ + cp docker-arm docker chmod +x docker clean: diff --git a/alpine/packages/mdnstool/Dockerfile b/alpine/packages/mdnstool/Dockerfile index 183417164..28336d368 100644 --- a/alpine/packages/mdnstool/Dockerfile +++ b/alpine/packages/mdnstool/Dockerfile @@ -5,6 +5,11 @@ RUN apk update && apk upgrade && apk add git RUN mkdir -p /go/src/mdnstool WORKDIR /go/src/mdnstool +ARG GOARCH +ARG GOOS + COPY . /go/src/mdnstool/ -RUN go get -RUN go install + +RUN go get && go install + +RUN [ -f /go/bin/*/mdnstool ] && mv /go/bin/*/mdnstool /go/bin/ || true diff --git a/alpine/packages/mdnstool/Makefile b/alpine/packages/mdnstool/Makefile index 75a680c83..09d4ff18f 100644 --- a/alpine/packages/mdnstool/Makefile +++ b/alpine/packages/mdnstool/Makefile @@ -1,7 +1,7 @@ all: mdnstool mdnstool: Dockerfile mdnstool.go mdnsmon/mdnsmon.go - docker build -t mdnstool:build . + docker build --build-arg GOOS=$(OS) --build-arg GOARCH=$(ARCH) -t mdnstool:build . docker run mdnstool:build cat /go/bin/mdnstool > mdnstool chmod 755 mdnstool