From c70b432b6facd5a072f518444acc2645eeb967b5 Mon Sep 17 00:00:00 2001 From: Justin Cormack Date: Thu, 31 Dec 2015 00:25:25 +0000 Subject: [PATCH] add experimental package for qemu-user emulation for arm Signed-off-by: Justin Cormack --- alpine/Dockerfile | 3 +++ alpine/packages/qemu-user-static/.gitignore | 1 + alpine/packages/qemu-user-static/Dockerfile | 3 +++ alpine/packages/qemu-user-static/Makefile | 10 ++++++++++ alpine/packages/qemu-user-static/binfmt-arm | 9 +++++++++ .../qemu-user-static/etc/init.d/qemu-user-static | 15 +++++++++++++++ 6 files changed, 41 insertions(+) create mode 100644 alpine/packages/qemu-user-static/.gitignore create mode 100644 alpine/packages/qemu-user-static/Dockerfile create mode 100644 alpine/packages/qemu-user-static/Makefile create mode 100644 alpine/packages/qemu-user-static/binfmt-arm create mode 100755 alpine/packages/qemu-user-static/etc/init.d/qemu-user-static diff --git a/alpine/Dockerfile b/alpine/Dockerfile index 0588c009d..230045eee 100644 --- a/alpine/Dockerfile +++ b/alpine/Dockerfile @@ -33,6 +33,8 @@ COPY packages/diagnostics/etc /etc/ COPY packages/automount/etc /etc/ COPY packages/9pinit/etc /etc/ COPY packages/ntp15m/etc /etc/ +COPY packages/qemu-user-static/qemu-* /usr/bin/ +COPY packages/qemu-user-static/etc /etc/ RUN \ rc-update add swap boot && \ @@ -63,6 +65,7 @@ RUN \ rc-update add mdnstool default && \ rc-update add automount boot && \ rc-update add diagnostics default && \ + rc-update add qemu-user-static sysinit && \ ln -s /bin/busybox /init CMD ["/bin/sh"] diff --git a/alpine/packages/qemu-user-static/.gitignore b/alpine/packages/qemu-user-static/.gitignore new file mode 100644 index 000000000..4e5fcd368 --- /dev/null +++ b/alpine/packages/qemu-user-static/.gitignore @@ -0,0 +1 @@ +qemu-arm-static diff --git a/alpine/packages/qemu-user-static/Dockerfile b/alpine/packages/qemu-user-static/Dockerfile new file mode 100644 index 000000000..1c5345415 --- /dev/null +++ b/alpine/packages/qemu-user-static/Dockerfile @@ -0,0 +1,3 @@ +FROM debian:jessie + +RUN apt-get update && apt-get -y install qemu-user-static diff --git a/alpine/packages/qemu-user-static/Makefile b/alpine/packages/qemu-user-static/Makefile new file mode 100644 index 000000000..d03803c29 --- /dev/null +++ b/alpine/packages/qemu-user-static/Makefile @@ -0,0 +1,10 @@ +all: qemu-arm-static + +qemu-arm-static : + docker build -t qemu-user-static:build . + docker run qemu-user-static:build cat /usr/bin/qemu-arm-static > qemu-arm-static + chmod 755 qemu-arm-static + docker run qemu-user-static:build cat /var/lib/binfmts/qemu-arm > binfmt-arm + +clean: + rm -f qemu-arm-static binfmt-arm diff --git a/alpine/packages/qemu-user-static/binfmt-arm b/alpine/packages/qemu-user-static/binfmt-arm new file mode 100644 index 000000000..66b3c65ba --- /dev/null +++ b/alpine/packages/qemu-user-static/binfmt-arm @@ -0,0 +1,9 @@ +qemu-user-static +magic +0 +\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00 +\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff +/usr/bin/qemu-arm-static + +yes + diff --git a/alpine/packages/qemu-user-static/etc/init.d/qemu-user-static b/alpine/packages/qemu-user-static/etc/init.d/qemu-user-static new file mode 100755 index 000000000..b3d00fd86 --- /dev/null +++ b/alpine/packages/qemu-user-static/etc/init.d/qemu-user-static @@ -0,0 +1,15 @@ +#!/sbin/openrc-run + +description="Configure binfmt misc emulation" + +start() +{ + ebegin "Configuring binfmt misc" + mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc + echo ":qemu-arm:M:0:\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:OC" > /proc/sys/fs/binfmt_misc/register +} + +stop() +{ + umount /proc/sys/fs/binfmt_misc +}