From fd4ad6cae88d009e9560e4ee902bf20a5b42d36e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Old=C5=99ich=20Jedli=C4=8Dka?= Date: Sat, 9 Jan 2021 22:23:09 +0100 Subject: [PATCH] x86: added support to generate VHDX images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added support to generate dynamic-sized VHDX images for Hyper-V. Compile-tested on x86 and run-tested on Windows 10 21H2 (Hyper-V). Signed-off-by: Oldřich Jedlička --- config/Config-images.in | 6 ++++++ include/image-commands.mk | 2 +- target/linux/x86/Makefile | 2 +- target/linux/x86/image/Makefile | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/config/Config-images.in b/config/Config-images.in index 92720fb84d..49e5330ffe 100644 --- a/config/Config-images.in +++ b/config/Config-images.in @@ -272,6 +272,12 @@ menu "Target Images" depends on GRUB_IMAGES || GRUB_EFI_IMAGES select PACKAGE_kmod-e1000 + config VHDX_IMAGES + bool "Build Hyper-V image files (VHDX)" + depends on TARGET_x86 + depends on GRUB_IMAGES || GRUB_EFI_IMAGES + select PACKAGE_kmod-e1000 + config TARGET_IMAGES_GZIP bool "GZip images" depends on TARGET_ROOTFS_EXT4FS || TARGET_x86 || TARGET_armvirt || TARGET_malta diff --git a/include/image-commands.mk b/include/image-commands.mk index f0557936c9..97176f7d7b 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -395,7 +395,7 @@ define Build/patch-cmdline endef # Convert a raw image into a $1 type image. -# E.g. | qemu-image vdi +# E.g. | qemu-image vdi define Build/qemu-image if command -v qemu-img; then \ qemu-img convert -f raw -O $1 $@ $@.new; \ diff --git a/target/linux/x86/Makefile b/target/linux/x86/Makefile index fbad527e0a..e42d87fbc9 100644 --- a/target/linux/x86/Makefile +++ b/target/linux/x86/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk ARCH:=i386 BOARD:=x86 BOARDNAME:=x86 -FEATURES:=squashfs ext4 vdi vmdk pcmcia targz fpu boot-part rootfs-part +FEATURES:=squashfs ext4 vdi vmdk vhdx pcmcia targz fpu boot-part rootfs-part SUBTARGETS:=generic legacy geode 64 KERNEL_PATCHVER:=5.10 diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index f61e4ff802..322131c2a4 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -109,6 +109,7 @@ define Device/Default IMAGE/combined.img.gz := grub-config pc | combined | grub-install | gzip | append-metadata IMAGE/combined.vdi := grub-config pc | combined | grub-install | qemu-image vdi IMAGE/combined.vmdk := grub-config pc | combined | grub-install | qemu-image vmdk + IMAGE/combined.vhdx := grub-config pc | combined | grub-install | qemu-image vhdx -o subformat=dynamic IMAGE/rootfs.img := append-rootfs | pad-to $(ROOTFS_PARTSIZE) IMAGE/rootfs.img.gz := append-rootfs | pad-to $(ROOTFS_PARTSIZE) | gzip ARTIFACT/image-efi.iso := grub-config iso | iso efi @@ -116,6 +117,7 @@ define Device/Default IMAGE/combined-efi.img.gz := grub-config efi | combined efi | grub-install efi | gzip | append-metadata IMAGE/combined-efi.vdi := grub-config efi | combined efi | grub-install efi | qemu-image vdi IMAGE/combined-efi.vmdk := grub-config efi | combined efi | grub-install efi | qemu-image vmdk + IMAGE/combined-efi.vhdx := grub-config efi | combined efi | grub-install efi | qemu-image vhdx -o subformat=dynamic ifeq ($(CONFIG_TARGET_IMAGES_GZIP),y) IMAGES-y := rootfs.img.gz IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.img.gz @@ -140,6 +142,10 @@ define Device/Default IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.vmdk IMAGES-$$(CONFIG_GRUB_EFI_IMAGES) += combined-efi.vmdk endif + ifeq ($(CONFIG_VHDX_IMAGES),y) + IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.vhdx + IMAGES-$$(CONFIG_GRUB_EFI_IMAGES) += combined-efi.vhdx + endif IMAGES := $$(IMAGES-y) ARTIFACTS := $$(ARTIFACTS-y) SUPPORTED_DEVICES :=