QEMU on the target (branch yem/target-qemu)
cover QEMU on the target (branch yem/target-qemu)
Hello All!
After too long a time in limbo, here is a respin of my series about running QEMU on the target.
Having QEMU on the target can be usefull in more cases than one might expect Buildroot to catter for:
- deploy a brand new system on a new board, but with a legacy application that only runs on DOS, Windows. After some feedback, this happens more often than we would think; legacy DOS applications are legions, and as is often the case for those antiquated type of software, source code and specifications are long lost, so it is not possible to re-build the application.
- for the same reason, a new design that uses a different architecture, but still requries such a legacy (obviously Linux) application to still run. qemu-user can come handy in those cases.
- in some systems, it is better to completely isolate untrusted parts of an application in a VM, even at the cost of performance, as a VM provides almost-complete isolation.
- coupled with libvirt (to come in a future patchset), we can build a very lightweight system to host VMs.
Currently, we make QEMU only available on x86 (32-bit or 64-bit), as that's what it was tested with. QEMU is also supposed to run on a PPC, that can be added later on by an interested party.
Regards,
Yann E. MORIN.
The following changes since commit e17afee1b9d6e6503aa68211341efad437ef181d:
slang: disable termcap (2014-10-07 22:36:02 +0200)
are available in the git repository at:
git://gitorious.org/buildroot/buildroot.git yem/target-qemu
for you to fetch changes up to ae4e379071183585d080fdedcf006e19b7e58a43:
package/qemu: add support for FDT (2014-10-07 22:53:52 +0200)
----------------------------------------------------------------
Yann E. MORIN (30):
package/qemu: do not use autotools for qemu package/qemu: bump version
package/qemu: build for the target (i386 or x86_64 only) package/qemu: add basic target selection package/qemu: add fine-grained target selection package/qemu: add SDL frontends
package/qemu: add option to enable/disable the VNC frontend package/qemu: add VNC jpeg and png compression package/qemu: add VNC TLS-encryption package/qemu: add option to not install blobs package/qemu: add option to remove unwanted keymaps package/qemu: add uuid support
package/qemu: add support for capabilities package/qemu: add attr/xattr option
package/qemu: add support for virtfs package/qemu: add support for cURL
package/qemu: enable use of the curses frontend package/qemu: add BlueZ connectivity package/qemu: add AIO support
package/qemu: add support for VDE switches package/qemu: add iSCSI support
package/qemu: add support for USB redirection package/qemu: add support for Spice
package/qemu: enable sound
package/qemu: add support for libseccomp package/qemu: option to build the docs package/qemu: add option to install tools on the target package/qemu: move sub-options into a sub-menu package/qemu: enable a static build
package/qemu: add support for FDT
package/Config.in | 1 + package/qemu/Config.in | 316 +++++++++++++++++++++++++++++++ package/qemu/qemu-0000-static-curl.patch | 69 +++++++ package/qemu/qemu-0001-static-sdl.patch | 53 ++++++ package/qemu/qemu.mk | 311 +++++++++++++++++++++++++++++- 5 files changed, 742 insertions(+), 8 deletions(-) create mode 100644 package/qemu/Config.in create mode 100644 package/qemu/qemu-0000-static-curl.patch create mode 100644 package/qemu/qemu-0001-static-sdl.patch
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 1/30 package/qemu: do not use autotools for qemu
Although QEMU has a ./configure script, it is not an autotools-package, so switch to providing build and install commands, and to using generic-package.
--- package/qemu/qemu.mk | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
package/qemu/qemu.mk +11 -7
@@ -59,22 +59,26 @@ ifeq ($(HOST_QEMU_ARCH),powerpc) endif HOST_QEMU_TARGETS = $(HOST_QEMU_ARCH)-linux-user -# Note: although QEMU has a ./configure script, it is not a real autotools -# package, and ./configure chokes on options such as --host or --target. -# So, provide out own _CONFIGURE_CMDS to override the defaults. define HOST_QEMU_CONFIGURE_CMDS - (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure \ + cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure \ --target-list="$(HOST_QEMU_TARGETS)" \ --prefix="$(HOST_DIR)/usr" \ --interp-prefix=$(STAGING_DIR) \ --cc="$(HOSTCC)" \ --host-cc="$(HOSTCC)" \ --extra-cflags="$(HOST_CFLAGS)" \ - --extra-ldflags="$(HOST_LDFLAGS)" \ - ) + --extra-ldflags="$(HOST_LDFLAGS)" endef -$(eval $(host-autotools-package)) +define HOST_QEMU_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_QEMU_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) # variable used by other packages QEMU_USER = $(HOST_DIR)/usr/bin/qemu-$(HOST_QEMU_ARCH)
Signature · 1 line
1.9.1
PATCH 1/30 package/qemu: do not use autotools for qemu
Quoted 7 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Although QEMU has a ./configure script, it is not an autotools-package, so switch to providing build and install commands, and to using generic-package.
Signed-off-by "Yann E. MORIN" <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 2/30 package/qemu: bump version
In reply to Yann E. MORIN--- package/qemu/qemu.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/qemu/qemu.mk +1 -1
@@ -4,7 +4,7 @@ # ################################################################################ -QEMU_VERSION = 2.1.0 +QEMU_VERSION = 2.1.2 QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.bz2 QEMU_SITE = http://wiki.qemu.org/download QEMU_LICENSE = GPLv2 LGPLv2.1 MIT BSD-3c BSD-2c Others/BSD-1c
Signature · 1 line
1.9.1
PATCH 2/30 package/qemu: bump version
Quoted 3 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Signed-off-by "Yann E. MORIN" <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 3/30 package/qemu: build for the target (i386 or x86_64 only)
In reply to Yann E. MORINUntested for other architectures, so only enabled for known-working ones.
We explicitly disable all features that depends on other packages, for now. Such features will be added one by one in the next patches. Features that do not rely on external packages are explicitly enabled to catch the dependencies on toolchain features early.
--- package/Config.in | 1 + package/qemu/Config.in | 26 ++++++++++++++++++ package/qemu/qemu.mk | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 package/qemu/Config.in
package/Config.in +1 -0
@@ -926,6 +926,7 @@ menu "Miscellaneous" source "package/haveged/Config.in" source "package/mcrypt/Config.in" source "package/mobile-broadband-provider-info/Config.in" + source "package/qemu/Config.in" source "package/shared-mime-info/Config.in" source "package/snowball-init/Config.in" source "package/sound-theme-borealis/Config.in"
package/qemu/Config.in new file +26 -0
@@ -0,0 +1,26 @@ +comment "QEMU requires a toolchain with threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_QEMU + bool "QEMU" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_ZLIB + help + QEMU is a generic and open source machine emulator and virtualizer. + + When used as a machine emulator, QEMU can run OSes and programs made + for one machine (e.g. an ARM board) on a different machine (e.g. + your own PC). By using dynamic translation, it achieves very good + performance. + + When used as a virtualizer, QEMU achieves near native performances + by executing the guest code directly on the host CPU. QEMU supports + virtualization when executing under the Xen hypervisor or using the + KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, + server and embedded PowerPC, and S390 guests. + + http://qemu.org/
package/qemu/qemu.mk +72 -0
75 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH 3/30 package/qemu: build for the target (i386 or x86_64 only)
Quoted 36 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Untested for other architectures, so only enabled for known-working ones. We explicitly disable all features that depends on other packages, for now. Such features will be added one by one in the next patches. Features that do not rely on external packages are explicitly enabled to catch the dependencies on toolchain features early.
Signed-off-by "Yann E. MORIN" <[email protected]>Cc Thomas Petazzoni <[email protected]>--- package/Config.in | 1 + package/qemu/Config.in | 26 ++++++++++++++++++ package/qemu/qemu.mk | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 package/qemu/Config.inpackage/Config.in +1
-0@@ -926,6 +926,7 @@ menu "Miscellaneous" source "package/haveged/Config.in" source "package/mcrypt/Config.in" source "package/mobile-broadband-provider-info/Config.in" + source "package/qemu/Config.in" source "package/shared-mime-info/Config.in" source "package/snowball-init/Config.in" source "package/sound-theme-borealis/Config.in"package/qemu/Config.in new file +1
-0@@ -0,0 +1,26 @@ +comment "QEMU requires a toolchain with threads"
package/qemu/Config.in line 11
Quoted 10 lines
package/qemu/Config.in new file +10
-0+ depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_QEMU + bool "QEMU" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_ZLIB
You forgot to propagate the toolchain dependencies of the libraries - Libglib2 needs wchar and mmu (and qemu seems to contain plenty of references to fork() as well).
Committed with that fixed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 4/30 package/qemu: add basic target selection
In reply to Yann E. MORIN--- package/qemu/Config.in | 18 ++++++++++++++++++ package/qemu/qemu.mk | 14 ++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-)
package/qemu/Config.in +18 -0
@@ -24,3 +24,21 @@ config BR2_PACKAGE_QEMU server and embedded PowerPC, and S390 guests. http://qemu.org/ + +if BR2_PACKAGE_QEMU + +comment "Emulators selection" + +config BR2_PACKAGE_QEMU_SYSTEM + bool "Enable all systems emulation" + help + Say 'y' to build all system emulators/virtualisers that QEMU supports. + +config BR2_PACKAGE_QEMU_LINUX_USER + bool "Enable all Linux user-land emulation" + help + Say 'y' to build all Linux user-land emulators that QEMU supports. + +# Note: bsd-user can not be build on Linux + +endif # BR2_PACKAGE_QEMU
package/qemu/qemu.mk +12 -2
@@ -99,6 +99,18 @@ QEMU_VARS = \ PYTHON=$(HOST_DIR)/usr/bin/python \ PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages +ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y) +QEMU_OPTS += --enable-system +else +QEMU_OPTS += --disable-system +endif + +ifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y) +QEMU_OPTS += --enable-linux-user +else +QEMU_OPTS += --disable-linux-user +endif + define QEMU_CONFIGURE_CMDS ( cd $(@D); \ LIBS='$(QEMU_LIBS)' \
@@ -113,8 +125,6 @@ define QEMU_CONFIGURE_CMDS --enable-kvm \ --enable-attr \ --enable-vhost-net \ - --enable-system \ - --enable-linux-user \ --disable-bsd-user \ --disable-xen \ --disable-slirp \
Signature · 1 line
1.9.1
PATCH 4/30 package/qemu: add basic target selection
Quoted 3 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Signed-off-by "Yann E. MORIN" <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 5/30 package/qemu: add fine-grained target selection
In reply to Yann E. MORIN--- package/qemu/Config.in | 21 +++++++++++++++++++++ package/qemu/qemu.mk | 4 ++++ 2 files changed, 25 insertions(+)
package/qemu/Config.in +21 -0
@@ -29,6 +29,25 @@ if BR2_PACKAGE_QEMU comment "Emulators selection" +config BR2_PACKAGE_QEMU_CUSTOM_TARGETS + string "Enable specific targets" + help + Enter here the list of QEMU targets you want to build. For example: + + System emulation | User-land emulation + ----------------------+----------------------- + i386-softmmu | i386-linux-user + arm-softmmu | ppc-linux-user + x86_64-softmmu | sparc-bsd-user + ... | ... + +config QEMU_FOO + bool # To break the indentation + +if BR2_PACKAGE_QEMU_CUSTOM_TARGETS = "" + +comment "... or you can select emulator families to enable, below:" + config BR2_PACKAGE_QEMU_SYSTEM bool "Enable all systems emulation" help
@@ -41,4 +60,6 @@ config BR2_PACKAGE_QEMU_LINUX_USER # Note: bsd-user can not be build on Linux +endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == "" + endif # BR2_PACKAGE_QEMU
package/qemu/qemu.mk +4 -0
@@ -111,6 +111,10 @@ else QEMU_OPTS += --disable-linux-user endif +ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) +QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" +endif + define QEMU_CONFIGURE_CMDS ( cd $(@D); \ LIBS='$(QEMU_LIBS)' \
Signature · 1 line
1.9.1
PATCH 5/30 package/qemu: add fine-grained target selection
Quoted 20 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Signed-off-by "Yann E. MORIN" <[email protected]>--- package/qemu/Config.in | 21 +++++++++++++++++++++ package/qemu/qemu.mk | 4 ++++ 2 files changed, 25 insertions(+)package/qemu/Config.in +4
-0@@ -29,6 +29,25 @@ if BR2_PACKAGE_QEMU comment "Emulators selection" +config BR2_PACKAGE_QEMU_CUSTOM_TARGETS + string "Enable specific targets" + help + Enter here the list of QEMU targets you want to build. For example:
package/qemu/Config.in if BR2_PACKAGE_QEMU · line 45
Quoted 10 lines
package/qemu/Config.in +10
-0+ + System emulation | User-land emulation + ----------------------+----------------------- + i386-softmmu | i386-linux-user + arm-softmmu | ppc-linux-user + x86_64-softmmu | sparc-bsd-user + ... | ... + +config QEMU_FOO + bool # To break the indentation
It would have been good to add a note about this in the commit log.
package/qemu/Config.in else · line 116
Quoted 8 lines
package/qemu/Config.in +4
-0+++ b/package/qemu/qemu.mk@@ -111,6 +111,10 @@ else QEMU_OPTS += --disable-linux-user endif +ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) +QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" +endif
And the interaction with --disable-linux-user / --disable-system.
But ok - committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 6/30 package/qemu: add SDL frontends
In reply to Yann E. MORIN--- package/qemu/Config.in | 17 +++++++++++++++++ package/qemu/qemu.mk | 12 ++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-)
package/qemu/Config.in +17 -0
@@ -62,4 +62,21 @@ config BR2_PACKAGE_QEMU_LINUX_USER endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == "" +config QEMU_HAS_EMULS + def_bool y + depends on BR2_PACKAGE_QEMU_SYSTEM || BR2_PACKAGE_QEMU_LINUX_USER || BR2_PACKAGE_QEMU_CUSTOM_TARGETS != "" + +if QEMU_HAS_EMULS + +comment "Frontends" + +config BR2_PACKAGE_QEMU_SDL + bool "Enable SDL frontend" + select BR2_PACKAGE_SDL + help + Say 'y' to enable the SDL frontend, that is, a graphical window + presenting the VM's display. + +endif # QEMU_HAS_EMULS + endif # BR2_PACKAGE_QEMU
package/qemu/qemu.mk +10 -2
@@ -97,7 +97,8 @@ QEMU_OPTS = QEMU_VARS = \ LIBTOOL=$(HOST_DIR)/usr/bin/libtool \ PYTHON=$(HOST_DIR)/usr/bin/python \ - PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages + PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y) QEMU_OPTS += --enable-system
@@ -115,6 +116,14 @@ ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" endif +ifeq ($(BR2_PACKAGE_QEMU_SDL),y) +QEMU_OPTS += --enable-sdl +QEMU_DEPENDENCIES += sdl +QEMU_VARS += SDL_CONFIG=$(BR2_STAGING_DIR)/usr/bin/sdl-config +else +QEMU_OPTS += --disable-sdl +endif + define QEMU_CONFIGURE_CMDS ( cd $(@D); \ LIBS='$(QEMU_LIBS)' \
@@ -132,7 +141,6 @@ define QEMU_CONFIGURE_CMDS --disable-bsd-user \ --disable-xen \ --disable-slirp \ - --disable-sdl \ --disable-vnc \ --disable-virtfs \ --disable-brlapi \
Signature · 1 line
1.9.1
PATCH 6/30 package/qemu: add SDL frontends
Quoted 13 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Signed-off-by "Yann E. MORIN" <[email protected]>--- package/qemu/Config.in | 17 +++++++++++++++++ package/qemu/qemu.mk | 12 ++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-)package/qemu/Config.in +0
-0
package/qemu/Config.in config BR2_PACKAGE_QEMU_LINUX_USER · line 65
Quoted 4 lines
package/qemu/Config.in +1
-0@@ -62,4 +62,21 @@ config BR2_PACKAGE_QEMU_LINUX_USER endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == "" +config QEMU_HAS_EMULS
We have to respect the global namespace, so this should be BR2_PACKAGE_QEMU_HAS_EMULS
Quoted 12 lines
package/qemu/Config.in +3
-1+++ b/package/qemu/qemu.mk@@ -97,7 +97,8 @@ QEMU_OPTS = QEMU_VARS = \ LIBTOOL=$(HOST_DIR)/usr/bin/libtool \ PYTHON=$(HOST_DIR)/usr/bin/python \ - PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages + PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y) QEMU_OPTS += --enable-system
package/qemu/Config.in ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) · line 122
Quoted 7 lines
package/qemu/Config.in +4
-0@@ -115,6 +116,14 @@ ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" endif +ifeq ($(BR2_PACKAGE_QEMU_SDL),y) +QEMU_OPTS += --enable-sdl +QEMU_DEPENDENCIES += sdl +QEMU_VARS += SDL_CONFIG=$(BR2_STAGING_DIR)/usr/bin/sdl-config
There's no point in adding SDL_CONFIG twice, so I have removed it from the unconditial line further above.
Committed with these fixes, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 7/30 package/qemu: add option to enable/disable the VNC frontend
In reply to Yann E. MORIN--- package/qemu/Config.in | 7 +++++++ package/qemu/qemu.mk | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-)
package/qemu/Config.in +7 -0
@@ -70,6 +70,13 @@ if QEMU_HAS_EMULS comment "Frontends" +config BR2_PACKAGE_QEMU_VNC + bool "Enable VNC frontend" + select BR2_PACKAGE_VNC + help + Say 'y' to enable the VNC frontend, that is, QEMU will act as a + VNC server presenting the VM's display. + config BR2_PACKAGE_QEMU_SDL bool "Enable SDL frontend" select BR2_PACKAGE_SDL
package/qemu/qemu.mk +10 -1
@@ -116,6 +116,12 @@ ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" endif +ifeq ($(BR2_PACKAGE_QEMU_VNC),y) +QEMU_OPTS += --enable-vnc +else +QEMU_OPTS += --disable-vnc +endif + ifeq ($(BR2_PACKAGE_QEMU_SDL),y) QEMU_OPTS += --enable-sdl QEMU_DEPENDENCIES += sdl
@@ -141,7 +147,10 @@ define QEMU_CONFIGURE_CMDS --disable-bsd-user \ --disable-xen \ --disable-slirp \ - --disable-vnc \ + --disable-vnc-jpeg \ + --disable-vnc-png \ + --disable-vnc-tls \ + --disable-vnc-sasl \ --disable-virtfs \ --disable-brlapi \ --disable-curses \
Signature · 1 line
1.9.1
PATCH 7/30 package/qemu: add option to enable/disable the VNC frontend
Quoted 13 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Signed-off-by "Yann E. MORIN" <[email protected]>--- package/qemu/Config.in | 7 +++++++ package/qemu/qemu.mk | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-)package/qemu/Config.in +0
-0
package/qemu/Config.in if QEMU_HAS_EMULS · line 75
Quoted 6 lines
package/qemu/Config.in +3
-0@@ -70,6 +70,13 @@ if QEMU_HAS_EMULS comment "Frontends" +config BR2_PACKAGE_QEMU_VNC + bool "Enable VNC frontend" + select BR2_PACKAGE_VNC
what is BR2_PACKAGE_VNC?
package/qemu/Config.in ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) · line 121
Quoted 8 lines
package/qemu/Config.in +4
-0+++ b/package/qemu/qemu.mk@@ -116,6 +116,12 @@ ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" endif +ifeq ($(BR2_PACKAGE_QEMU_VNC),y) +QEMU_OPTS += --enable-vnc +else
And why doesn't it get added to QEMU_DEPENDENCIES?
Signature · 1 line
Bye, Peter Korsgaard
PATCH 8/30 package/qemu: add VNC jpeg and png compression
In reply to Yann E. MORIN--- package/qemu/Config.in | 10 ++++++++++ package/qemu/qemu.mk | 16 ++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-)
package/qemu/Config.in +10 -0
@@ -77,6 +77,16 @@ config BR2_PACKAGE_QEMU_VNC Say 'y' to enable the VNC frontend, that is, QEMU will act as a VNC server presenting the VM's display. +config BR2_PACKAGE_QEMU_VNC_PNG + bool "PNG compression" + depends on BR2_PACKAGE_QEMU_VNC + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_QEMU_VNC_JPEG + bool "JPEG compression" + depends on BR2_PACKAGE_QEMU_VNC + select BR2_PACKAGE_JPEG + config BR2_PACKAGE_QEMU_SDL bool "Enable SDL frontend" select BR2_PACKAGE_SDL
package/qemu/qemu.mk +14 -2
@@ -122,6 +122,20 @@ else QEMU_OPTS += --disable-vnc endif +ifeq ($(BR2_PACKAGE_QEMU_VNC_PNG),y) +QEMU_OPTS += --enable-vnc-png +QEMU_DEPENDENCIES += libpng +else +QEMU_OPTS += --disable-vnc-png +endif + +ifeq ($(BR2_PACKAGE_QEMU_VNC_JPEG),y) +QEMU_OPTS += --enable-vnc-jpeg +QEMU_DEPENDENCIES += jpeg +else +QEMU_OPTS += --disable-vnc-jpeg +endif + ifeq ($(BR2_PACKAGE_QEMU_SDL),y) QEMU_OPTS += --enable-sdl QEMU_DEPENDENCIES += sdl
@@ -147,8 +161,6 @@ define QEMU_CONFIGURE_CMDS --disable-bsd-user \ --disable-xen \ --disable-slirp \ - --disable-vnc-jpeg \ - --disable-vnc-png \ --disable-vnc-tls \ --disable-vnc-sasl \ --disable-virtfs \
Signature · 1 line
1.9.1
PATCH 9/30 package/qemu: add VNC TLS-encryption
In reply to Yann E. MORINOnly TLS is supported, as buildroot has no package for the SASL library.
--- package/qemu/Config.in | 11 +++++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-)
package/qemu/Config.in +11 -0
@@ -87,6 +87,17 @@ config BR2_PACKAGE_QEMU_VNC_JPEG depends on BR2_PACKAGE_QEMU_VNC select BR2_PACKAGE_JPEG +# TLS does not work with static link, because the gnutls .pc is missing a +# dependency on libintl... :-( +config BR2_PACKAGE_QEMU_VNC_TLS + bool "TLS encryption" + depends on BR2_PACKAGE_QEMU_VNC + depends on !BR2_PREFER_STATIC_LIB + select BR2_PACKAGE_GNUTLS + +comment "VNC TLS encryption does not work for static link" + depends on BR2_PACKAGE_QEMU_VNC && BR2_PREFER_STATIC_LIB + config BR2_PACKAGE_QEMU_SDL bool "Enable SDL frontend" select BR2_PACKAGE_SDL
package/qemu/qemu.mk +7 -1
@@ -136,6 +136,13 @@ else QEMU_OPTS += --disable-vnc-jpeg endif +ifeq ($(BR2_PACKAGE_QEMU_VNC_TLS),y) +QEMU_OPTS += --enable-vnc-tls +QEMU_DEPENDENCIES += gnutls +else +QEMU_OPTS += --disable-vnc-tls +endif + ifeq ($(BR2_PACKAGE_QEMU_SDL),y) QEMU_OPTS += --enable-sdl QEMU_DEPENDENCIES += sdl
@@ -161,7 +168,6 @@ define QEMU_CONFIGURE_CMDS --disable-bsd-user \ --disable-xen \ --disable-slirp \ - --disable-vnc-tls \ --disable-vnc-sasl \ --disable-virtfs \ --disable-brlapi \
Signature · 1 line
1.9.1
PATCH 10/30 package/qemu: add option to not install blobs
In reply to Yann E. MORIN--- package/qemu/Config.in | 16 ++++++++++++++++ package/qemu/qemu.mk | 4 ++++ 2 files changed, 20 insertions(+)
package/qemu/Config.in +16 -0
@@ -105,6 +105,22 @@ config BR2_PACKAGE_QEMU_SDL Say 'y' to enable the SDL frontend, that is, a graphical window presenting the VM's display. +comment "Misc. features" + +config BR2_PACKAGE_QEMU_BLOBS + bool "Install binary blobs" + default y + help + Say 'y' here (the default) to install binary blobs (such as BIOS + or firmwares for the different machines simulated by QEMU). + Say 'n' to not install those blobs. + + Note: Some machines may be unbootable without those blobs. + If unsure, say 'y'. + + Note2: This has nothing to do with the licensing of the blobs; + some (most?) even have a free and/or open source license. + endif # QEMU_HAS_EMULS endif # BR2_PACKAGE_QEMU
package/qemu/qemu.mk +4 -0
@@ -151,6 +151,10 @@ else QEMU_OPTS += --disable-sdl endif +ifeq ($(BR2_PACKAGE_QEMU_BLOBS),) +QEMU_OPTS += --disable-blobs +endif + define QEMU_CONFIGURE_CMDS ( cd $(@D); \ LIBS='$(QEMU_LIBS)' \
Signature · 1 line
1.9.1
PATCH 11/30 package/qemu: add option to remove unwanted keymaps
In reply to Yann E. MORIN--- package/qemu/Config.in | 12 +++++++++++ package/qemu/qemu.mk | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+)
package/qemu/Config.in +12 -0
@@ -121,6 +121,18 @@ config BR2_PACKAGE_QEMU_BLOBS Note2: This has nothing to do with the licensing of the blobs; some (most?) even have a free and/or open source license. +config BR2_PACKAGE_QEMU_KEYMAPS + string "Keymaps to keep" + default "all" + help + Enter the list of keymap(s) to keep. To keep many keymaps, you can + use shell globs, or you can enter a space-separated list of keymaps: + - empty to remove all keymaps + - 'all' to keep all keymaps + - 'fr*' to keep all french keymaps + - 'de fr* en-*' for german, french and english keymaps + - and so on (see the QEMU source for all supported keymaps) + endif # QEMU_HAS_EMULS endif # BR2_PACKAGE_QEMU
package/qemu/qemu.mk +55 -0
61 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH 12/30 package/qemu: add uuid support
In reply to Yann E. MORIN--- package/qemu/Config.in | 10 ++++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 17 insertions(+), 1 deletion(-)
package/qemu/Config.in +10 -0
@@ -107,6 +107,16 @@ config BR2_PACKAGE_QEMU_SDL comment "Misc. features" +config BR2_PACKAGE_QEMU_UUID + bool "Enable VMs UUID" + depends on BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Say 'y' here to have QEMU support UUIDs for VMs. + +comment "UUID support requires util-linux (for libuuid)" + depends on !BR2_PACKAGE_UTIL_LINUX + config BR2_PACKAGE_QEMU_BLOBS bool "Install binary blobs" default y
package/qemu/qemu.mk +7 -1
@@ -151,6 +151,13 @@ else QEMU_OPTS += --disable-sdl endif +ifeq ($(BR2_PACKAGE_QEMU_UUID),y) +QEMU_OPTS += --enable-uuid +QEMU_DEPENDENCIES += util-linux +else +QEMU_OPTS += --disable-uuid +endif + ifeq ($(BR2_PACKAGE_QEMU_BLOBS),) QEMU_OPTS += --disable-blobs endif
@@ -235,7 +242,6 @@ define QEMU_CONFIGURE_CMDS --disable-fdt \ --disable-bluez \ --disable-guest-base \ - --disable-uuid \ --disable-vde \ --disable-linux-aio \ --disable-cap-ng \
Signature · 1 line
1.9.1
PATCH 13/30 package/qemu: add support for capabilities
In reply to Yann E. MORIN--- package/qemu/Config.in | 7 +++++++ package/qemu/qemu.mk | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-)
package/qemu/Config.in +7 -0
@@ -117,6 +117,13 @@ config BR2_PACKAGE_QEMU_UUID comment "UUID support requires util-linux (for libuuid)" depends on !BR2_PACKAGE_UTIL_LINUX +config BR2_PACKAGE_QEMU_CAP + bool "Enable capabilities" + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBCAP_NG + help + Say 'y' here if you want QEMU to support capabilities. + config BR2_PACKAGE_QEMU_BLOBS bool "Install binary blobs" default y
package/qemu/qemu.mk +10 -1
@@ -158,6 +158,16 @@ else QEMU_OPTS += --disable-uuid endif +# There's no configure flag to disable use of libcap +# so we must use an environment variable +ifeq ($(BR2_PACKAGE_QEMU_CAP),y) +QEMU_OPTS += --enable-cap-ng +QEMU_DEPENDENCIES += libcap libcap-ng +else +QEMU_OPTS += --disable-cap-ng +QEMU_VARS += cap=no +endif + ifeq ($(BR2_PACKAGE_QEMU_BLOBS),) QEMU_OPTS += --disable-blobs endif
@@ -244,7 +254,6 @@ define QEMU_CONFIGURE_CMDS --disable-guest-base \ --disable-vde \ --disable-linux-aio \ - --disable-cap-ng \ --disable-docs \ --disable-spice \ --disable-rbd \
Signature · 1 line
1.9.1
PATCH 14/30 package/qemu: add attr/xattr option
In reply to Yann E. MORIN--- package/qemu/Config.in | 6 ++++++ package/qemu/qemu.mk | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-)
package/qemu/Config.in +6 -0
@@ -124,6 +124,12 @@ config BR2_PACKAGE_QEMU_CAP help Say 'y' here if you want QEMU to support capabilities. +config BR2_PACKAGE_QEMU_ATTR + bool "Enable attr and xattr" + help + Say 'y' here to have QEMU support attributes (attr) and eXtended + attibutes (xattr). + config BR2_PACKAGE_QEMU_BLOBS bool "Install binary blobs" default y
package/qemu/qemu.mk +6 -1
@@ -168,6 +168,12 @@ QEMU_OPTS += --disable-cap-ng QEMU_VARS += cap=no endif +ifeq ($(BR2_PACKAGE_QEMU_ATTR),y) +QEMU_OPTS += --enable-attr +else +QEMU_OPTS += --disable-attr +endif + ifeq ($(BR2_PACKAGE_QEMU_BLOBS),) QEMU_OPTS += --disable-blobs endif
@@ -239,7 +245,6 @@ define QEMU_CONFIGURE_CMDS --with-system-pixman \ --audio-drv-list= \ --enable-kvm \ - --enable-attr \ --enable-vhost-net \ --disable-bsd-user \ --disable-xen \
Signature · 1 line
1.9.1
PATCH 15/30 package/qemu: add support for virtfs
In reply to Yann E. MORIN--- package/qemu/Config.in | 16 ++++++++++++++++ package/qemu/qemu.mk | 7 ++++++- 2 files changed, 22 insertions(+), 1 deletion(-)
package/qemu/Config.in +16 -0
@@ -105,6 +105,22 @@ config BR2_PACKAGE_QEMU_SDL Say 'y' to enable the SDL frontend, that is, a graphical window presenting the VM's display. +comment "Block backends" + +config BR2_PACKAGE_QEMU_VIRTFS + bool "Enable plan9 ressources using VirtFS" + select BR2_PACKAGE_QEMU_CAP + select BR2_PACKAGE_QEMU_ATTR + help + Say 'y' here if you want QEMU to provide a plan9 virtual "share" + accessible from the guest OS for relatively fast access to host + files. + + This requires that the guest OS is capable of accessing plan9 + ressources (typically, in Linux, this is done by a network + file-system called 9p, and can be accelerated by using the 9p + virtio). + comment "Misc. features" config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +6 -1
@@ -151,6 +151,12 @@ else QEMU_OPTS += --disable-sdl endif +ifeq ($(BR2_PACKAGE_QEMU_VIRTFS),y) +QEMU_OPTS += --enable-virtfs +else +QEMU_OPTS += --disable-virtfs +endif + ifeq ($(BR2_PACKAGE_QEMU_UUID),y) QEMU_OPTS += --enable-uuid QEMU_DEPENDENCIES += util-linux
@@ -250,7 +256,6 @@ define QEMU_CONFIGURE_CMDS --disable-xen \ --disable-slirp \ --disable-vnc-sasl \ - --disable-virtfs \ --disable-brlapi \ --disable-curses \ --disable-curl \
Signature · 1 line
1.9.1
PATCH 16/30 package/qemu: add support for cURL
In reply to Yann E. MORINQEMU can use libcurl as a block backend, to access remote block devices.
--- package/qemu/Config.in | 10 ++++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 17 insertions(+), 1 deletion(-)
package/qemu/Config.in +10 -0
@@ -121,6 +121,16 @@ config BR2_PACKAGE_QEMU_VIRTFS file-system called 9p, and can be accelerated by using the 9p virtio). +config BR2_PACKAGE_QEMU_CURL + bool "Enable remote block-devices using cURL" + depends on !BR2_PREFER_STATIC_LIB + select BR2_PACKAGE_LIBCURL + help + Say 'y' to access remote block-devices using libcurl. + +comment "cURL support is not possible with static linking" + depends on BR2_PREFER_STATIC_LIB + comment "Misc. features" config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +7 -1
@@ -157,6 +157,13 @@ else QEMU_OPTS += --disable-virtfs endif +ifeq ($(BR2_PACKAGE_QEMU_CURL),y) +QEMU_OPTS += --enable-curl +QEMU_DEPENDENCIES += libcurl +else +QEMU_OPTS += --disable-curl +endif + ifeq ($(BR2_PACKAGE_QEMU_UUID),y) QEMU_OPTS += --enable-uuid QEMU_DEPENDENCIES += util-linux
@@ -258,7 +265,6 @@ define QEMU_CONFIGURE_CMDS --disable-vnc-sasl \ --disable-brlapi \ --disable-curses \ - --disable-curl \ --disable-fdt \ --disable-bluez \ --disable-guest-base \
Signature · 1 line
1.9.1
PATCH 17/30 package/qemu: enable use of the curses frontend
In reply to Yann E. MORIN--- package/qemu/Config.in | 11 +++++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-)
package/qemu/Config.in +11 -0
@@ -105,6 +105,17 @@ config BR2_PACKAGE_QEMU_SDL Say 'y' to enable the SDL frontend, that is, a graphical window presenting the VM's display. +config BR2_PACKAGE_QEMU_CURSES + bool "Enable the curses frontend" + select BR2_PACKAGE_NCURSES + help + Say 'y' to use curses to display the text-mode of VGA outpout. + + If the VM's graphic adapter does not support VGA text-mode, or it + is in graphical mode, then nothing will be displayed with this + frontend (although you can still use the SDL or VNC frontends to + display the graphical output). + comment "Block backends" config BR2_PACKAGE_QEMU_VIRTFS
package/qemu/qemu.mk +7 -1
@@ -151,6 +151,13 @@ else QEMU_OPTS += --disable-sdl endif +ifeq ($(BR2_PACKAGE_QEMU_CURSES),y) +QEMU_OPTS += --enable-curses +QEMU_DEPENDENCIES += ncurses +else +QEMU_OPTS += --disable-curses +endif + ifeq ($(BR2_PACKAGE_QEMU_VIRTFS),y) QEMU_OPTS += --enable-virtfs else
@@ -264,7 +271,6 @@ define QEMU_CONFIGURE_CMDS --disable-slirp \ --disable-vnc-sasl \ --disable-brlapi \ - --disable-curses \ --disable-fdt \ --disable-bluez \ --disable-guest-base \
Signature · 1 line
1.9.1
PATCH 18/30 package/qemu: add BlueZ connectivity
In reply to Yann E. MORIN--- package/qemu/Config.in | 11 +++++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-)
package/qemu/Config.in +11 -0
@@ -142,6 +142,17 @@ config BR2_PACKAGE_QEMU_CURL comment "cURL support is not possible with static linking" depends on BR2_PREFER_STATIC_LIB +comment "Networking" + +config BR2_PACKAGE_QEMU_BLUEZ + bool "Enable BlueZ connectivity" + depends on BR2_PACKAGE_BLUEZ_UTILS + help + Say 'y' here to enable BlueZ (bluetooth) connectivity in QEMU. + +comment "BlueZ connectivity depends on bluez-utils" + depends on !BR2_PACKAGE_BLUEZ_UTILS + comment "Misc. features" config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +7 -1
@@ -171,6 +171,13 @@ else QEMU_OPTS += --disable-curl endif +ifeq ($(BR2_PACKAGE_QEMU_BLUEZ),y) +QEMU_OPTS += --enable-bluez +QEMU_DEPENDENCIES += bluez_utils +else +QEMU_OPTS += --disable-bluez +endif + ifeq ($(BR2_PACKAGE_QEMU_UUID),y) QEMU_OPTS += --enable-uuid QEMU_DEPENDENCIES += util-linux
@@ -272,7 +279,6 @@ define QEMU_CONFIGURE_CMDS --disable-vnc-sasl \ --disable-brlapi \ --disable-fdt \ - --disable-bluez \ --disable-guest-base \ --disable-vde \ --disable-linux-aio \
Signature · 1 line
1.9.1
PATCH 19/30 package/qemu: add AIO support
In reply to Yann E. MORINAdd support for Asynchronous Input/Ouput (AIO).
--- package/qemu/Config.in | 9 +++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-)
package/qemu/Config.in +9 -0
@@ -142,6 +142,15 @@ config BR2_PACKAGE_QEMU_CURL comment "cURL support is not possible with static linking" depends on BR2_PREFER_STATIC_LIB +config BR2_PACKAGE_QEMU_AIO + bool "Enable AIO" + depends on BR2_PACKAGE_LIBAIO + help + Say 'y' here to enable Asynchronous Input/Output (AIO). + +comment "AIO support depends on libaio" + depends on !BR2_PACKAGE_LIBAIO + comment "Networking" config BR2_PACKAGE_QEMU_BLUEZ
package/qemu/qemu.mk +7 -1
@@ -171,6 +171,13 @@ else QEMU_OPTS += --disable-curl endif +ifeq ($(BR2_PACKAGE_QEMU_AIO),y) +QEMU_OPTS += --enable-linux-aio +QEMU_DEPENDENCIES += libaio +else +QEMU_OPTS += --disable-linux-aio +endif + ifeq ($(BR2_PACKAGE_QEMU_BLUEZ),y) QEMU_OPTS += --enable-bluez QEMU_DEPENDENCIES += bluez_utils
@@ -281,7 +288,6 @@ define QEMU_CONFIGURE_CMDS --disable-fdt \ --disable-guest-base \ --disable-vde \ - --disable-linux-aio \ --disable-docs \ --disable-spice \ --disable-rbd \
Signature · 1 line
1.9.1
PATCH 20/30 package/qemu: add support for VDE switches
In reply to Yann E. MORIN--- package/qemu/Config.in | 7 +++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-)
package/qemu/Config.in +7 -0
@@ -162,6 +162,13 @@ config BR2_PACKAGE_QEMU_BLUEZ comment "BlueZ connectivity depends on bluez-utils" depends on !BR2_PACKAGE_BLUEZ_UTILS +config BR2_PACKAGE_QEMU_VDE + bool "Enable VDE" + select BR2_PACKAGE_VDE2 + help + Say 'y' here to have QEMU connect to VDE (Virtual Distributed + Ethernet) switches. + comment "Misc. features" config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +7 -1
@@ -185,6 +185,13 @@ else QEMU_OPTS += --disable-bluez endif +ifeq ($(BR2_PACKAGE_QEMU_VDE),y) +QEMU_OPTS += --enable-vde +QEMU_DEPENDENCIES += vde2 +else +QEMU_OPTS += --disable-vde +endif + ifeq ($(BR2_PACKAGE_QEMU_UUID),y) QEMU_OPTS += --enable-uuid QEMU_DEPENDENCIES += util-linux
@@ -287,7 +294,6 @@ define QEMU_CONFIGURE_CMDS --disable-brlapi \ --disable-fdt \ --disable-guest-base \ - --disable-vde \ --disable-docs \ --disable-spice \ --disable-rbd \
Signature · 1 line
1.9.1
PATCH 21/30 package/qemu: add iSCSI support
In reply to Yann E. MORIN--- package/qemu/Config.in | 6 ++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-)
package/qemu/Config.in +6 -0
@@ -142,6 +142,12 @@ config BR2_PACKAGE_QEMU_CURL comment "cURL support is not possible with static linking" depends on BR2_PREFER_STATIC_LIB +config BR2_PACKAGE_QEMU_ISCSI + bool "Enable remote block-devices using iSCSI" + select BR2_PACKAGE_LIBISCSI + help + Say 'y' here to have QEMU use iSCSI targets as block-devices. + config BR2_PACKAGE_QEMU_AIO bool "Enable AIO" depends on BR2_PACKAGE_LIBAIO
package/qemu/qemu.mk +7 -1
@@ -171,6 +171,13 @@ else QEMU_OPTS += --disable-curl endif +ifeq ($(BR2_PACKAGE_QEMU_ISCSI),y) +QEMU_OPTS += --enable-libiscsi +QEMU_DEPENDENCIES += libiscsi +else +QEMU_OPTS += --disable-libiscsi +endif + ifeq ($(BR2_PACKAGE_QEMU_AIO),y) QEMU_OPTS += --enable-linux-aio QEMU_DEPENDENCIES += libaio
@@ -297,7 +304,6 @@ define QEMU_CONFIGURE_CMDS --disable-docs \ --disable-spice \ --disable-rbd \ - --disable-libiscsi \ --disable-usb-redir \ --disable-smartcard-nss \ --disable-strip \
Signature · 1 line
1.9.1
PATCH 22/30 package/qemu: add support for USB redirection
In reply to Yann E. MORIN--- package/qemu/Config.in | 9 +++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-)
package/qemu/Config.in +9 -0
@@ -148,6 +148,15 @@ config BR2_PACKAGE_QEMU_ISCSI help Say 'y' here to have QEMU use iSCSI targets as block-devices. +config BR2_PACKAGE_QEMU_USBREDIR + bool "Enable USB redirection" + depends on BR2_PACKAGE_USBREDIR + help + Say 'y' here to have QEMU support USB redirection over the network. + +comment "USB redirection requires usbredir" + depends on !BR2_PACKAGE_USBREDIR + config BR2_PACKAGE_QEMU_AIO bool "Enable AIO" depends on BR2_PACKAGE_LIBAIO
package/qemu/qemu.mk +7 -1
@@ -178,6 +178,13 @@ else QEMU_OPTS += --disable-libiscsi endif +ifeq ($(BR2_PACKAGE_QEMU_USBREDIR),y) +QEMU_OPTS += --enable-usb-redir +QEMU_DEPENDENCIES += usbredir +else +QEMU_OPTS += --disable-usb-redir +endif + ifeq ($(BR2_PACKAGE_QEMU_AIO),y) QEMU_OPTS += --enable-linux-aio QEMU_DEPENDENCIES += libaio
@@ -304,7 +311,6 @@ define QEMU_CONFIGURE_CMDS --disable-docs \ --disable-spice \ --disable-rbd \ - --disable-usb-redir \ --disable-smartcard-nss \ --disable-strip \ --disable-seccomp \
Signature · 1 line
1.9.1
PATCH 23/30 package/qemu: add support for Spice
In reply to Yann E. MORIN--- package/qemu/Config.in | 9 +++++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-)
package/qemu/Config.in +9 -0
@@ -116,6 +116,15 @@ config BR2_PACKAGE_QEMU_CURSES frontend (although you can still use the SDL or VNC frontends to display the graphical output). +config BR2_PACKAGE_QEMU_SPICE + bool "Enable Spice frontend" + depends on BR2_PACKAGE_SPICE + help + Say 'y' here to have QEMU support Spice as a (VNC-like) frontend. + +comment "Spice support requires spice-server" + depends on !BR2_PACKAGE_SPICE + comment "Block backends" config BR2_PACKAGE_QEMU_VIRTFS
package/qemu/qemu.mk +7 -1
@@ -158,6 +158,13 @@ else QEMU_OPTS += --disable-curses endif +ifeq ($(BR2_PACKAGE_QEMU_SPICE),y) +QEMU_OPTS += --enable-spice +QEMU_DEPENDENCIES += spice +else +QEMU_OPTS += --disable-spice +endif + ifeq ($(BR2_PACKAGE_QEMU_VIRTFS),y) QEMU_OPTS += --enable-virtfs else
@@ -309,7 +316,6 @@ define QEMU_CONFIGURE_CMDS --disable-fdt \ --disable-guest-base \ --disable-docs \ - --disable-spice \ --disable-rbd \ --disable-smartcard-nss \ --disable-strip \
Signature · 1 line
1.9.1
PATCH 24/30 package/qemu: enable sound
In reply to Yann E. MORIN--- package/qemu/Config.in | 19 +++++++++++++++++++ package/qemu/qemu.mk | 14 +++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-)
package/qemu/Config.in +19 -0
@@ -193,6 +193,25 @@ config BR2_PACKAGE_QEMU_VDE Say 'y' here to have QEMU connect to VDE (Virtual Distributed Ethernet) switches. +comment "Sound" + +config BR2_PACKAGE_QEMU_SOUND_ALSA + bool "Enable sound via alsa" + select BR2_PACKAGE_ALSA_LIB + help + Say 'y' here to have QEMU play sound from the VMs via alsa. + + Note: this is only for system emulation, not user emulation. + +config BR2_PACKAGE_QEMU_SOUND_SDL + bool "Enable sound via SDL" + select BR2_PACKAGE_QEMU_SDL # Requires that SDL frontend be selected + select BR2_PACKAGE_SDL + help + Say 'y' here to have QEMU play sound from the VMs via SDL. + + Note: this is only for system emulation, not user emulation. + comment "Misc. features" config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +13 -1
@@ -213,6 +213,19 @@ else QEMU_OPTS += --disable-vde endif +QEMU_SND_DRV = +ifeq ($(BR2_PACKAGE_QEMU_SOUND_ALSA),y) +QEMU_SND_DRV += alsa +QEMU_DEPENDENCIES += alsa-lib +endif +ifeq ($(BR2_PACKAGE_QEMU_SOUND_SDL),y) +QEMU_SND_DRV += sdl +QEMU_DEPENDENCIES += sdl +endif +ifneq ($(QEMU_SND_DRV),) +QEMU_OPTS += --audio-drv-list="$(QEMU_SND_DRV)" +endif + ifeq ($(BR2_PACKAGE_QEMU_UUID),y) QEMU_OPTS += --enable-uuid QEMU_DEPENDENCIES += util-linux
@@ -305,7 +318,6 @@ define QEMU_CONFIGURE_CMDS --prefix=/usr \ --cross-prefix=$(TARGET_CROSS) \ --with-system-pixman \ - --audio-drv-list= \ --enable-kvm \ --enable-vhost-net \ --disable-bsd-user \
Signature · 1 line
1.9.1
PATCH 25/30 package/qemu: add support for libseccomp
In reply to Yann E. MORIN--- package/qemu/Config.in | 7 +++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-)
package/qemu/Config.in +7 -0
@@ -237,6 +237,13 @@ config BR2_PACKAGE_QEMU_ATTR Say 'y' here to have QEMU support attributes (attr) and eXtended attibutes (xattr). +config BR2_PACKAGE_QEMU_SECCOMP + bool "Enable seccomp filter" + select BR2_PACKAGE_LIBSECCOMP + help + Say 'y' here to have QEMU to use the Linux kernel's seccomp filter, + to more tightly confine the VMs. + config BR2_PACKAGE_QEMU_BLOBS bool "Install binary blobs" default y
package/qemu/qemu.mk +7 -1
@@ -249,6 +249,13 @@ else QEMU_OPTS += --disable-attr endif +ifeq ($(BR2_PACKAGE_QEMU_SECCOMP),y) +QEMU_OPTS += --enable-seccomp +QEMU_DEPENDENCIES += libseccomp +else +QEMU_OPTS += --disable-seccomp +endif + ifeq ($(BR2_PACKAGE_QEMU_BLOBS),) QEMU_OPTS += --disable-blobs endif
@@ -331,7 +338,6 @@ define QEMU_CONFIGURE_CMDS --disable-rbd \ --disable-smartcard-nss \ --disable-strip \ - --disable-seccomp \ --disable-sparse \ --disable-tools \ $(QEMU_OPTS) \
Signature · 1 line
1.9.1
PATCH 26/30 package/qemu: option to build the docs
In reply to Yann E. MORIN--- package/qemu/qemu.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
package/qemu/qemu.mk +6 -1
@@ -260,6 +260,12 @@ ifeq ($(BR2_PACKAGE_QEMU_BLOBS),) QEMU_OPTS += --disable-blobs endif +ifeq ($(BR2_HAVE_DOCUMENTATION),y) +QEMU_OPTS += --enable-docs +else +QEMU_OPTS += --disable-docs +endif + # Post-install removal of unwanted keymaps: # - if we want 'all', we do nothing; # - if we want none, we completely remove the keymap dir
@@ -334,7 +340,6 @@ define QEMU_CONFIGURE_CMDS --disable-brlapi \ --disable-fdt \ --disable-guest-base \ - --disable-docs \ --disable-rbd \ --disable-smartcard-nss \ --disable-strip \
Signature · 1 line
1.9.1
PATCH 27/30 package/qemu: add option to install tools on the target
In reply to Yann E. MORINUsually, tools on the target are not needed, so they are disabled by default. Add an option to install them on the target.
--- package/qemu/Config.in | 6 ++++++ package/qemu/qemu.mk | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-)
package/qemu/Config.in +6 -0
@@ -66,6 +66,12 @@ config QEMU_HAS_EMULS def_bool y depends on BR2_PACKAGE_QEMU_SYSTEM || BR2_PACKAGE_QEMU_LINUX_USER || BR2_PACKAGE_QEMU_CUSTOM_TARGETS != "" +config BR2_PACKAGE_QEMU_TOOLS_ON_TARGET + bool "Install tools on target" + help + Say 'y' here to also install QEMU tools (qemu-{img,io,nbd}) on the + target. + if QEMU_HAS_EMULS comment "Frontends"
package/qemu/qemu.mk +6 -1
@@ -256,6 +256,12 @@ else QEMU_OPTS += --disable-seccomp endif +ifeq ($(BR2_PACKAGE_QEMU_TOOLS_ON_TARGET),y) +QEMU_OPTS += --enable-tools +else +QEMU_OPTS += --disable-tools +endif + ifeq ($(BR2_PACKAGE_QEMU_BLOBS),) QEMU_OPTS += --disable-blobs endif
@@ -344,7 +350,6 @@ define QEMU_CONFIGURE_CMDS --disable-smartcard-nss \ --disable-strip \ --disable-sparse \ - --disable-tools \ $(QEMU_OPTS) \ ) endef
Signature · 1 line
1.9.1
PATCH 28/30 package/qemu: move sub-options into a sub-menu
In reply to Yann E. MORINAs there are now quite a few options to QEMU, move them into their own sub-menu, so it looks a bit less crowded in the 'misc' menu.
--- package/qemu/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/qemu/Config.in +1 -1
@@ -2,7 +2,7 @@ comment "QEMU requires a toolchain with threads" depends on BR2_i386 || BR2_x86_64 depends on !BR2_TOOLCHAIN_HAS_THREADS -config BR2_PACKAGE_QEMU +menuconfig BR2_PACKAGE_QEMU bool "QEMU" depends on BR2_i386 || BR2_x86_64 depends on BR2_TOOLCHAIN_HAS_THREADS
Signature · 1 line
1.9.1
PATCH 29/30 package/qemu: enable a static build
In reply to Yann E. MORIN---
It can be useful to have a statically-linked QEMU (especially the linux-user and bsd-user emulators) to avoid run-time issues with dynamically-loaded libraries.
There is an issue where QEMU could not be able to properly (re)map libraries in memory due to some overlap between its own memory mappings and the mappings of the user application being translated (it's a complex issue, so don't count on me to properly explain it, I did not understood it completely either... :-/ ).
--- package/qemu/Config.in | 44 ++++++++++++++++---- package/qemu/qemu-0000-static-curl.patch | 69 ++++++++++++++++++++++++++++++++ package/qemu/qemu-0001-static-sdl.patch | 53 ++++++++++++++++++++++++ package/qemu/qemu.mk | 4 ++ 4 files changed, 162 insertions(+), 8 deletions(-) create mode 100644 package/qemu/qemu-0000-static-curl.patch create mode 100644 package/qemu/qemu-0001-static-sdl.patch
package/qemu/Config.in +36 -8
@@ -72,6 +72,11 @@ config BR2_PACKAGE_QEMU_TOOLS_ON_TARGET Say 'y' here to also install QEMU tools (qemu-{img,io,nbd}) on the target. +config BR2_PACKAGE_QEMU_STATIC + bool "Build statically" + help + Build static qemu executable(s). + if QEMU_HAS_EMULS comment "Frontends"
@@ -98,11 +103,11 @@ config BR2_PACKAGE_QEMU_VNC_JPEG config BR2_PACKAGE_QEMU_VNC_TLS bool "TLS encryption" depends on BR2_PACKAGE_QEMU_VNC - depends on !BR2_PREFER_STATIC_LIB + depends on !BR2_PACKAGE_QEMU_STATIC select BR2_PACKAGE_GNUTLS comment "VNC TLS encryption does not work for static link" - depends on BR2_PACKAGE_QEMU_VNC && BR2_PREFER_STATIC_LIB + depends on BR2_PACKAGE_QEMU_VNC && BR2_PACKAGE_QEMU_STATIC config BR2_PACKAGE_QEMU_SDL bool "Enable SDL frontend"
@@ -125,11 +130,21 @@ config BR2_PACKAGE_QEMU_CURSES config BR2_PACKAGE_QEMU_SPICE bool "Enable Spice frontend" depends on BR2_PACKAGE_SPICE + depends on !BR2_PACKAGE_QEMU_STATIC || BR2_PREFER_STATIC_LIB help Say 'y' here to have QEMU support Spice as a (VNC-like) frontend. -comment "Spice support requires spice-server" - depends on !BR2_PACKAGE_SPICE + Note: + Spice links against alsa-libs, but alsa-libs can't be built both + shared and static at the same time, so we can not link with a + static spice to get a static QEMU (BR2_PACKAGE_QEMU_STATIC) if + buildroot as a whole does not also build only static libraries + (BR2_PREFER_STATIC_LIB). + +if !BR2_PACKAGE_SPICE || ( BR2_PACKAGE_QEMU_STATIC && !BR2_PREFER_STATIC_LIB ) +comment "Spice support requires spice-server, and does not work for a static" +comment "build of QEMU unless BR2_PREFER_STATIC_LIB is set, too" +endif comment "Block backends"
@@ -149,14 +164,10 @@ config BR2_PACKAGE_QEMU_VIRTFS config BR2_PACKAGE_QEMU_CURL bool "Enable remote block-devices using cURL" - depends on !BR2_PREFER_STATIC_LIB select BR2_PACKAGE_LIBCURL help Say 'y' to access remote block-devices using libcurl. -comment "cURL support is not possible with static linking" - depends on BR2_PREFER_STATIC_LIB - config BR2_PACKAGE_QEMU_ISCSI bool "Enable remote block-devices using iSCSI" select BR2_PACKAGE_LIBISCSI
@@ -185,13 +196,18 @@ comment "Networking" config BR2_PACKAGE_QEMU_BLUEZ bool "Enable BlueZ connectivity" + depends on !BR2_PACKAGE_QEMU_STATIC && !BR2_PREFER_STATIC depends on BR2_PACKAGE_BLUEZ_UTILS help Say 'y' here to enable BlueZ (bluetooth) connectivity in QEMU. comment "BlueZ connectivity depends on bluez-utils" + depends on !BR2_PACKAGE_QEMU_STATIC && !BR2_PREFER_STATIC depends on !BR2_PACKAGE_BLUEZ_UTILS +comment "BlueZ connectivity does not work for static link" + depends on BR2_PACKAGE_QEMU_STATIC || BR2_PREFER_STATIC + config BR2_PACKAGE_QEMU_VDE bool "Enable VDE" select BR2_PACKAGE_VDE2
@@ -201,14 +217,21 @@ config BR2_PACKAGE_QEMU_VDE comment "Sound" +# Alsa can not build both shared and static libs at the same time. +# But we may want to build QEMU staticaly, even though the global +# BR2_PREFER_STATIC_LIB is not set. Disable that case. config BR2_PACKAGE_QEMU_SOUND_ALSA bool "Enable sound via alsa" + depends on !BR2_PACKAGE_QEMU_STATIC || BR2_PREFER_STATIC_LIB select BR2_PACKAGE_ALSA_LIB help Say 'y' here to have QEMU play sound from the VMs via alsa. Note: this is only for system emulation, not user emulation. +comment "Alsa sound static link works only if BR2_PREFER_STATIC is set" + depends on BR2_PACKAGE_QEMU_STATIC && !BR2_PREFER_STATIC_LIB + config BR2_PACKAGE_QEMU_SOUND_SDL bool "Enable sound via SDL" select BR2_PACKAGE_QEMU_SDL # Requires that SDL frontend be selected
@@ -279,3 +302,8 @@ config BR2_PACKAGE_QEMU_KEYMAPS endif # QEMU_HAS_EMULS endif # BR2_PACKAGE_QEMU + +# We can't have this in the conditional block, above, or we'd have +# a cyclic dependency +config BR2_PREFER_STATIC_LIB + select BR2_PACKAGE_QEMU_STATIC if BR2_PACKAGE_QEMU
package/qemu/qemu-0000-static-curl.patch new file +69 -0
69 lines not on this page · raw message
package/qemu/qemu-0001-static-sdl.patch new file +53 -0
53 lines not on this page · raw message
package/qemu/qemu.mk +4 -0
@@ -272,6 +272,10 @@ else QEMU_OPTS += --disable-docs endif +ifeq ($(BR2_PACKAGE_QEMU_STATIC),y) +QEMU_OPTS += --static +endif + # Post-install removal of unwanted keymaps: # - if we want 'all', we do nothing; # - if we want none, we completely remove the keymap dir
Signature · 1 line
1.9.1
PATCH 30/30 package/qemu: add support for FDT
In reply to Yann E. MORINFDT is the Flat Device Tree, and allows QEMU to pass DTs to the VMs.
--- package/qemu/Config.in | 7 +++++++ package/qemu/qemu.mk | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-)
package/qemu/Config.in +7 -0
@@ -243,6 +243,13 @@ config BR2_PACKAGE_QEMU_SOUND_SDL comment "Misc. features" +config BR2_PACKAGE_QEMU_FDT + bool "Enable FDT" + select BR2_PACKAGE_DTC + help + Say 'y' here to have QEMU capable of constructing Device Trees, + and passing them to the VMs. + config BR2_PACKAGE_QEMU_UUID bool "Enable VMs UUID" depends on BR2_PACKAGE_UTIL_LINUX
package/qemu/qemu.mk +7 -1
@@ -226,6 +226,13 @@ ifneq ($(QEMU_SND_DRV),) QEMU_OPTS += --audio-drv-list="$(QEMU_SND_DRV)" endif +ifeq ($(BR2_PACKAGE_QEMU_FDT),y) +QEMU_OPTS += --enable-fdt +QEMU_DEPENDENCIES += dtc +else +QEMU_OPTS += --disable-fdt +endif + ifeq ($(BR2_PACKAGE_QEMU_UUID),y) QEMU_OPTS += --enable-uuid QEMU_DEPENDENCIES += util-linux
@@ -348,7 +355,6 @@ define QEMU_CONFIGURE_CMDS --disable-slirp \ --disable-vnc-sasl \ --disable-brlapi \ - --disable-fdt \ --disable-guest-base \ --disable-rbd \ --disable-smartcard-nss \
Signature · 1 line
1.9.1