Hi,
On 08.10.2014 14:08, Ning Ye wrote: > Sorry for the late reply. To answer your questions, first I am trying to > save the hassle with another target, but hyper-v supports are enabled either > by manually selecting the hyper-v modules under virtualization or build VHD > disk output. If you are using default x86 or x86_64 target, it wouldn't > added hyper-v unless you turned them on. > > I couldn't make hyper-v module support work, especially the disk module. It > hangs if it is kernel module only. My guess is that it needs the disk > support in order to load other modules. Because the hyper-v is only enabled > for hyper-v environment, building it into the kernel doesn't seem to waste > any resources. I think its better to create a seperate subtarget for x86_64? Do you have any test images for hyper-v that I could test? > Best, > > Ning cheers thomas > > -----Original Message----- > From: Hauke Mehrtens [mailto:ha...@hauke-m.de] > Sent: Saturday, September 13, 2014 4:05 PM > To: Ning Ye; 'OpenWrt Development List' > Subject: Re: [OpenWrt-Devel] Hyper-V Support for X86 or X86_64 > > On 07/28/2014 12:37 AM, Ning Ye wrote: >> Hi All, >> >> Hyper-V support for X86 or X86_64 were noticeably missing. There is a > previous patch for Kernel 3.3 but never maintained or merged into trunk. > Here's my take on adding the Hyper-V support for the current kernel. No new > sub targets or profiles are created, as long as the target is x86 or x86_64. > The generic works well or any other profiles. >> Also added a new VHD target image menu . The latest stable qemu-img > supports Hyper-V vhd and vhdx. The old & current qemu 0.14.1 builds invalid > vhd images. I am working on updating it to 2.0.0. Currently I am > converting vmdk into vhd using third party tools. >> Ning Ye >> Signed-off-by: Ning Ye <n...@oaklight.us> >> >> ------------ >> diff --git a/config/Config-images.in b/config/Config-images.in old >> mode 100644 new mode 100755 index 39e51e4..7020f84 >> --- a/config/Config-images.in >> +++ b/config/Config-images.in >> @@ -239,6 +239,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 OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES diff --git >> a/package/kernel/linux/modules/virtual.mk >> b/package/kernel/linux/modules/virtual.mk >> old mode 100644 >> new mode 100755 >> index 190d844..a67d71c >> --- a/package/kernel/linux/modules/virtual.mk >> +++ b/package/kernel/linux/modules/virtual.mk >> @@ -186,3 +186,85 @@ 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 \ > This adds some code to the kernel. I think it should be better to just > extend the kvm_guest subtarget and the x86_64 target with support for > Hyper-V. > >> + CONFIG_PARAVIRT=n \ >> + CONFIG_HYPERV=y > It is possible to build this as a module why is it build into the kernel? > >> + FILES:=$(LINUX_DIR)/drivers/hv/hv_balloon.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 >> + 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 >> + 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 >> + 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.10 >> b/target/linux/x86/config-3.10 old mode 100644 new mode 100755 index >> 69f2f08..3fa6344 >> --- a/target/linux/x86/config-3.10 >> +++ b/target/linux/x86/config-3.10 >> @@ -193,6 +193,14 @@ 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_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 old mode 100644 new mode 100755 >> index 5983718..80ef5cf >> --- a/target/linux/x86/image/Makefile >> +++ b/target/linux/x86/image/Makefile >> @@ -178,6 +178,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 -f9 $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img >> gzip -f9 $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img >> @@ -252,6 +261,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 diff --git >> a/target/linux/x86_64/config-default >> b/target/linux/x86_64/config-default >> old mode 100644 >> new mode 100755 >> index 48145be..865aa81 >> --- a/target/linux/x86_64/config-default >> +++ b/target/linux/x86_64/config-default >> @@ -258,6 +258,13 @@ CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_INTEL=y # >> CONFIG_HW_RANDOM_VIRTIO is not set CONFIG_HYPERVISOR_GUEST=y >> +# 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_FB_HYPERV is not set >> +# CONFIG_HID_HYPERV_MOUSE is not set >> CONFIG_HZ_PERIODIC=y >> # CONFIG_I7300_IDLE is not set >> CONFIG_I8253_LOCK=y >> diff --git a/target/linux/x86_64/image/Makefile >> b/target/linux/x86_64/image/Makefile >> old mode 100644 >> new mode 100755 >> index c2f1ce9..efa5fa9 >> --- a/target/linux/x86_64/image/Makefile >> +++ b/target/linux/x86_64/image/Makefile >> @@ -156,6 +156,16 @@ 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 -f9 $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img >> gzip -f9 $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img >> @@ -199,6 +209,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 > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel