[PATCH] feat: add support for hyper-v virtual machine

33 views
Skip to first unread message

Gourav Singh

unread,
Jul 6, 2026, 7:46:15 AM (8 days ago) Jul 6
to isar-...@googlegroups.com, Gourav Singh
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

MOESSBAUER, Felix

unread,
Jul 7, 2026, 4:19:41 AM (8 days ago) Jul 7
to Singh, Gourav, isar-...@googlegroups.com

Hi,

please make it a bit shorter, e.g. "It supports the following Debian
bullseye, bookworm and trixie". The example from below can be left out
in the changelog.

> +
> +- `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.

Why alongside and not instead? If the image types are modeled
correctly, only the final one is left in the DEPLOY_DIR_IMAGE.

Why Ilbers? This is a Siemens contribution.

> +
> +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"

Then the machine should be called "hyper-v-amd64.conf".

> +
> +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 \

hyper-v-amd64-bullseye (and alike).

> 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"

hyper-v-amd64

> +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

Siemens contribution, hence Siemens Copyright.

Felix

> +#
> +# SPDX-License-Identifier: MIT
> +
> +MACHINE ?= "hyper-v"
> +DISTRO ?= "debian-trixie"
> --
> 2.39.5
>

> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260706114602.2309505-1-gouravsingh%40siemens.com.

Singh, Gourav

unread,
Jul 7, 2026, 6:36:01 AM (7 days ago) Jul 7
to MOESSBAUER, Felix, isar-...@googlegroups.com
Hi Felix,

Thanks for the review.

> Why alongside and not instead? If the image types are modeled correctly, only the final one is left in the DEPLOY_DIR_IMAGE.
The .wic is a required as an intermediate artifact - convert_wic() is a prefunc of do_image_ova and consumes the .wic to produce the final .vhdx. Will fix the wording in the next version.

Thanks,
Gourav
> +- Select machine: `hyper-v`
> +- Select distro and image type
> +
> +The output `.vhdx` file will be placed in `DEPLOY_DIR_IMAGE`
> +alongside the `.wic` image.

Gourav Singh

unread,
Jul 7, 2026, 6:52:44 AM (7 days ago) Jul 7
to isar-...@googlegroups.com, felix.mo...@siemens.com, Gourav Singh
Changes in v2:

- Rename machine from hyper-v to hyper-v-amd64 to reflect target arch
- Fix commit message: .wic is an intermediate artifact, not a co-equal output
- Add SPDX license header to kas yaml
- Update copyright from ilbers GmbH to Siemens AG in all new files
- Trim RECIPE-API-CHANGELOG.md entry to remove verbose build instructions

Gourav Singh (1):
feat: add support for hyper-v virtual machine

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

Gourav Singh

unread,
Jul 7, 2026, 6:52:54 AM (7 days ago) Jul 7
to isar-...@googlegroups.com, felix.mo...@siemens.com, Gourav Singh
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 <goura...@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

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"
Reply all
Reply to author
Forward
0 new messages