Skip to content

feat(images): add WSL rootfs image#16902

Draft
mfrw wants to merge 1 commit intotomls/base/mainfrom
mfrw/wsl
Draft

feat(images): add WSL rootfs image#16902
mfrw wants to merge 1 commit intotomls/base/mainfrom
mfrw/wsl

Conversation

@mfrw
Copy link
Copy Markdown
Member

@mfrw mfrw commented Apr 27, 2026

Adds a kiwi-ng image definition that produces a tar.bz2 rootfs
consumable by 'wsl --import'. The image ships systemd, dnf5, a
small interactive userland, hyperv-daemons, and the wsl-setup
package that provides /etc/wsl.conf, /etc/wsl-distribution.conf,
and the OOBE script. No kernel, grub2, dracut, or shim are
included as WSL provides its own kernel.

Registered as [images.wsl] in base/images/images.toml.

Signed-off-by: Muhammad Falak R Wani falakreyaz@gmail.com

Adds a kiwi-ng image definition that produces a tar.bz2 rootfs
consumable by 'wsl --import'. The image ships systemd, dnf5, a
small interactive userland, hyperv-daemons, and the wsl-setup
package that provides /etc/wsl.conf, /etc/wsl-distribution.conf,
and the OOBE script. No kernel, grub2, dracut, or shim are
included as WSL provides its own kernel.

Registered as [images.wsl] in base/images/images.toml.

Signed-off-by: Muhammad Falak R Wani <falakreyaz@gmail.com>
@mfrw mfrw requested a review from ddstreetmicrosoft as a code owner April 27, 2026 09:32
Copilot AI review requested due to automatic review settings April 27, 2026 09:32
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new KIWI NG image definition for a WSL-importable root filesystem and registers it in the image catalog so it can be built via the repo’s image tooling.

Changes:

  • Add base/images/wsl/wsl.kiwi defining a tbz (tar.bz2) rootfs image with systemd, dnf5, and WSL integration packages.
  • Register the image as [images.wsl] in base/images/images.toml.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
base/images/wsl/wsl.kiwi New KIWI image definition for a WSL rootfs tarball (packages, repo, image type).
base/images/images.toml Registers the new WSL image so it’s discoverable/buildable via image config.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread base/images/wsl/wsl.kiwi
Comment on lines +34 to +36
<package name="azurelinux-release-cloud" />
<package name="azurelinux-repos" />
<package name="filesystem" />
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

The image is installing azurelinux-release-cloud, which is the Cloud variant release package; for a WSL rootfs this should likely be azurelinux-release-wsl so the correct WSL defaults/identity/presets are applied (and cloud-specific defaults are not pulled in).

Copilot uses AI. Check for mistakes.
Comment thread base/images/wsl/wsl.kiwi
</packages>

<packages type="bootstrap">
<package name="azurelinux-release-cloud" />
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

Same issue in the bootstrap set: using azurelinux-release-cloud here will seed the rootfs with the Cloud variant. Consider switching the bootstrap release package to azurelinux-release-wsl to keep the variant consistent from the initial bootstrap onward.

Suggested change
<package name="azurelinux-release-cloud" />
<package name="azurelinux-release-wsl" />

Copilot uses AI. Check for mistakes.
Comment thread base/images/wsl/wsl.kiwi
Comment on lines +27 to +30
<repository type="rpm-md" alias="azl4">
<source
path="https://stcontroltowerdevjwisitg.blob.core.windows.net/daily-repo-non-prod/20260303/x86_64/" />
</repository>
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

The repository URL is hardcoded to a dated, non-prod blob location and to the x86_64 repo path. This makes the image build non-reproducible over time and will break for non-x86_64 builds (e.g., WSL arm64). Please switch to a stable/release repo URL (or inject the repo at build time) and make the path architecture-aware or provide per-arch repos/profiles.

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown

❌ Rendered specs are out of date

🚧🚧🚧🚧🚧

Warning

Disregard this comment.

Spec rendering is still under development and checked-in specs
should not be updated in PRs yet.
Please ignore this comment for now unless you are actively
working on the render pipeline.

🚧🚧🚧🚧🚧

FIX: — run this and commit the result:

azldev component render -a --clean-stale

Or download the fix patch and apply it:

gh run download 24987398343 -R microsoft/azurelinux -n rendered-specs-patch
git apply rendered-specs.patch
Category Count
Content diffs 16
Extra files (untracked) 266
Missing files (deleted) 201

