feat: add support for hyper-v virtual machine

Message ID 20260706114602.2309505-1-gouravsingh@siemens.com
State New
Headers show
Series feat: add support for hyper-v virtual machine | expand

Commit Message

Gourav Singh July 6, 2026, 11:46 a.m. UTC
Introduce a new `hyper-v` machine targeting Microsoft Hyper-V virtual
machines on amd64. The machine uses WIC with an EFI partition layout,
GRUB as the bootloader, and produces a `.vhdx` disk image alongside
the `.wic` image.

Add Kconfig entry, kas machine yaml, machine config, and multiconfig
files for bullseye, bookworm, and trixie. Register the new multiconfigs
in mc.conf and document the addition in RECIPE-API-CHANGELOG.md.

Signed-off-by: Gourav Singh <gouravsingh@siemens.com>
---
 RECIPE-API-CHANGELOG.md                       | 24 +++++++++++++++++++
 kas/machine/Kconfig                           |  9 +++++++
 kas/machine/hyper-v.yaml                      |  7 ++++++
 meta-isar/conf/machine/hyper-v.conf           | 16 +++++++++++++
 meta-isar/conf/mc.conf                        |  3 +++
 .../conf/multiconfig/hyper-v-bookworm.conf    |  7 ++++++
 .../conf/multiconfig/hyper-v-bullseye.conf    |  7 ++++++
 .../conf/multiconfig/hyper-v-trixie.conf      |  7 ++++++
 8 files changed, 80 insertions(+)
 create mode 100644 kas/machine/hyper-v.yaml
 create mode 100644 meta-isar/conf/machine/hyper-v.conf
 create mode 100644 meta-isar/conf/multiconfig/hyper-v-bookworm.conf
 create mode 100644 meta-isar/conf/multiconfig/hyper-v-bullseye.conf
 create mode 100644 meta-isar/conf/multiconfig/hyper-v-trixie.conf

Patch

diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index 5d2514c0..3c70d681 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -1087,3 +1087,27 @@  and `arch=all` binary packages). Recipes for such mixed packages should append
 `PROVIDES="foo-doc-archall"` for an `arch=all` binary package `foo-doc`).
 Consumers can then simply reference the package by its original name (e.g.,
 `foo-doc`).
+
+### Add Hyper-V machine support
+
+A new machine `hyper-v` has been introduced for building images
+targeting Microsoft Hyper-V virtual machines on amd64.
+
+The machine produces a `.vhdx` disk image using the WIC image type
+and GRUB as the bootloader. It supports the following Debian codenames:
+
+- `bullseye`
+- `bookworm`
+- `trixie`
+
+To build a Hyper-V image:
+
+```bash
+./kas/kas-container --ssh-dir ~/.ssh/ menu
+```
+
+- Select machine: `hyper-v`
+- Select distro and image type
+
+The output `.vhdx` file will be placed in `DEPLOY_DIR_IMAGE` alongside
+the `.wic` image.
diff --git a/kas/machine/Kconfig b/kas/machine/Kconfig
index 6151716a..9bfdee38 100644
--- a/kas/machine/Kconfig
+++ b/kas/machine/Kconfig
@@ -237,6 +237,14 @@  config MACHINE_VMWARE
 	select CODENAME_BULLSEYE
 	select ARCH_AMD64
 
+config MACHINE_HYPER_V
+	bool "hyper-v"
+	select DISTRO_DEBIAN
+	select CODENAME_BULLSEYE
+	select CODENAME_BOOKWORM
+	select CODENAME_TRIXIE
+	select ARCH_AMD64
+
 config MACHINE_X86_PC
 	bool "x86 PC"
 	select DISTRO_DEBIAN
@@ -280,6 +288,7 @@  config KAS_INCLUDE_MACHINE
 	default "kas/machine/stm32mp15x.yaml" if MACHINE_STM32MP15X
 	default "kas/machine/virtualbox.yaml" if MACHINE_VIRTUALBOX
 	default "kas/machine/vmware.yaml" if MACHINE_VMWARE
+	default "kas/machine/hyper-v.yaml" if MACHINE_HYPER_V
 	default "kas/machine/x86-pc.yaml" if MACHINE_X86_PC
 
 endmenu
diff --git a/kas/machine/hyper-v.yaml b/kas/machine/hyper-v.yaml
new file mode 100644
index 00000000..e7ff1dc5
--- /dev/null
+++ b/kas/machine/hyper-v.yaml
@@ -0,0 +1,7 @@ 
+# This software is a part of ISAR.
+# Copyright (C) 2026 ilbers GmbH
+
+header:
+  version: 14
+
+machine: hyper-v
diff --git a/meta-isar/conf/machine/hyper-v.conf b/meta-isar/conf/machine/hyper-v.conf
new file mode 100644
index 00000000..e43483cd
--- /dev/null
+++ b/meta-isar/conf/machine/hyper-v.conf
@@ -0,0 +1,16 @@ 
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+DISTRO_ARCH ?= "amd64"
+
+KERNEL_NAME ?= "amd64"
+
+WKS_FILE ?= "sdimage-efi"
+
+IMAGER_INSTALL:wic += "${GRUB_BOOTLOADER_INSTALL}"
+
+IMAGE_FSTYPES ?= "ova"
+VMDK_SUBFORMAT = "monolithicSparse"
+VIRTUAL_MACHINE_IMAGE_TYPE = "vhdx"
diff --git a/meta-isar/conf/mc.conf b/meta-isar/conf/mc.conf
index 6c7d7840..77118996 100644
--- a/meta-isar/conf/mc.conf
+++ b/meta-isar/conf/mc.conf
@@ -45,6 +45,9 @@  BBMULTICONFIG = " \
     hikey-bullseye \
     hikey-bookworm \
     hikey-trixie \
+    hyper-v-bullseye \
+    hyper-v-bookworm \
+    hyper-v-trixie \
     phyboard-mira-bullseye \
     phyboard-mira-bookworm \
     phyboard-mira-trixie \
diff --git a/meta-isar/conf/multiconfig/hyper-v-bookworm.conf b/meta-isar/conf/multiconfig/hyper-v-bookworm.conf
new file mode 100644
index 00000000..0b52d69f
--- /dev/null
+++ b/meta-isar/conf/multiconfig/hyper-v-bookworm.conf
@@ -0,0 +1,7 @@ 
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "hyper-v"
+DISTRO ?= "debian-bookworm"
diff --git a/meta-isar/conf/multiconfig/hyper-v-bullseye.conf b/meta-isar/conf/multiconfig/hyper-v-bullseye.conf
new file mode 100644
index 00000000..9dfbbd43
--- /dev/null
+++ b/meta-isar/conf/multiconfig/hyper-v-bullseye.conf
@@ -0,0 +1,7 @@ 
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "hyper-v"
+DISTRO ?= "debian-bullseye"
diff --git a/meta-isar/conf/multiconfig/hyper-v-trixie.conf b/meta-isar/conf/multiconfig/hyper-v-trixie.conf
new file mode 100644
index 00000000..c6299582
--- /dev/null
+++ b/meta-isar/conf/multiconfig/hyper-v-trixie.conf
@@ -0,0 +1,7 @@ 
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "hyper-v"
+DISTRO ?= "debian-trixie"