x86: added support to generate VHDX images
authorOldřich Jedlička <oldium.pro@gmail.com>
Sat, 9 Jan 2021 21:23:09 +0000 (22:23 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 5 Dec 2021 17:49:14 +0000 (18:49 +0100)
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 <oldium.pro@gmail.com>
config/Config-images.in
include/image-commands.mk
target/linux/x86/Makefile
target/linux/x86/image/Makefile

index 92720fb84d506650267228ac631b474525aa93cb..49e5330ffe20635fc493ce7aa579a35f3a45fdd2 100644 (file)
@@ -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
index f0557936c9d7281199bb924a1301ba04f81cc470..97176f7d7b443b46066ce9c474e715fe3d3d4296 100644 (file)
@@ -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 <optional extra arguments to qemu-img binary>
 define Build/qemu-image
        if command -v qemu-img; then \
                qemu-img convert -f raw -O $1 $@ $@.new; \
index fbad527e0ac3239647a9d1eabcaf8fd751396973..e42d87fbc99a86975a3f644eaa927a5dd539c976 100644 (file)
@@ -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
index f61e4ff802a377a752f262abb5a3dad38cee91d0..322131c2a4881560fa234b188982e21e62c20efa 100644 (file)
@@ -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 :=