Content diffs

`specs/a/anaconda-webui/anaconda-webui.spec`
--- committed/specs/a/anaconda-webui/anaconda-webui.spec
+++ rendered/specs/a/anaconda-webui/anaconda-webui.spec
@@ -46,7 +46,6 @@
 Requires: (firefox if fedora-release-workstation)
 %endif
 %if 0%{?fedora}
-Requires: fedora-logos
 %endif
 BuildRequires: desktop-file-utils
 
@@ -77,6 +76,7 @@
 Provides: bundled(npm(throttle-debounce)) = 5.0.2
 Provides: bundled(npm(tslib)) = 2.8.1
 
+Requires: system-logos
 %description
 Anaconda installer Web interface
 
`specs/a/azurelinux-release/90-default-user.preset`
--- committed/specs/a/azurelinux-release/90-default-user.preset
+++ rendered/specs/a/azurelinux-release/90-default-user.preset
@@ -2,6 +2,3 @@
 # unconditionally. It is used throughout the distro and required on all machines.
 enable dbus.socket
 enable dbus-broker.service
-
-# TODO(azl): evaluate these
-# enable grub-boot-success.timer
`specs/a/azurelinux-release/90-default.preset`
--- committed/specs/a/azurelinux-release/90-default.preset
+++ rendered/specs/a/azurelinux-release/90-default.preset
@@ -1,4 +1,3 @@
-# TODO(azl): review this file
 
 # We deviate from some upstream defaults
 disable systemd-timesyncd.service
@@ -7,6 +6,7 @@
 
 enable systemd-resolved.service
 
+enable systemd-oomd.socket
 enable systemd-oomd.service
 
 # System stuff
@@ -364,8 +364,8 @@
 enable kernel-bootcfg-boot-successful.service
 
 # Enable lvm-devices-import
-enable /usr/lib/systemd/system/lvm-devices-import.path
-enable /usr/lib/systemd/system/lvm-devices-import.service
+enable lvm-devices-import.path
+enable lvm-devices-import.service
 
 # Enable fips-crypto-policy-overlay
 enable fips-crypto-policy-overlay.service
`specs/i/intel-ipsec-mb/intel-ipsec-mb.spec`
--- committed/specs/i/intel-ipsec-mb/intel-ipsec-mb.spec
+++ rendered/specs/i/intel-ipsec-mb/intel-ipsec-mb.spec
@@ -13,7 +13,7 @@
 
 Name:               intel-ipsec-mb
 Version:            2.0.1
-Release: 3%{?dist}
+Release: 4%{?dist}
 Summary:            IPsec cryptography library optimized for Intel Architecture
 
 License:            BSD-3-Clause
@@ -67,6 +67,9 @@
 %{_mandir}/man7/libipsec-mb-dev.*
 
 %changelog
+* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
+
 * Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
 
`specs/k/kdump-utils/kdump-utils.spec`
--- committed/specs/k/kdump-utils/kdump-utils.spec
+++ rendered/specs/k/kdump-utils/kdump-utils.spec
@@ -44,6 +44,7 @@
 %ifnarch s390x
 Requires: systemd-udev%{?_isa}
 %endif
+Patch0: kdumpctl-Use-only-first-match-in-_find_kernel_path_b.patch
 %description
 kdump-utils is responsible for collecting the crash kernel dump. It builds and
 loads the kdump initramfs so when a kernel crashes, the system will boot the
@@ -134,7 +135,7 @@
 
 %changelog
 ## START: Generated by rpmautospec
-* Wed Apr 22 2026 azldev <azurelinux@microsoft.com> - 1.0.59-2
+* Thu Apr 23 2026 azldev <azurelinux@microsoft.com> - 1.0.59-2
 - Latest state for kdump-utils
 
 * Wed Nov 19 2025 Packit <hello@packit.dev> - 1.0.59-1
`specs/k/kf6-breeze-icons/kf6-breeze-icons.spec`
--- committed/specs/k/kf6-breeze-icons/kf6-breeze-icons.spec
+++ rendered/specs/k/kf6-breeze-icons/kf6-breeze-icons.spec
@@ -66,7 +66,7 @@
 %description -n breeze-icon-theme
 %{summary}.
 
-%if 0%{?fedora}
+%if 0
 %package -n breeze-icon-theme-fedora
 Summary:     Breeze icon theme Fedora specific icons
 License:     LGPL-3.0-or-later
