feat(images): add 1p-vm-base-gen1 image - #18475
Conversation
There was a problem hiding this comment.
Pull request overview
Adds the Azure Linux 4.0 1P VM Base Gen1 image definition and registration.
Changes:
- Registers the new machine-bootable image and static tests.
- Defines a fixed-size VHD with Azure VM packages and systemd-networkd.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
base/images/images.toml |
Registers the image, tests, and capabilities. |
base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi |
Defines its boot layout, repositories, and packages. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| filesystem="ext4" | ||
| fscreateoptions="-m 1" | ||
| kernelcmdline="console=ttyS0" | ||
| firmware="uefi" |
| <package name="WALinuxAgent" /> | ||
| <package name="wireless-regdb" /> | ||
|
|
||
| <!-- Hyper-V via kernel-modules + hyperv-daemons) --> |
9ed6521 to
f804b0b
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
Suppressed comments (4)
base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:29
- This config requests a UEFI disk layout, not the BIOS layout required by an Azure Gen1 VM. In the referenced KIWI v10.2.33 schema,
firmwarecontrols the partition-table/boot layout, whileeficsmonly adds legacy CSM support to an EFI layout. A Gen1 artifact should usefirmware="bios"and omit the EFI-only settings; otherwise the resulting GPT/EFI-oriented VHD may not boot as a Gen1 disk.
firmware="uefi"
overlayroot="false"
eficsm="true"
bootpartition="false"
efipartsize="200"
base/images/images.toml:100
- This runtime-package-managed image has only the canonical registration, so there is no
-devimage that shipsazurelinux-repos-dev. That breaks the image registration convention already used byvm-baseandminimal-os(base/images/images.toml:32-66,70-94) and prevents development builds from retaining dev runtime repositories. Add matching canonical/dev profiles and registrations, with the repo package selected per profile.
[images.1p-vm-base-gen1]
description = "1P VM Base Gen1 Image (BIOS)"
definition = { type = "kiwi", path = "1p-vm-base-gen1/1p-vm-base-gen1.kiwi" }
base/images/images.toml:103
- The only registered suite is generic static validation, and the existing VM kernel/partition tests are auto-scoped to the
vm-basefamily, so they are skipped for1p-vm-base-gen1. Consequently the defining behavior of this new image—producing a BIOS/Gen1-bootable partition layout—is not tested. Add an image-specific BIOS partition/boot check or register an applicable VM boot smoke suite.
tests.test-suites = [
{ name = "static-image-checks" },
]
base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:127
- Remove the unmatched closing parenthesis from this comment.
<!-- Hyper-V via kernel-modules + hyperv-daemons) -->
f804b0b to
3cc68fd
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (3)
base/images/images.toml:100
- This runtime-package-managed image is missing the required
-devsibling. The registry convention atbase/images/images.toml:5-27and the adjacent VM entries at lines 32-94 require canonical/dev profiles so local validation can shipazurelinux-repos-devwithout changing the canonical artifact. Add matching KIWI profiles with variant-scoped repo packages and register1p-vm-base-gen1-devwith identical capabilities/tests.
[images.1p-vm-base-gen1]
description = "1P VM Base Gen1 Image (BIOS)"
definition = { type = "kiwi", path = "1p-vm-base-gen1/1p-vm-base-gen1.kiwi" }
base/images/images.toml:103
- Only the shared offline suite is registered, so the Gen1-specific boot path is not exercised. The existing kernel/partition checks under
cases/static/vm-base/are auto-filtered to thevm-basefamily, and its partition test expects UEFI, so they are skipped for this image; the suite also never boots the VHD. Add Gen1-specific checks for kernel modules and the BIOS/GRUB layout, plus a boot-level suite to validate networking and cloud provisioning.
tests.test-suites = [
{ name = "static-image-checks" },
]
base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:40
- This is the only image definition that builds locally from PMC beta; every other KIWI definition uses the
azl4-devsource (for examplevm-base/vm-base.kiwi:89-92andminimal-os/minimal-os.kiwi:52-55). Building against beta can validate stale packages rather than the current distro output. Keep the build-time source onazl4-dev;azurelinux-reposshould control only the image's runtime repositories.
<source path="https://packages.microsoft.com/azurelinux/4.0/beta/base/$basearch" />
3cc68fd to
48cfbb8
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (3)
base/images/images.toml:103
- This only runs the shared generic offline checks. Because image-specific tests are selected by their family directory, the existing
cases/static/vm-basekernel and partition checks are skipped for1p-vm-base-gen1; no test currently validates its new BIOS/MBR boot layout or that the package-provided cloud/network/Hyper-V configuration is present. Add acases/static/1p-vm-base-gen1suite (including a Gen1 partition/bootloader check and required config/service checks) and a boot/deployment test for the machine-bootable path.
tests.test-suites = [
{ name = "static-image-checks" },
]
base/images/images.toml:100
- This package-managed image is missing the required
-devsibling. The registry contract in this file (lines 5-27) and the existingvm-base/minimal-osentries register both variants so one shipsazurelinux-reposand the otherazurelinux-repos-dev; only distroless images are exempt. Add matching Kiwi profiles with profile-scoped repo packages, then registerimages.1p-vm-base-gen1-devwith the same tests and capabilities.
[images.1p-vm-base-gen1]
description = "1P VM Base Gen1 Image (BIOS)"
definition = { type = "kiwi", path = "1p-vm-base-gen1/1p-vm-base-gen1.kiwi" }
base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:40
- This makes local builds consume PMC beta rather than the repository's current package set, so an image change depending on an unpublished component update can fail or silently test stale RPMs. Every other Kiwi definition uses the azl4-dev build source (for example
vm-base/vm-base.kiwi:89-92), while Koji replaces it for distro builds; use the same source here.
<source path="https://packages.microsoft.com/azurelinux/4.0/beta/base/$basearch" />
Add the Azure Linux 4.0 1P VM Base Gen1 (BIOS) image. Package selection preserves the established core image, base image, container, tooling, Azure VM, and Hyper-V package groups while using their Azure Linux 4 equivalents. BIOS boot uses an MBR partition table and grub2-pc without EFI packages. The image relies on package-provided cloud-init, chrony/PTP, and Hyper-V configuration, with no KIWI file injection or config.sh post-install customization. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 727c4c35-afde-4eb0-82bf-b307f6550d58
48cfbb8 to
68b982c
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (4)
base/images/images.toml:100
- This image is the only package-managed image without the canonical/
-devpair required by the registry convention (images.toml:5-27); as a result, developers cannot build this image withazurelinux-repos-devwhile keeping the canonical artifact pointed at PMC. Add Kiwi profiles that selectazurelinux-reposversusazurelinux-repos-dev, then register a matching1p-vm-base-gen1-deventry as done forvm-base.
[images.1p-vm-base-gen1]
description = "1P VM Base Gen1 Image (BIOS)"
definition = { type = "kiwi", path = "1p-vm-base-gen1/1p-vm-base-gen1.kiwi" }
base/images/images.toml:102
- The shared static suite does not exercise the VM checks for this new family. Tests under
cases/static/vm-base/are auto-marked for thevm-basefamily, and the matcher intests/utils/pytest_plugin.py:182-197skips them for1p-vm-base-gen1; this explains why the reported run has skips and leaves the kernel and BIOS partition layout unverified. Add family-specific kernel/partition tests, including a Gen1 BIOS boot-layout assertion.
tests.test-suites = [
{ name = "static-image-checks" },
base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:127
- Remove the unmatched closing parenthesis from this comment.
<!-- Hyper-V via kernel-modules + hyperv-daemons) -->
base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:40
- This build source differs from every other Kiwi image and from the documented registry convention (
images.toml:21-23): local image builds are expected to consume theazl4-devrepository, while the installedazurelinux-repospackage controls the runtime PMC destination. Building directly from PMC beta prevents validation of packages published only to the development repository.
<source path="https://packages.microsoft.com/azurelinux/4.0/beta/base/$basearch" />
Summary
Testing
azldev image build 1p-vm-base-gen1 --arch x86_64azldev image test 1p-vm-base-gen1(9 passed, 7 skipped)AB#18608