Add qemu guest agent (#505)

* Add qemu guest agent

* Fix make file

* Fix targets

* Convert it to autobuild

* Fix paths

* fix target

* Fix options

* Fix startup

* Update kernel

* Fix state dir

* Only load on kvm
This commit is contained in:
Pascal Vizeli 2019-12-12 10:44:41 +01:00 committed by GitHub
parent d340e79bea
commit 4c9a4aadc8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 137 additions and 0 deletions

View File

@ -4,3 +4,4 @@ source "$BR2_EXTERNAL_HASSOS_PATH/package/apparmor/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-bcm43xx/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-rtl8723/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/hardkernel-boot/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/qemu-guest-agent/Config.in"

View File

@ -5,6 +5,7 @@ CONFIG_VMWARE_PVSCSI=y
CONFIG_VMWARE_VMCI_VSOCKETS=y
CONFIG_VMWARE_VMCI=y
CONFIG_VMWARE_BALLOON=y
CONFIG_VMWARE_PVSCSI=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_PCI=y
@ -12,6 +13,9 @@ CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_CONSOLE=m
CONFIG_VIRTIO_VSOCKETS=m
CONFIG_SCSI_VIRTIO=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_SCSI_LOWLEVEL=y
@ -27,4 +31,5 @@ CONFIG_HYPERV_BALLOON=m
CONFIG_HYPERV_KEYBOARD=m
CONFIG_HYPERV_STORAGE=y
CONFIG_HYPERV_NET=y
CONFIG_HYPERV_VSOCKETS=m
CONFIG_FB_HYPERV=y

View File

@ -56,6 +56,7 @@ BR2_PACKAGE_TINI=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_PACKAGE_DOCKER_CLI=y
BR2_PACKAGE_OPENVMTOOLS=y
BR2_PACKAGE_QEMU_GUEST_AGENT=y
BR2_PACKAGE_RAUC=y
BR2_PACKAGE_RAUC_NETWORK=y
BR2_PACKAGE_RNG_TOOLS=y

View File

@ -0,0 +1,9 @@
config BR2_PACKAGE_QEMU_GUEST_AGENT
depends on BR2_USE_MMU # libglib2
depends on BR2_USE_WCHAR # libglib2
depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
select BR2_PACKAGE_LIBGLIB2
select BR2_PACKAGE_ZLIB
bool "QEMU Guest Agent"
help
QEMU guest agent for qemu based virtualisations

View File

@ -0,0 +1,110 @@
################################################################################
#
# qemu-guest-agent
#
################################################################################
QEMU_GUEST_AGENT_VERSION = 3.1.1.1
QEMU_GUEST_AGENT_SOURCE = qemu-$(QEMU_GUEST_AGENT_VERSION).tar.xz
QEMU_GUEST_AGENT_SITE = http://download.qemu.org
QEMU_GUEST_AGENT_LICENSE = GPL-2.0, LGPL-2.1, MIT, BSD-3-Clause, BSD-2-Clause, Others/BSD-1c
QEMU_GUEST_AGENT_LICENSE_FILES = COPYING COPYING.LIB
# NOTE: there is no top-level license file for non-(L)GPL licenses;
# the non-(L)GPL license texts are specified in the affected
# individual source files.
QEMU_GUEST_AGENT_DEPENDENCIES = host-pkgconf libglib2 zlib
# Need the LIBS variable because librt and libm are
# not automatically pulled. :-(
QEMU_GUEST_AGENT_LIBS = -lrt -lm
QEMU_GUEST_AGENT_VARS = LIBTOOL=$(HOST_DIR)/bin/libtool
QEMU_GUEST_AGENT_OPTS = --enable-guest-agent
# Override CPP, as it expects to be able to call it like it'd
# call the compiler.
define QEMU_GUEST_AGENT_CONFIGURE_CMDS
( cd $(@D); \
LIBS='$(QEMU_GUEST_AGENT_LIBS)' \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
CPP="$(TARGET_CC) -E" \
$(QEMU_GUEST_AGENT_VARS) \
./configure \
--prefix=/usr \
--localstatedir=/var \
--cross-prefix=$(TARGET_CROSS) \
--audio-drv-list= \
--disable-kvm \
--disable-linux-user \
--disable-linux-aio \
--disable-xen \
--disable-docs \
--disable-curl \
--disable-gnutls \
--disable-gtk \
--disable-vte \
--disable-vnc-jpeg \
--disable-opengl \
--disable-usb-redir \
--disable-sdl \
--disable-system \
--disable-user \
--disable-guest-agent \
--disable-nettle \
--disable-gcrypt \
--disable-curses \
--disable-vnc \
--disable-virtfs \
--disable-brlapi \
--disable-fdt \
--disable-bluez \
--disable-kvm \
--disable-rdma \
--disable-vde \
--disable-netmap \
--disable-cap-ng \
--disable-attr \
--disable-vhost-net \
--disable-spice \
--disable-rbd \
--disable-libiscsi \
--disable-libnfs \
--disable-smartcard \
--disable-libusb \
--disable-usb-redir \
--disable-lzo \
--disable-snappy \
--disable-bzip2 \
--disable-seccomp \
--disable-coroutine-pool \
--disable-glusterfs \
--disable-tpm \
--disable-numa \
--disable-blobs \
--disable-capstone \
--disable-tools \
--disable-tcg-interpreter \
$(QEMU_GUEST_AGENT_OPTS) \
)
endef
define QEMU_GUEST_AGENT_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
endef
define QEMU_GUEST_AGENT_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(QEMU_GUEST_AGENT_MAKE_ENV) DESTDIR=$(TARGET_DIR) install
endef
define QEMU_GUEST_AGENT_INSTALL_INIT_SYSTEMD
$(INSTALL) -D -m 644 $(QEMU_GUEST_AGENT_PKGDIR)/qemu-guest.service \
$(TARGET_DIR)/usr/lib/systemd/system/qemu-guest.service
$(INSTALL) -d $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
ln -fs ../../../../usr/lib/systemd/system/qemu-guest.service \
$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/qemu-guest.service
endef
$(eval $(generic-package))

View File

@ -0,0 +1,11 @@
[Unit]
Description=QEMU Guest Agent
After=syslog.target network.target
ConditionVirtualization=kvm
[Service]
ExecStart=/usr/bin/qemu-ga -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0
Restart=on-failure
[Install]
WantedBy=multi-user.target