qemu: allow to build host variant statically
authorJérôme Pouiller <jezz@sysmic.org>
Wed, 9 Nov 2016 10:03:05 +0000 (11:03 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 1 Apr 2017 14:08:38 +0000 (16:08 +0200)
Compiling Qemu statically allows to use it to chroot into target/. It is a
nice feature, so add an option for it.

Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
[Thomas: slightly tweak Config.in help text.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/qemu/Config.in.host
package/qemu/qemu.mk

index b3eb5906cc8e02b01949ab5f4cb496d50edbf83e..fbe27bddd25de59d1aff5e7e71b5e8f664f039df 100644 (file)
@@ -17,6 +17,34 @@ config BR2_PACKAGE_HOST_QEMU
 
 if BR2_PACKAGE_HOST_QEMU
 
+config BR2_PACKAGE_HOST_QEMU_STATIC
+       bool "Build statically"
+       help
+         Build qemu as a statically linked executable. Use this
+         option if you want to 'chroot' in your target directory. The
+         following steps detail how to achieve this with an ARM
+         target:
+
+           1. Copy the qemu binary in your target directory:
+
+              cp host/usr/bin/qemu-arm target/usr/bin
+
+           2. Make sure binfmt_misc is mounted on /proc/sys/fs/binfmt_misc:
+
+              mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
+
+           3. Register /usr/bin/qemu-arm is interpreter for arm
+              binaries. See linux/Documentation/binfmt_misc.txt for
+              more information:
+
+              MAGIC='\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00'
+              MASK='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
+              echo ":qemu-arm:M:0:$MAGIC:$MASK:/usr/bin/qemu-arm:OC" > /proc/sys/fs/binfmt_misc/register
+
+           4. Chroot into your target:
+
+              chroot target /bin/sh
+
 comment "Emulators selection"
 
 config BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE
index 2b6aafbae8bff7d527bf697de16c92a71b909367..4eea98263056ddc8dc0ea6e0c8f3a1803f5d888a 100644 (file)
@@ -120,6 +120,10 @@ HOST_QEMU_OPTS += --enable-vde
 HOST_QEMU_DEPENDENCIES += host-vde2
 endif
 
+ifeq ($(BR2_PACKAGE_HOST_QEMU_STATIC),y)
+HOST_QEMU_OPTS += --static
+endif
+
 # Override CPP, as it expects to be able to call it like it'd
 # call the compiler.
 define HOST_QEMU_CONFIGURE_CMDS