[v2,1/1] feat: add support for hyper-v virtual machine

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

Commit Message

Gourav Singh July 7, 2026, 10:52 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 via the ova
image type, which depends on wic as an intermediate build artifact.

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                          |  9 +++++++++
 kas/machine/Kconfig                              |  9 +++++++++
 kas/machine/hyper-v-amd64.yaml                   |  9 +++++++++
 meta-isar/conf/machine/hyper-v-amd64.conf        | 16 ++++++++++++++++
 meta-isar/conf/mc.conf                           |  3 +++
 .../conf/multiconfig/hyper-v-amd64-bookworm.conf |  7 +++++++
 .../conf/multiconfig/hyper-v-amd64-bullseye.conf |  7 +++++++
 .../conf/multiconfig/hyper-v-amd64-trixie.conf   |  7 +++++++
 8 files changed, 67 insertions(+)
 create mode 100644 kas/machine/hyper-v-amd64.yaml
 create mode 100644 meta-isar/conf/machine/hyper-v-amd64.conf
 create mode 100644 meta-isar/conf/multiconfig/hyper-v-amd64-bookworm.conf
 create mode 100644 meta-isar/conf/multiconfig/hyper-v-amd64-bullseye.conf
 create mode 100644 meta-isar/conf/multiconfig/hyper-v-amd64-trixie.conf

--
2.39.5

Patch

diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index 5d2514c0..931dc95b 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -1087,3 +1087,12 @@  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 Debian bullseye, bookworm
+and trixie.
diff --git a/kas/machine/Kconfig b/kas/machine/Kconfig
index 6151716a..e6ef5101 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-amd64"
+	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-amd64.yaml" if MACHINE_HYPER_V
 	default "kas/machine/x86-pc.yaml" if MACHINE_X86_PC

 endmenu
diff --git a/kas/machine/hyper-v-amd64.yaml b/kas/machine/hyper-v-amd64.yaml
new file mode 100644
index 00000000..032d9a77
--- /dev/null
+++ b/kas/machine/hyper-v-amd64.yaml
@@ -0,0 +1,9 @@ 
+# This software is a part of ISAR.
+# Copyright (C) Siemens AG, 2026
+#
+# SPDX-License-Identifier: MIT
+
+header:
+  version: 14
+
+machine: hyper-v-amd64
diff --git a/meta-isar/conf/machine/hyper-v-amd64.conf b/meta-isar/conf/machine/hyper-v-amd64.conf
new file mode 100644
index 00000000..68c550d1
--- /dev/null
+++ b/meta-isar/conf/machine/hyper-v-amd64.conf
@@ -0,0 +1,16 @@ 
+# This software is a part of Isar.
+# Copyright (C) Siemens AG, 2026
+#
+# 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..69ed18ec 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-amd64-bullseye \
+    hyper-v-amd64-bookworm \
+    hyper-v-amd64-trixie \
     phyboard-mira-bullseye \
     phyboard-mira-bookworm \
     phyboard-mira-trixie \
diff --git a/meta-isar/conf/multiconfig/hyper-v-amd64-bookworm.conf b/meta-isar/conf/multiconfig/hyper-v-amd64-bookworm.conf
new file mode 100644
index 00000000..b5673d8a
--- /dev/null
+++ b/meta-isar/conf/multiconfig/hyper-v-amd64-bookworm.conf
@@ -0,0 +1,7 @@ 
+# This software is a part of Isar.
+# Copyright (C) Siemens AG, 2026
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "hyper-v-amd64"
+DISTRO ?= "debian-bookworm"
diff --git a/meta-isar/conf/multiconfig/hyper-v-amd64-bullseye.conf b/meta-isar/conf/multiconfig/hyper-v-amd64-bullseye.conf
new file mode 100644
index 00000000..c3185d5c
--- /dev/null
+++ b/meta-isar/conf/multiconfig/hyper-v-amd64-bullseye.conf
@@ -0,0 +1,7 @@ 
+# This software is a part of Isar.
+# Copyright (C) Siemens AG, 2026
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "hyper-v-amd64"
+DISTRO ?= "debian-bullseye"
diff --git a/meta-isar/conf/multiconfig/hyper-v-amd64-trixie.conf b/meta-isar/conf/multiconfig/hyper-v-amd64-trixie.conf
new file mode 100644
index 00000000..eb25f1c5
--- /dev/null
+++ b/meta-isar/conf/multiconfig/hyper-v-amd64-trixie.conf
@@ -0,0 +1,7 @@ 
+# This software is a part of Isar.
+# Copyright (C) Siemens AG, 2026
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "hyper-v-amd64"
+DISTRO ?= "debian-trixie"