http://bugzilla.opensuse.org/show_bug.cgi?id=1143725 Bug ID: 1143725 Summary: qemu-aarch64-binfmt, from qemu-linux-user, not working (no output) Classification: openSUSE Product: openSUSE Tumbleweed Version: Current Hardware: x86-64 OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: Basesystem Assignee: bnc-team-screening@forge.provo.novell.com Reporter: dfaggioli@suse.com QA Contact: qa-bugs@suse.de Found By: --- Blocker: --- Context: I want to run an ARM64 (aarch64) container on an x86 host. This is possible using qemu Linux user emulation and Linux binfmt. It is supposed to work like this: //Fetching an ARM container on x86 (long story) $ skopeo --override-arch arm64 copy docker://opensuse/leap docker-daemon:opensuse-arm64/leap:latest //Install qemu Linux user, and setup binfmt for aarch64 # zypper install qemu-linux-user $ cp /usr/bin/qemu-aarch64-binfmt . # echo -1 > /proc/sys/fs/binfmt_misc/qemu-aarch64 # echo ':qemu-aarch64:M:0:\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-binfmt:POCF'
/proc/sys/fs/binfmt_misc/register
//Build our container $ cat << EOF > Dockerfile FROM opensuse-arm64/leap COPY qemu-aarch64-binfmt /usr/bin/qemu-aarch64-binfmt EOF docker build -t qemu-leap . //Now I should be able to run the ARM container, like this: # docker run -it qemu-leap-aarch64-binfmt /bin/sh But, basically, nothing happens. No output at all, and I'm definitely not inside an ARM container. Actually, it appears the container exited: $ docker ps --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ea2252caf90a qemu-leap "/bin/sh" 4 seconds ago Exited (255) 3 seconds ago relaxed_goodall Now, if I, instead of qemu-aarch64-binfmt, use a qemu-aarch64-static binary copied from a Debian unstable box I have in my home network, i.e., this one: # ./qemu-aarch64-static -version qemu-aarch64 version 3.1.0 (Debian 1:3.1+dfsg-8) Things work! In fact: $ docker run -it --rm qemu-leap uname -a Linux bf12752f6a51 5.1.16-1-default #1 SMP Wed Jul 3 12:37:47 UTC 2019 (2af8a22) aarch64 aarch64 aarch64 GNU/Linux Note the *aarch64*. Of course, we need to change the aarch64 interpreter file too, in /proc/sys/fs/binfmt So, basically, it looks like the procedure is correct, or at least can work. But our qemu-linux-user packages contain binaries that are not adequate for being used for this use case. Things/differences to check: - QEMU version (the debian stolen from Debian, that makes things works is from QEMU 3.1.0, while we ship 4.0.0 - our patch queue - our configuration and compile options -- You are receiving this mail because: You are on the CC list for the bug.