kernel: Update Hyper-V support for Linux 3.18 and OpenWRT trunk. Now requires at least 96 MB memory for VM.
Signed-off-by: Ning Ye <[email protected]> --- config/Config-images.in | 10 ++++ package/kernel/linux/modules/virtual.mk | 86 +++++++++++++++++++++++++++++++++ target/linux/x86/config-3.18 | 9 ++++ target/linux/x86/image/Makefile | 10 ++++ 4 files changed, 115 insertions(+) diff --git a/config/Config-images.in b/config/Config-images.in index a60dd50..ff16ef0 100644 --- a/config/Config-images.in +++ b/config/Config-images.in @@ -238,6 +238,16 @@ menu "Target Images" select TARGET_IMAGES_PAD select PACKAGE_kmod-e1000 + config VHD_IMAGES + bool "Build Hyper-V image files (VHD)" + depends on TARGET_x86 || TARGET_x86_64 + select GRUB_IMAGES + select TARGET_IMAGES_PAD + select PACKAGE_kmod-hyperv-balloon + select PACKAGE_kmod-hyperv-net-vsc + select PACKAGE_kmod-hyperv-util + select PACKAGE_kmod-hyperv-storage + config TARGET_IMAGES_PAD bool "Pad images to filesystem size (for JFFS2)" depends on GRUB_IMAGES diff --git a/package/kernel/linux/modules/virtual.mk b/package/kernel/linux/modules/virtual.mk index 61a8a87..2d9f8dd 100644 --- a/package/kernel/linux/modules/virtual.mk +++ b/package/kernel/linux/modules/virtual.mk @@ -169,3 +169,89 @@ define KernelPackage/xen-pcidev/description endef $(eval $(call KernelPackage,xen-pcidev)) + +# +# Hyper-V Drives depends on x86 or x86_64. +# +define KernelPackage/hyperv-balloon + SUBMENU:=$(VIRTUAL_MENU) + DEPENDS:=@(TARGET_x86||TARGET_x86_64) + TITLE:=Microsoft Hyper-V Balloon Driver + KCONFIG:= \ + CONFIG_HYPERV_BALLOON \ + CONFIG_HYPERVISOR_GUEST=y \ + CONFIG_PARAVIRT=n \ + CONFIG_HYPERV=y + FILES:=$(LINUX_DIR)/drivers/hv/hv_balloon.ko \ + $(LINUX_DIR)/drivers/hv/hv_vmbus.ko + AUTOLOAD:=$(call AutoLoad,06,hv_balloon) endef + +define KernelPackage/hyperv-balloon/description + Microsofot Hyper-V balloon driver. +endef + +$(eval $(call KernelPackage,hyperv-balloon)) + +define KernelPackage/hyperv-net-vsc + SUBMENU:=$(VIRTUAL_MENU) + DEPENDS:=@(TARGET_x86||TARGET_x86_64) + TITLE:=Microsoft Hyper-V Network Driver + KCONFIG:= \ + CONFIG_HYPERV_NET \ + CONFIG_HYPERVISOR_GUEST=y \ + CONFIG_PARAVIRT=n \ + CONFIG_HYPERV=y + FILES:=$(LINUX_DIR)/drivers/net/hyperv/hv_netvsc.ko \ + $(LINUX_DIR)/drivers/hv/hv_vmbus.ko + AUTOLOAD:=$(call AutoLoad,35,hv_netvsc) endef + +define KernelPackage/hyperv-net-vsc/description + Microsoft Hyper-V Network Driver +endef + +$(eval $(call KernelPackage,hyperv-net-vsc)) + +define KernelPackage/hyperv-util + SUBMENU:=$(VIRTUAL_MENU) + DEPENDS:=@(TARGET_x86||TARGET_x86_64) + TITLE:=Microsoft Hyper-V Utility Driver + KCONFIG:= \ + CONFIG_HYPERV_UTILS \ + CONFIG_HYPERVISOR_GUEST=y \ + CONFIG_PARAVIRT=n \ + CONFIG_HYPERV=y + FILES:=$(LINUX_DIR)/drivers/hv/hv_util.ko \ + $(LINUX_DIR)/drivers/hv/hv_vmbus.ko + AUTOLOAD:=$(call AutoLoad,10,hv_util) endef + +define KernelPackage/hyperv-util/description + Microsoft Hyper-V Utility Driver +endef + +$(eval $(call KernelPackage,hyperv-util)) + +# +# Hyper-V Storage Drive needs to be in kernel rather than module to load the root fs. +# +define KernelPackage/hyperv-storage + SUBMENU:=$(VIRTUAL_MENU) + DEPENDS:=@(TARGET_x86||TARGET_x86_64) +kmod-scsi-core + TITLE:=Microsoft Hyper-V Storage Driver + KCONFIG:= \ + CONFIG_HYPERV_STORAGE=y \ + CONFIG_HYPERVISOR_GUEST=y \ + CONFIG_PARAVIRT=n \ + CONFIG_HYPERV=y + FILES:=$(LINUX_DIR)/drivers/scsi/hv_storvsc.ko \ + $(LINUX_DIR)/drivers/hv/hv_vmbus.ko + AUTOLOAD:=$(call AutoLoad,40,hv_storvsc) endef + +define KernelPackage/hyperv-storage/description + Microsoft Hyper-V Storage Driver +endef + +$(eval $(call KernelPackage,hyperv-storage)) diff --git a/target/linux/x86/config-3.18 b/target/linux/x86/config-3.18 index bb647c8..8ac3709 100644 --- a/target/linux/x86/config-3.18 +++ b/target/linux/x86/config-3.18 @@ -204,6 +204,15 @@ CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_GEODE=y CONFIG_HW_RANDOM_VIA=y # CONFIG_HYPERVISOR_GUEST is not set +# CONFIG_HYPERV is not set +# CONFIG_HYPERV_BALLOON is not set +# CONFIG_HYPERV_NET is not set +# CONFIG_HYPERV_STORAGE is not set +# CONFIG_HYPERV_UTILS is not set +# CONFIG_HYPERV_KEYBOARD is not set +# CONFIG_FB_HYPERV is not set +# CONFIG_HID_HYPERV_MOUSE is not set +# CONFIG_VMWARE_BALLOON is not set CONFIG_HZ_PERIODIC=y CONFIG_I8253_LOCK=y # CONFIG_I8K is not set diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index 8e56372..50507a7 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -148,6 +148,15 @@ ifneq ($(CONFIG_VMDK_IMAGES),) endef endif +ifneq ($(CONFIG_VHD_IMAGES),) + define Image/Build/vhd + rm $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhd || true + qemu-img convert -f raw -O vpc \ + $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img \ + $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhd + endef +endif + define Image/Build/gzip gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img @@ -219,6 +228,7 @@ define Image/Build $(call Image/Build/grub2,$(1)) $(call Image/Build/vdi,$(1)) $(call Image/Build/vmdk,$(1)) + $(call Image/Build/vhd,$(1)) $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img else $(CP) $(KDIR)/root.iso $(BIN_DIR)/$(IMG_PREFIX).iso -- 1.9.1 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
