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 <
goura...@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
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"
--
2.39.5