@@ -136,7 +136,7 @@
 # %%ghost icon.cache
 touch %{buildroot}%{_kf6_datadir}/icons/{breeze,breeze-dark}/icon-theme.cache
 
-%if 0%{?fedora}
+%if 0
 install -pm 0644 icons-fedora/apps/48/org.fedoraproject.AnacondaInstaller.svg %{buildroot}%{_kf6_datadir}/icons/breeze/apps/48
 ln -sr %{buildroot}%{_kf6_datadir}/icons/breeze/apps/48/org.fedoraproject.AnacondaInstaller.svg %{buildroot}%{_kf6_datadir}/icons/breeze-dark/apps/48/org.fedoraproject.AnacondaInstaller.svg
 %endif
@@ -178,11 +178,11 @@
 %{_datadir}/icons/breeze-dark/index.theme
 %{_datadir}/icons/breeze-dark/*/
 %exclude %{_datadir}/icons/breeze/breeze-icons.rcc
-%if 0%{?fedora}
+%if 0
 %exclude %{_datadir}/icons/breeze*/apps/*/org.fedoraproject.AnacondaInstaller.svg
 %endif
 
-%if 0%{?fedora}
+%if 0
 %files -n breeze-icon-theme-fedora
 %{_datadir}/icons/breeze*/apps/*/org.fedoraproject.AnacondaInstaller.svg
 %endif
`specs/p/perl-CryptX/perl-CryptX.spec`
--- committed/specs/p/perl-CryptX/perl-CryptX.spec
+++ rendered/specs/p/perl-CryptX/perl-CryptX.spec
@@ -8,7 +8,7 @@
 
 Name:           perl-CryptX
 Version:        0.087
-Release: 5%{?dist}
+Release: 6%{?dist}
 Summary:        Cryptographic toolkit
 # src/ltc/*:    Unlicense
 # src/ltm/*:    Unlicense
@@ -153,6 +153,9 @@
 %{_libexecdir}/%{name}
 
 %changelog
+* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.087-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
+
 * Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.087-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
 
`specs/p/python-xxhash/python-xxhash.spec`
--- committed/specs/p/python-xxhash/python-xxhash.spec
+++ rendered/specs/p/python-xxhash/python-xxhash.spec
@@ -2,7 +2,7 @@
 ## (rpmautospec version 0.8.4)
 ## RPMAUTOSPEC: autorelease, autochangelog
 %define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
-    release_number = 2;
+    release_number = 3;
     base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
     print(release_number + base_release_number - 1);
 }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
@@ -68,8 +68,11 @@
 
 %changelog
 ## START: Generated by rpmautospec
-* Wed Apr 22 2026 azldev <azurelinux@microsoft.com> - 3.6.0-2
+* Thu Apr 23 2026 azldev <azurelinux@microsoft.com> - 3.6.0-3
 - Latest state for python-xxhash
+
+* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
 
 * Wed Oct 08 2025 Benjamin A. Beasley <code@musicinmybrain.net> - 3.6.0-1
 - Update to 3.6.0 (close RHBZ#2402506)
`specs/r/rust-hashbrown/rust-hashbrown.spec`
--- committed/specs/r/rust-hashbrown/rust-hashbrown.spec
+++ rendered/specs/r/rust-hashbrown/rust-hashbrown.spec
@@ -2,7 +2,7 @@
 ## (rpmautospec version 0.8.4)
 ## RPMAUTOSPEC: autorelease, autochangelog
 %define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
-    release_number = 2;
+    release_number = 3;
     base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
     print(release_number + base_release_number - 1);
 }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
@@ -165,8 +165,11 @@
 
 %changelog
 ## START: Generated by rpmautospec
-* Wed Apr 22 2026 azldev <azurelinux@microsoft.com> - 0.16.1-2
+* Thu Apr 23 2026 azldev <azurelinux@microsoft.com> - 0.16.1-3
 - Latest state for rust-hashbrown
+
+* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.16.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
 
 * Thu Nov 27 2025 Fabio Valentini <decathorpe@gmail.com> - 0.16.1-1
 - Update to version 0.16.1; Fixes RHBZ#2416170
`specs/r/rust-image/rust-image.spec`
--- committed/specs/r/rust-image/rust-image.spec
+++ rendered/specs/r/rust-image/rust-image.spec
@@ -2,7 +2,7 @@
 ## (rpmautospec version 0.8.4)
 ## RPMAUTOSPEC: autorelease, autochangelog
 %define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
-    release_number = 2;
+    release_number = 3;
     base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
     print(release_number + base_release_number - 1);
 }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
@@ -359,8 +359,11 @@
 
 %changelog
 ## START: Generated by rpmautospec
-* Wed Apr 22 2026 azldev <azurelinux@microsoft.com> - 0.25.9-2
+* Thu Apr 23 2026 azldev <azurelinux@microsoft.com> - 0.25.9-3
 - Latest state for rust-image
+
+* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.25.9-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
 
 * Wed Dec 24 2025 Benjamin A. Beasley <code@musicinmybrain.net> - 0.25.9-1
 - Update to verson 0.25.9; Fixes RHBZ#2415218

… and 6 more file(s). Run the remediation command above to see all changes.

Files to add

These files are produced by azldev component render but are missing from your branch. Add them.

  • specs/7/7zip/7z-dont-echo-password.diff
  • specs/a/aurorae/README.md
  • specs/b/blosc/blosc-CMake4.0.patch
  • specs/c/cinnamon/Use_DesktopAppInfo_from_GioUnix.patch
  • specs/c/cinnamon/fix_mount_applet.patch
  • specs/c/colm/colm-libfsm-ac_check_lib.diff
  • specs/c/cpp-httplib/cpp-httplib-cpp11-test.patch
  • specs/c/cpp-httplib/cpp-httplib-test-issue2301-online.patch
  • specs/d/dejavu-fonts/.fmf/version
  • specs/d/dejavu-fonts/57-dejavu-sans-fonts.xml
  • specs/d/dejavu-fonts/57-dejavu-sans-mono-fonts.xml
  • specs/d/dejavu-fonts/57-dejavu-serif-fonts.xml
  • specs/d/dejavu-fonts/58-dejavu-lgc-sans-fonts.xml
  • specs/d/dejavu-fonts/58-dejavu-lgc-sans-mono-fonts.xml
  • specs/d/dejavu-fonts/58-dejavu-lgc-serif-fonts.xml
  • specs/d/dejavu-fonts/plans/dejavu-lgc-sans-fonts.fmf
  • specs/d/dejavu-fonts/plans/dejavu-lgc-sans-mono-fonts.fmf
  • specs/d/dejavu-fonts/plans/dejavu-lgc-serif-fonts.fmf
  • specs/d/dejavu-fonts/plans/dejavu-sans-fonts.fmf
  • specs/d/dejavu-fonts/plans/dejavu-sans-mono-fonts.fmf
  • specs/d/dejavu-fonts/plans/dejavu-serif-fonts.fmf
  • specs/d/dhcpcd/roy-marples.name.asc
  • specs/d/dns-root-data/registry-admin.key
  • specs/d/dnsmasq/dnsmasq-2.92-dnssec-wildcard.patch
  • specs/d/dos2unix/38C1F572B12725BE.asc
  • specs/e/ed/antoniodiazdiaz-keyring.asc
  • specs/e/ethtool/ethtool-netlink-fix-missing-headers.diff
  • specs/f/ffmpeg/ffmpeg-CVE-2025-22921.patch
  • specs/f/ffmpeg/ffmpeg-support-evc-base-libraries.patch
  • specs/f/fontawesome-fonts/60-fontawesome-6-brands-fonts.conf
  • specs/f/fontawesome-fonts/60-fontawesome-6-free-fonts.conf
  • specs/f/fontawesome-fonts/changelog
  • specs/f/fontforge/Fix_Splinefont_shell_invocation.patch
  • specs/g/geometry-hpp/geometry-hpp-optional-benchmarks.patch
  • specs/g/ghc-Glob/Glob-0.10.2.cabal
  • specs/g/ghc-HTTP/HTTP-4000.4.1.cabal
  • specs/g/ghc-HaXml/HaXml-1.25.14.cabal
  • specs/g/ghc-Only/Only-0.1.cabal
  • specs/g/ghc-aeson/aeson-2.2.3.0.cabal
  • specs/g/ghc-asn1-encoding/asn1-encoding-0.9.6.cabal
  • specs/g/ghc-assoc/assoc-1.1.1.cabal
  • specs/g/ghc-async/async-2.2.5.cabal
  • specs/g/ghc-attoparsec-iso8601/attoparsec-iso8601-1.1.1.0.cabal
  • specs/g/ghc-attoparsec/attoparsec-0.14.4.cabal
  • specs/g/ghc-base16-bytestring/base16-bytestring-1.0.2.0.cabal
  • specs/g/ghc-base64-bytestring/base64-bytestring-1.2.1.0.cabal
  • specs/g/ghc-bifunctors/bifunctors-5.6.2.cabal
  • specs/g/ghc-blaze-html/blaze-html-0.9.2.0.cabal
  • specs/g/ghc-blaze-markup/blaze-markup-0.8.3.0.cabal
  • specs/g/ghc-bsb-http-chunked/bsb-http-chunked-0.0.0.4.cabal

… and 216 more file(s).

Files to remove

These files are in your branch but are not produced by render. Remove them.

  • specs/d/dotnet9.0/check-debug-symbols.py
  • specs/d/dotnet9.0/dotnet.sh.in
  • specs/d/dotnet9.0/dotnet9.0.spec
  • specs/d/dotnet9.0/macros.dotnet
  • specs/d/dotnet9.0/release-key-2023.asc
  • specs/d/dotnet9.0/release.json
  • specs/d/dotnet9.0/roslyn-analyzers-ppc64le-apphost.patch
  • specs/d/dotnet9.0/runtime-119706-clang-21.patch
  • specs/d/dotnet9.0/runtime-disable-fortify-on-ilasm-parser.patch
  • specs/d/dotnet9.0/runtime-openssl-sha1.patch
  • specs/d/dotnet9.0/runtime-re-enable-implicit-rejection.patch
  • specs/d/dotnet9.0/sources
  • specs/e/etcd/RENDER_FAILED
  • specs/e/exim/Exim-Maintainers-Keyring.asc
  • specs/e/exim/clamd.exim.service
  • specs/e/exim/exim-4.94-libdir.patch
  • specs/e/exim/exim-4.97-dlopen-localscan.patch
  • specs/e/exim/exim-4.99-config.patch
  • specs/e/exim/exim-4.99-pic.patch
  • specs/e/exim/exim-clamav-tmpfiles.conf
  • specs/e/exim/exim-gen-cert
  • specs/e/exim/exim-greylist.conf.inc
  • specs/e/exim/exim-tidydb.sh
  • specs/e/exim/exim.logrotate
  • specs/e/exim/exim.pam
  • specs/e/exim/exim.service
  • specs/e/exim/exim.spec
  • specs/e/exim/exim.sysconfig
  • specs/e/exim/greylist-tidy.sh
  • specs/e/exim/mk-greylist-db.sql
  • specs/e/exim/sources
  • specs/e/exim/trusted-configs
  • specs/f/fedora-iot-config/fedora-iot-config-remote-fix.service
  • specs/f/fedora-iot-config/fedora-iot-config-remote-fix.sh
  • specs/f/fedora-iot-config/fedora-iot-config.spec
  • specs/f/fedora-iot-config/fedora-iot.conf
  • specs/g/gcr/gcr.spec
  • specs/g/gcr/sources
  • specs/g/gcr3/gcr3.spec
  • specs/g/gcr3/sources
  • specs/g/gnustep-base/gnustep-base-1.31.0-fix_s390x.patch
  • specs/g/gnustep-base/gnustep-base-fix_GCC15.patch
  • specs/g/gnustep-base/gnustep-base-fix_ending_tag_mismatch.patch
  • specs/g/gnustep-base/gnustep-base-use_system-wide_crypto-policies.patch
  • specs/g/gnustep-base/gnustep-base.spec
  • specs/g/gnustep-base/sources
  • specs/g/gnustep-make/gnustep-make-macros.gnustep
  • specs/g/gnustep-make/gnustep-make.spec
  • specs/g/gnustep-make/sources
  • specs/g/guestfs-tools/guestfs-tools.spec

… and 151 more file(s).

@mfrw mfrw marked this pull request as draft April 27, 2026 13:17
@reubeno
Copy link
Copy Markdown
Member

reubeno commented Apr 27, 2026

@mfrw For comparison's sake, how does this differ from Fedora's composition of their WSL image?

@ddstreet
Copy link
Copy Markdown
Contributor

@mfrw For comparison's sake, how does this differ from Fedora's composition of their WSL image?

also possibly useful is the wsl (and other) xml from my branch converting fedora's kiwi xml into our own; although note, none of that will be merged.

@ddstreet
Copy link
Copy Markdown
Contributor

ddstreet commented Apr 27, 2026

question(non-blocking): I note that this creates an entirely new dir base/images/wsl/wsl.kiwi, would it be better to put this inside the existing container-base.kiwi and add a new profile?

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