From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Subject: bug#36117: qemu-binfmt with non-native chroot Date: Fri, 07 Jun 2019 15:00:32 +0200 Message-ID: <87blz9ft3j.fsf@gnu.org> References: <87r286zjhu.fsf@yucca> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:57076) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZEUd-0005a6-NU for bug-guix@gnu.org; Fri, 07 Jun 2019 09:01:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZEUZ-0000hT-N0 for bug-guix@gnu.org; Fri, 07 Jun 2019 09:01:15 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:37969) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hZEUQ-0000O7-KN for bug-guix@gnu.org; Fri, 07 Jun 2019 09:01:07 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hZEUQ-0003VQ-Gc for bug-guix@gnu.org; Fri, 07 Jun 2019 09:01:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87r286zjhu.fsf@yucca> (Vagrant Cascadian's message of "Thu, 06 Jun 2019 10:55:25 -0700") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Vagrant Cascadian Cc: 36117@debbugs.gnu.org Hi! Vagrant Cascadian skribis: > On Guix there are no flags set, and the binary used is a dynamically > linked executable: > > $ cat /proc/sys/fs/binfmt_misc/qemu-aarch64 > enabled > interpreter > /gnu/store/sw2rrqmjij73wcy3ajd47ypvmzh12yz6-qemu-3.1.0/bin/qemu-aarch64 > flags: > offset 0 > magic 7f454c460201010000000000000000000200b700 > mask ffffffffffffff00fffffffffffffffffeffffff > > > So there are (at least) two things needed to make this work on Guix: > > * A way to set the flags on qemu-binfmt-service-type. > > * A static build of qemu-user targets > > * A way to set which qemu to use for qemu-binfmt-service-type. > > The *three* things are... > > > With this working correctly foreign-architecture chroots would become > trivial: > > # on an amd64 host: > $ debootstrap --arch=3Darm64 buster buster-chroot http://deb.debian.org= /debian > ... > $ chroot buster-chroot /bin/bash > > > Enabling qemu-binfmt-service-type to operate in this way would obviate > the need for the "guix-support?" qemu-binfmt-configuration option, as > you could simply assemble the build environment without having to > include all of qemu's dependencies in the container. > > It's a pretty magical feature. True! Though adding all the dependencies of QEMU in the chroot the way =E2=80=98guix-support?=E2=80=99 does it turns out to be pretty magical too = ;-), because we can precisely list those dependencies and include nothing but these dependencies in the chroot=E2=80=94something that cannot be done on an FHS system. As an quick workaround, perhaps you could bind-mount all the entries of: guix gc -R $(guix build qemu) in your Debian chroot? (Speaking of which=E2=80=A6 it would be great to have a Debian API in Guix,= where you could write, say: (debian-build #~(system (string-append "/bin/uname > " #$output))) Food for thought=E2=80=A6) Thanks, Ludo=E2=80=99.