Skip to content

feat(images): add 1p-vm-base-gen1 image - #18468

Closed
binujp wants to merge 1 commit into
4.0from
bphilip/add-marketplace-gen1
Closed

feat(images): add 1p-vm-base-gen1 image#18468
binujp wants to merge 1 commit into
4.0from
bphilip/add-marketplace-gen1

Conversation

@binujp

@binujp binujp commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add the Azure Linux 4.0 1P VM Base Gen1 BIOS image
  • use package-provided cloud-init, chrony/PTP, and Hyper-V configuration
  • remove all KIWI file injections and their loose configuration files
  • use systemd-networkd without netplan or post-install config.sh customization

Testing

  • built with azldev image build 1p-vm-base-gen1 --arch x86_64
  • passed azldev image test 1p-vm-base-gen1 (9 passed, 7 skipped)

AB#18608

@binujp
binujp requested a review from a team as a code owner August 17, 2026 15:53
Copilot AI balanced review requested due to automatic review settings August 17, 2026 15:53
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

<package name="azurelinux-repos" />

<!-- Azure marketplace guest configuration -->
<!-- TODO: Move these customizations and files into subpackages, then delete these file entries. -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue(blocking): Agreed with the TODO here -- we've worked hard to keep config files out of the image definitions, so placing them in packages/sub-packages is the right call.

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question(blocking): Did you look at whether we could avoid a completely separate definition and instead find a way for gen1 to be a profile / derivative of vm-base?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is definitely possible and defining a proper hierarchy is next on the cards. This definition is pushed prior to refactoring since that will become much easier after all image definitions are frozen. For now, vm-base is considered as independent same as the other two 1P images.

@ddstreetmicrosoft Dan Streetman (ddstreetmicrosoft) left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue(blocking):

in addition to reubeno's review about reusing/extending our current image definition and placing config files into packages instead of image definitions:

  1. I don't think we want to completely replace the cloud-init or chrony config files.
  2. The udev rule isn't needed, as it's already provided in current rules.
  3. For the systemd drop-in, that might be ok if moved into a package (though I'd like to think more about its potential impact)

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.

Legacy BIOS boot uses a GPT hybrid (eficsm) disk. 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
Copilot AI review requested due to automatic review settings August 17, 2026 20:04
@binujp
binujp force-pushed the bphilip/add-marketplace-gen1 branch from afb0d85 to 9ed6521 Compare August 17, 2026 20:04
@binujp binujp closed this Aug 17, 2026
@binujp
binujp deleted the bphilip/add-marketplace-gen1 branch August 17, 2026 20:04
@binujp binujp changed the title feat(images): add marketplace-gen1 image feat(images): add 1p-vm-base-gen1 image Aug 17, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Suppressed comments (3)

base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:41

  • This is the only KIWI definition that builds directly from PMC beta. The registry contract in base/images/images.toml:21-23 and every existing KIWI image use azl4-dev as the local build source so pending distro packages can be tested while the shipped azurelinux-repos* package independently controls runtime repositories. Point this source at the shared azl4-dev repository.
        <source path="https://packages.microsoft.com/azurelinux/4.0/beta/base/$basearch" />

base/images/1p-vm-base-gen1/1p-vm-base-gen1.kiwi:141

  • Hard-coding the canonical runtime repository leaves this runtime-manageable image without the canonical/-dev pair required by base/images/images.toml:5-27; all non-distroless image families provide both variants. Add canonical and -dev KIWI profiles, scope azurelinux-repos/azurelinux-repos-dev to them, and register 1p-vm-base-gen1-dev with matching tests and capabilities.
        <package name="azurelinux-repos" />

base/images/images.toml:102

  • This suite does not test the defining VM behavior. Since the image name is neither vm-base nor vm-base-*, the family filter in tests/utils/pytest_plugin.py:182-197 skips all kernel and partition checks under cases/static/vm-base; the reported 9 passes/7 skips therefore contain no VM-specific validation and no BIOS boot attempt. Add Gen1 partition/MBR checks and a BIOS boot smoke test (or make shared VM checks capability-based).
  { name = "static-image-checks" },

initrd_system="dracut"
filesystem="ext4"
fscreateoptions="-m 1"
kernelcmdline="console=ttyS0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants