![Pascal de Bruijn](/assets/img/avatar_default.png)
The hyperv integration services offer convenience features for guest operating systems running on the microsoft hyperv virtualization platform. They roughly are for HyperV what openvmtools are for VMWare. The installed binary names are derived from what seems common in large distros like RedHat: linux kernel source name -> installed binary name hv_vss_daemon -> hypervvssd hv_kvp_daemon -> hypervkvpd hv_fcopy_daemon -> hypervfcopyd Each tool was introduced at different points in the kernel history, so we need to check each of them. We provide a single init script that is responsible for starting all enabled programs. The global status will be the status of the last program to fail to start, or empty (i.e. success) if they all started successfuly. However, we provide one systemd unit per program, because it is not easy to use a single unit to start (and monitor) more than one executable. Additionally, we do not provide a template that is filled at tinstall time either, because it does not gain much (three simple units vs. a template and some replacement code in the .mk). Finally, the key-value daemon uses a few helper scripts to get/set the network config. All are optional (their presence is checked before running them), but one, hv_set_ifconfig. However, it is not strictly speaking required either, so we just symlink it to /bin/true to avoid any warning at runtime. Providing actual helpers is left to the end user, to adapt to their own environment. Signed-off-by: Pascal de Bruijn <p.debruijn@unilogic.nl> [yann.morin.1998@free.fr: - aggregate all three tools in a single sub-package - introduce the main HV option, use a sub-option for each tool - aggregate the three init scripts into one - don't install the helpers; symlink the mandatory one - don't create symlinks for systemd units (systemctl preset-all does it for us now) - expand commit log ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
62 lines
1.8 KiB
Makefile
62 lines
1.8 KiB
Makefile
################################################################################
|
|
#
|
|
# hv_fcopy_daemon
|
|
#
|
|
################################################################################
|
|
|
|
LINUX_TOOLS += hv
|
|
|
|
# The programs to build, as known by the kernel:
|
|
HV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON) += hv_kvp_daemon
|
|
HV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON) += hv_fcopy_daemon
|
|
HV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON) += hv_vss_daemon
|
|
|
|
# Give each tools the name most distros install them as:
|
|
HV_hv_kvp_daemon = hypervkvpd
|
|
HV_hv_fcopy_daemon = hypervfcopyd
|
|
HV_hv_vss_daemon = hypervvssd
|
|
|
|
HV_MAKE_OPTS = CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)"
|
|
|
|
define HV_BUILD_CMDS
|
|
$(Q)for prog in $(HV_PROGS_y); do \
|
|
if test ! -f $(LINUX_DIR)/tools/hv/$${prog}.c ; then \
|
|
printf "Your kernel version is too old and does not have the HyperV %s tool." "$${prog}" ; \
|
|
exit 1 ; \
|
|
fi; \
|
|
done
|
|
|
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/hv \
|
|
$(HV_MAKE_OPTS) \
|
|
$(HV_PROGS_y)
|
|
endef
|
|
|
|
ifeq ($(BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON),y)
|
|
define HV_KVP_HELPER
|
|
@mkdir -p $(TARGET_DIR)/usr/libexec/hypervkvpd
|
|
$(Q)ln -sf /bin/true $(TARGET_DIR)/usr/libexec/hypervkvpd/hv_set_ifconfig
|
|
endef
|
|
endif
|
|
|
|
define HV_INSTALL_TARGET_CMDS
|
|
$(foreach prog,$(HV_PROGS_y), \
|
|
$(INSTALL) -m 0755 -D $(LINUX_DIR)/tools/hv/$(prog) \
|
|
$(TARGET_DIR)/usr/sbin/$(HV_$(prog))
|
|
)
|
|
$(HV_KVP_HELPER)
|
|
endef
|
|
|
|
define HV_INSTALL_INIT_SYSTEMD
|
|
$(foreach prog,$(HV_PROGS_y), \
|
|
$(INSTALL) -m 0644 -D package/linux-tools/$(HV_$(prog)).service \
|
|
$(TARGET_DIR)/usr/lib/systemd/system/$(HV_$(prog)).service
|
|
)
|
|
endef
|
|
|
|
define HV_INSTALL_INIT_SYSV
|
|
$(INSTALL) -m 0755 -D package/linux-tools/S10hyperv \
|
|
$(TARGET_DIR)/etc/init.d/S10hyperv
|
|
$(SED) 's/@PROGS@/$(foreach prog,$(HV_PROGS_y),$(HV_$(prog)))/' \
|
|
$(TARGET_DIR)/etc/init.d/S10hyperv
|
|
endef
|