diff --git a/examples/docker-for-mac.yml b/examples/docker-for-mac.yml index 36982520f..503085fb4 100644 --- a/examples/docker-for-mac.yml +++ b/examples/docker-for-mac.yml @@ -17,7 +17,7 @@ onboot: - name: sysfs image: linuxkit/sysfs:v0.6 - name: binfmt - image: linuxkit/binfmt:v0.6 + image: linuxkit/binfmt:e2d222038867ebd13b0b723c8351be559267050b # Format and mount the disk image in /var/lib/docker - name: format image: linuxkit/format:v0.6 diff --git a/pkg/binfmt/Dockerfile b/pkg/binfmt/Dockerfile index ee00a5354..cafe936a9 100644 --- a/pkg/binfmt/Dockerfile +++ b/pkg/binfmt/Dockerfile @@ -3,7 +3,8 @@ FROM debian@sha256:de3eac83cd481c04c5d6c7344cd7327625a1d8b2540e82a8231b5675cef0a RUN apt-get update && apt-get install -y qemu-user-static && \ mv /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64 && \ mv /usr/bin/qemu-arm-static /usr/bin/qemu-arm && \ - mv /usr/bin/qemu-ppc64le-static /usr/bin/qemu-ppc64le + mv /usr/bin/qemu-ppc64le-static /usr/bin/qemu-ppc64le && \ + mv /usr/bin/qemu-s390x-static /usr/bin/qemu-s390x FROM linuxkit/alpine:3683c9a66cd4da40bd7d6c7da599b2dcd738b559 AS mirror diff --git a/pkg/binfmt/etc/binfmt.d/00_linuxkit.conf b/pkg/binfmt/etc/binfmt.d/00_linuxkit.conf index f0187ab91..a87e9ff00 100644 --- a/pkg/binfmt/etc/binfmt.d/00_linuxkit.conf +++ b/pkg/binfmt/etc/binfmt.d/00_linuxkit.conf @@ -1,3 +1,8 @@ +# Register other architecture binary formats https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.html +# Architecture masks and magics can be found here +# https://github.com/qemu/qemu/blob/master/scripts/qemu-binfmt-conf.sh +# Replace ELF with `\x45\x4c\x46` :qemu-aarch64:M:0:\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-aarch64:CF :qemu-arm:M:0:\x7f\x45\x4c\x46\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:CF :qemu-ppc64le:M:0:\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15\x00:\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\x00:/usr/bin/qemu-ppc64le:CF +:qemu-s390x:M:0:\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-s390x:CF diff --git a/pkg/binfmt/main.go b/pkg/binfmt/main.go index 4df469a2d..97046edb9 100644 --- a/pkg/binfmt/main.go +++ b/pkg/binfmt/main.go @@ -89,6 +89,10 @@ func main() { if len(line) == 0 { continue } + // ignore comments + if line[0] == '#' { + continue + } err = binfmt(line) if err != nil { log.Fatal(err) diff --git a/test/cases/040_packages/002_binfmt/test.yml b/test/cases/040_packages/002_binfmt/test.yml index 896f34a96..ef63f9105 100644 --- a/test/cases/040_packages/002_binfmt/test.yml +++ b/test/cases/040_packages/002_binfmt/test.yml @@ -6,7 +6,7 @@ init: - linuxkit/runc:b87c49e73eb14ba73d23eabf75423e987a043209 onboot: - name: binfmt - image: linuxkit/binfmt:v0.6 + image: linuxkit/binfmt:e2d222038867ebd13b0b723c8351be559267050b - name: test image: alpine:3.8 binds: