[Buildroot] [PATCH v9 3/3] package/libvirt: add lxc and qemu options

Arnout Vandecappelle arnout at mind.be
Thu Jul 22 21:15:26 UTC 2021



On 11/06/2021 16:07, Jared Bents wrote:
> Update to add lxc and qemu options for libvirt under the daemon
> config option
> 
> Signed-off-by: Jared Bents <jared.bents at rockwellcollins.com>
> 
> --
> History:
> v8:
>   - Split off from patch adding libvirt
> 
> v8->v9:
>   - N/A
> ---
>  package/libvirt/Config.in  | 36 +++++++++++++++++++++++++++++++++++
>  package/libvirt/libvirt.mk | 39 ++++++++++++++++++++++++++++++++++++--
>  2 files changed, 73 insertions(+), 2 deletions(-)
> 
> diff --git a/package/libvirt/Config.in b/package/libvirt/Config.in
> index ae5c8aac8a..ef9c10655f 100644
> --- a/package/libvirt/Config.in
> +++ b/package/libvirt/Config.in
> @@ -42,6 +42,42 @@ config BR2_PACKAGE_LIBVIRT_DAEMON
>  	  Build the libvirt daemon (libvirtd) otherwise build only the
>  	  utility programs.
>  
> +# Stateful drivers are useful only when building the daemon.
> +if BR2_PACKAGE_LIBVIRT_DAEMON
> +
> +config BR2_PACKAGE_LIBVIRT_QEMU
> +	bool "qemu"
> +	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp
> +	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12  # libseccomp
> +	depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
> +	select BR2_PACKAGE_HWDATA         # libpciaccess
> +	select BR2_PACKAGE_HWDATA_PCI_IDS # libpciaccess
> +	select BR2_PACKAGE_LIBSECCOMP
> +	select BR2_PACKAGE_QEMU
> +	select BR2_PACKAGE_QEMU_SYSTEM if BR2_PACKAGE_QEMU_CUSTOM_TARGETS = ""
> +	select BR2_PACKAGE_YAJL
> +	help
> +	  QEMU/KVM support
> +
> +comment "qemu support needs a toolchain w/ headers >= 3.12"
> +	depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
> +	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS
> +	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12

 This is redundant since libvirt itself already depends on headers >= 3.12. So I
removed the comment entirely.

> +
> +config BR2_PACKAGE_LIBVIRT_LXC
> +	bool "lxc"
> +	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # lxc

 This is also implied by headers >= 3.12. I've simplified the comment to just
mention gcc.

> +	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # lxc
> +	select BR2_PACKAGE_LXC
> +	help
> +	  Linux Container support
> +
> +comment "lxc needs a toolchain w/ threads, headers >= 3.0, dynamic library, gcc >= 4.7"
> +	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
> +	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
> +
> +endif
> +
>  endif
>  
>  comment "libvirt needs udev /dev management"
> diff --git a/package/libvirt/libvirt.mk b/package/libvirt/libvirt.mk
> index 8cc77f3c0e..22b99a4323 100644
> --- a/package/libvirt/libvirt.mk
> +++ b/package/libvirt/libvirt.mk
> @@ -23,9 +23,7 @@ LIBVIRT_CONF_OPTS = \
>  	-Ddriver_hyperv=disabled \
>  	-Ddriver_interface=enabled \
>  	-Ddriver_libxl=disabled \
> -	-Ddriver_lxc=disabled \
>  	-Ddriver_openvz=disabled \
> -	-Ddriver_qemu=disabled \
>  	-Ddriver_remote=enabled \
>  	-Ddriver_secrets=enabled \
>  	-Ddriver_vmware=disabled \
> @@ -130,6 +128,13 @@ else
>  LIBVIRT_CONF_OPTS += -Dlibvirtd=disabled -Ddriver_network=disabled
>  endif
>  
> +ifeq ($(BR2_PACKAGE_LIBVIRT_LXC),y)
> +LIBVIRT_CONF_OPTS += -Dlogin_shell=enabled -Ddriver_lxc=enabled
> +LIBVIRT_DEPENDENCIES += lxc

 Is this really a build time dependency? I've applied it as-is though.

> +else
> +LIBVIRT_CONF_OPTS += -Dlogin_shell=disabled -Ddriver_lxc=disabled
> +endif
> +
>  # Can't build nss plugin without network
>  ifeq ($(BR2_PACKAGE_LIBVIRT_DAEMON)$(BR2_PACKAGE_LIBNSS),yy)
>  LIBVIRT_CONF_OPTS += -Dnss=enabled
> @@ -152,6 +157,12 @@ else
>  LIBVIRT_CONF_OPTS += -Dpolkit=disabled
>  endif
>  
> +ifeq ($(BR2_PACKAGE_LIBVIRT_QEMU),y)
> +LIBVIRT_CONF_OPTS += -Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=kvm
> +else
> +LIBVIRT_CONF_OPTS += -Ddriver_qemu=disabled -Dqemu_user=no -Dqemu_group=no
> +endif
> +
>  ifeq ($(BR2_PACKAGE_READLINE),y)
>  LIBVIRT_CONF_OPTS += -Dreadline=enabled
>  LIBVIRT_DEPENDENCIES += readline
> @@ -214,13 +225,29 @@ define LIBVIRT_PERMISSIONS
>  	/var/lib/libvirt/filesystems             d  711  root  root  -  -  -  -  -
>  	/var/lib/libvirt/images                  d  711  root  root  -  -  -  -  -
>  	/var/lib/libvirt/network                 d  700  root  root  -  -  -  -  -
> +	/var/lib/libvirt/qemu                    d  751  qemu  kvm   -  -  -  -  -
> +	/var/lib/libvirt/qemu/autostart          d  700  root  root  -  -  -  -  -
> +	/var/lib/libvirt/qemu/networks           d  700  root  root  -  -  -  -  -
> +	/var/lib/libvirt/qemu/networks/autostart d  700  root  root  -  -  -  -  -
> +	/var/lib/libvirt/qemu/channel            d  755  qemu  kvm   -  -  -  -  -
> +	/var/lib/libvirt/qemu/channel/target     d  755  qemu  kvm   -  -  -  -  -
> +	/var/lib/libvirt/qemu/dump               d  755  qemu  kvm   -  -  -  -  -
> +	/var/lib/libvirt/qemu/nvram              d  755  qemu  kvm   -  -  -  -  -
> +	/var/lib/libvirt/qemu/save               d  755  qemu  kvm   -  -  -  -  -
> +	/var/lib/libvirt/qemu/snapshot           d  755  qemu  kvm   -  -  -  -  -
>  	/var/lib/libvirt/secrets                 d  700  root  root  -  -  -  -  -
>  	/var/lib/libvirt/storage                 d  755  root  root  -  -  -  -  -
>  	/var/lib/libvirt/storage/autostart       d  755  root  root  -  -  -  -  -
>  	/var/cache/libvirt                       d  711  root  root  -  -  -  -  -
> +	/var/cache/libvirt/lxc                   d  750  root  root  -  -  -  -  -
> +	/var/cache/libvirt/qemu                  d  750  qemu  kvm   -  -  -  -  -
> +	/var/cache/libvirt/qemu/capabilities     d  755  root  root  -  -  -  -  -
>  	/var/log/libvirt                         d  700  root  root  -  -  -  -  -
> +	/var/log/libvirt/lxc                     d  750  root  root  -  -  -  -  -
> +	/var/log/libvirt/qemu                    d  750  root  root  -  -  -  -  -
>  	/var/log/swtpm                           d  755  root  root  -  -  -  -  -
>  	/var/log/swtpm/libvirt                   d  755  root  root  -  -  -  -  -
> +	/var/log/swtpm/libvirt/qemu              d  711  root  root  -  -  -  -  -

 As noted, var/cache and var/log are tmpfs by default. Therefore, the init
script should create these directories.

 I've committed it unchanged, though.

 In case it wasn't clear yet: series applied to master, thanks.

 Regards,
 Arnout

>  endef
>  
>  # libvirt may need to create persistent files (e.g. VM definitions) in these
> @@ -231,14 +258,22 @@ endef
>  define LIBVIRT_CREATE_SYMLINKS
>  	$(INSTALL) -m 700 -d $(TARGET_DIR)/etc/libvirt
>  	$(INSTALL) -m 755 -d $(TARGET_DIR)/var/lib/libvirt
> +	$(INSTALL) -m 751 -d $(TARGET_DIR)/var/lib/libvirt/qemu
>  	$(INSTALL) -m 700 -d $(TARGET_DIR)/var/lib/libvirt/secrets
>  	$(INSTALL) -m 755 -d $(TARGET_DIR)/var/lib/libvirt/storage
> +	ln -s -f ../../var/lib/libvirt/qemu $(TARGET_DIR)/etc/libvirt/
>  	ln -s -f ../../var/lib/libvirt/secrets $(TARGET_DIR)/etc/libvirt/
>  	ln -s -f ../../var/lib/libvirt/storage $(TARGET_DIR)/etc/libvirt/
>  endef
>  
>  LIBVIRT_PRE_INSTALL_TARGET_HOOKS += LIBVIRT_CREATE_SYMLINKS
>  
> +ifeq ($(BR2_PACKAGE_LIBVIRT_QEMU),y)
> +define LIBVIRT_USERS
> +	qemu -1 kvm -1 * - - - Libvirt qemu/kvm daemon
> +endef
> +endif
> +
>  ifeq ($(BR2_PACKAGE_LIBVIRT_DAEMON),y)
>  define LIBVIRT_INSTALL_INIT_SYSV
>  	$(INSTALL) -D -m 0755 package/libvirt/S91virtlogd $(TARGET_DIR)/etc/init.d/S91virtlogd
> 


More information about the buildroot mailing list