Skip to content

Commit

Permalink
Rework dracut defaults into separate subpackages for more granular im…
Browse files Browse the repository at this point in the history
…age configuration (#9326)

Co-authored-by: Chris Gunn <[email protected]>
  • Loading branch information
2 people authored and ddstreetmicrosoft committed Jun 12, 2024
1 parent 94cf7b4 commit d7910ee
Show file tree
Hide file tree
Showing 30 changed files with 139 additions and 30 deletions.
4 changes: 4 additions & 0 deletions SPECS/dracut/00-hostonly.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# kdump currently uses the host system's initrd when enrolling a crash kernel
# and initrd. There is a limitation where the kdump initrd must be generated
# with dracut in hostonly mode. So, set hostonly as the default.
hostonly=yes
2 changes: 2 additions & 0 deletions SPECS/dracut/00-hyperv.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# VM guest drivers for Hyper-V.
add_drivers+=" hv_utils hv_vmbus hv_storvsc hv_netvsc hv_sock hv_balloon "
2 changes: 2 additions & 0 deletions SPECS/dracut/00-virtio.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# VM guest drivers for virtio (e.g. KVM/QEMU).
add_drivers+=" virtio_blk virtio-rng virtio_console virtio_crypto virtio_mem vmw_vsock_virtio_transport vmw_vsock_virtio_transport_common 9pnet_virtio "
1 change: 1 addition & 0 deletions SPECS/dracut/00-vrf.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
add_drivers+=" vrf "
2 changes: 2 additions & 0 deletions SPECS/dracut/00-xen.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# VM guest drivers for Xen.
add_drivers+=" xen-scsifront xen-blkfront xen-evtchn xen-gntalloc xen-gntdev xen-privcmd xen-pciback xenfs "
6 changes: 0 additions & 6 deletions SPECS/dracut/defaults.conf

This file was deleted.

6 changes: 5 additions & 1 deletion SPECS/dracut/dracut.signatures.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
{
"Signatures": {
"defaults.conf": "eb71a776e9f31c88cf51fdb9b499ef5e797e26e347247d0292aa2b3e7ad2bf1a",
"00-hostonly.conf": "b446b39e4574648d8d2a1a852b5d41010aa103dda24b3c3256835149a5ad22ee",
"00-hyperv.conf": "d499f617f633f320a53a16436dcd9c1aebcc175510a77a29ccafd946882c7685",
"00-virtio.conf": "173e93feea30f328d4cda7d07f756446fe45830ad9a5ee99b007bed0579b9a64",
"00-vrf.conf": "e2885a4b090d8ca3771e60ce6dcd8b849e28ce5002a5c7b71ff796a92deb2810",
"00-xen.conf": "8b7a89b7716cb40a9c0d681caed6994d81ff4dfad4fe50cea15cd47b885dc5a6",
"dracut-059.tar.gz": "eabf0bb685420c1e1d5475b6855ef787104508f0135ff570312845256e0fcecf",
"lgpl-2.1.txt": "dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551",
"megaraid.conf": "914824cdbe0c525b71efa05a75e453335b0068beb8bc28bef2a5866d74bf7dd4",
Expand Down
73 changes: 69 additions & 4 deletions SPECS/dracut/dracut.spec
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Summary: dracut to create initramfs
Name: dracut
Version: 059
Release: 18%{?dist}
Release: 19%{?dist}
# The entire source code is GPLv2+
# except install/* which is LGPLv2+
License: GPLv2+ AND LGPLv2+
Expand All @@ -18,7 +18,11 @@ Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
Source3: megaraid.conf
Source4: 20overlayfs/module-setup.sh
Source5: 20overlayfs/overlayfs-mount.sh
Source6: defaults.conf
Source6: 00-hostonly.conf
Source7: 00-hyperv.conf
Source8: 00-virtio.conf
Source9: 00-vrf.conf
Source10: 00-xen.conf

Patch: fix-functions-Avoid-calling-grep-with-PCRE-P.patch
# allow-liveos-overlay-no-user-confirmation-prompt.patch has been introduced by
Expand Down Expand Up @@ -75,6 +79,20 @@ Requires: nss
This package requires everything which is needed to build an
initramfs with dracut, which does an integrity check.

%package hostonly
Summary: dracut configuration needed to build an initramfs with hostonly enabled
Requires: %{name} = %{version}-%{release}

%description hostonly
This package contains dracut configuration needed to build an initramfs with hostonly enabled

%package hyperv
Summary: dracut configuration needed to build an initramfs with hyperv guest drivers
Requires: %{name} = %{version}-%{release}

%description hyperv
This package contains dracut configuration needed to build an initramfs with hyperv guest drivers

%package megaraid
Summary: dracut configuration needed to build an initramfs with MegaRAID driver support
Requires: %{name} = %{version}-%{release}
Expand All @@ -96,6 +114,27 @@ Requires: %{name} = %{version}-%{release}
%description overlayfs
This package contains dracut module needed to build an initramfs with OverlayFS support.

%package virtio
Summary: dracut configuration needed to build an initramfs with virtio guest drivers
Requires: %{name} = %{version}-%{release}

%description virtio
This package contains dracut configuration needed to build an initramfs with virtio guest drivers

%package vrf
Summary: dracut configuration needed to build an initramfs with the vrf driver
Requires: %{name} = %{version}-%{release}

%description vrf
This package contains dracut configuration needed to build an initramfs with the vrf driver

%package xen
Summary: dracut configuration needed to build an initramfs with xen guest drivers
Requires: %{name} = %{version}-%{release}

%description xen
This package contains dracut configuration needed to build an initramfs with xen guest drivers

%prep
%autosetup -p1
cp %{SOURCE1} .
Expand Down Expand Up @@ -134,7 +173,11 @@ install -m 0644 dracut.conf.d/fips.conf.example %{buildroot}%{_sysconfdir}/dracu
> %{buildroot}%{_sysconfdir}/system-fips

install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/dracut.conf.d/50-megaraid.conf
install -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/dracut.conf.d/00-defaults.conf
install -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/dracut.conf.d/00-hostonly.conf
install -m 0644 %{SOURCE7} %{buildroot}%{_sysconfdir}/dracut.conf.d/00-hyperv.conf
install -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/dracut.conf.d/00-virtio.conf
install -m 0644 %{SOURCE9} %{buildroot}%{_sysconfdir}/dracut.conf.d/00-vrf.conf
install -m 0644 %{SOURCE10} %{buildroot}%{_sysconfdir}/dracut.conf.d/00-xen.conf

mkdir -p %{buildroot}%{dracutlibdir}/modules.d/20overlayfs/
install -p -m 0755 %{SOURCE4} %{buildroot}%{dracutlibdir}/modules.d/20overlayfs/
Expand Down Expand Up @@ -170,7 +213,6 @@ ln -srv %{buildroot}%{_bindir}/%{name} %{buildroot}%{_sbindir}/%{name}
%{dracutlibdir}/skipcpio
%{dracutlibdir}/%{name}-util
%config(noreplace) %{_sysconfdir}/%{name}.conf
%config %{_sysconfdir}/dracut.conf.d/00-defaults.conf
%dir %{_sysconfdir}/%{name}.conf.d
%dir %{dracutlibdir}/%{name}.conf.d
%dir %{_var}/opt/%{name}/log
Expand Down Expand Up @@ -201,6 +243,14 @@ ln -srv %{buildroot}%{_bindir}/%{name} %{buildroot}%{_sbindir}/%{name}
%{_sysconfdir}/dracut.conf.d/40-fips.conf
%config(missingok) %{_sysconfdir}/system-fips

%files hostonly
%defattr(-,root,root,0755)
%{_sysconfdir}/dracut.conf.d/00-hostonly.conf

%files hyperv
%defattr(-,root,root,0755)
%{_sysconfdir}/dracut.conf.d/00-hyperv.conf

%files megaraid
%defattr(-,root,root,0755)
%{_sysconfdir}/dracut.conf.d/50-megaraid.conf
Expand All @@ -212,12 +262,27 @@ ln -srv %{buildroot}%{_bindir}/%{name} %{buildroot}%{_sbindir}/%{name}
%dir %{dracutlibdir}/modules.d/20overlayfs
%{dracutlibdir}/modules.d/20overlayfs/*

%files virtio
%defattr(-,root,root,0755)
%{_sysconfdir}/dracut.conf.d/00-virtio.conf

%files vrf
%defattr(-,root,root,0755)
%{_sysconfdir}/dracut.conf.d/00-vrf.conf

%files xen
%defattr(-,root,root,0755)
%{_sysconfdir}/dracut.conf.d/00-xen.conf

%{_bindir}/%{name}-catimages
%dir /boot/%{name}
%dir %{_sharedstatedir}/%{name}
%dir %{_sharedstatedir}/%{name}/overlay

%changelog
* Thu May 30 2024 Chris Gunn <[email protected]> - 059-19
- Split defaults into separate subpackages: hostonly, hyperv, virtio, vrf, and xen

* Tue May 28 2024 Cameron Baird <[email protected]> - 059-18
- Remove reference to zlib from dracut-fips module setup to address
pedantic initramfs regeneration behavior
Expand Down
7 changes: 5 additions & 2 deletions SPECS/initramfs/initramfs.spec
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Summary: initramfs
Name: initramfs
Version: 3.0
Release: 3%{?dist}
Release: 4%{?dist}
License: Apache License
Vendor: Microsoft Corporation
Distribution: Azure Linux
Expand All @@ -19,7 +19,7 @@ mkdir -p %{buildroot}%{_sysconfdir}/dracut.conf.d
install -D -m644 %{SOURCE0} %{buildroot}%{_sysconfdir}/dracut.conf.d/

%define watched_path %{_sbindir} %{_libdir}/udev/rules.d %{_libdir}/systemd/system /lib/modules %{_sysconfdir}/dracut.conf.d
%define watched_pkgs e2fsprogs, systemd, kpartx, device-mapper-multipath, verity-read-only-root, dracut-fips, dracut-megaraid
%define watched_pkgs e2fsprogs, systemd, kpartx, device-mapper-multipath, verity-read-only-root, dracut-fips, dracut-megaraid, dracut-hostonly, dracut-hyperv, dracut-overlayfs, dracut-virtio, dracut-vrf, dracut-xen

%define removal_action() rm -rf %{_localstatedir}/lib/rpm-state/initramfs

Expand Down Expand Up @@ -112,6 +112,9 @@ echo "initramfs" %{version}-%{release} "postun" >&2
%{_sysconfdir}/dracut.conf.d/fscks.conf

%changelog
* Thu Mar 23 2024 Cameron Baird <[email protected]> - 3.0-4
- Flag all dracut driver list configs as watched pkgs for initramfs regen

* Wed Mar 06 2024 Chris Gunn <[email protected]> - 3.0-3
- Remove /var/lib/initramfs/kernel files.

Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/core-efi-selinux.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@
"packagelists/hyperv-packages.json",
"packagelists/core-packages-image.json",
"packagelists/cloud-init-packages.json",
"packagelists/selinux-full.json"
"packagelists/selinux-full.json",
"packagelists/virt-guest-packages.json"
],
"KernelCommandLine": {
"SELinux": "permissive"
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/core-efi.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@
"PackageLists": [
"packagelists/hyperv-packages.json",
"packagelists/core-packages-image.json",
"packagelists/cloud-init-packages.json"
"packagelists/cloud-init-packages.json",
"packagelists/virt-guest-packages.json"
],
"KernelOptions": {
"default": "kernel"
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/core-fips.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@
"packagelists/core-packages-image.json",
"packagelists/core-tools-packages.json",
"packagelists/cloud-init-packages.json",
"packagelists/selinux.json"
"packagelists/selinux.json",
"packagelists/virt-guest-packages.json"
],
"KernelOptions": {
"default": "kernel"
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/core-legacy-unattended-hyperv.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@
"PackageLists": [
"packagelists/hyperv-packages.json",
"packagelists/core-packages-image.json",
"packagelists/cloud-init-packages.json"
"packagelists/cloud-init-packages.json",
"packagelists/virt-guest-packages.json"
],
"KernelOptions": {
"default": "kernel"
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/core-legacy.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@
"PackageLists": [
"packagelists/hyperv-packages.json",
"packagelists/core-packages-image.json",
"packagelists/cloud-init-packages.json"
"packagelists/cloud-init-packages.json",
"packagelists/virt-guest-packages.json"
],
"KernelOptions": {
"default": "kernel"
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/core-ova.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@
"packagelists/core-packages-image.json",
"packagelists/cloud-init-packages.json",
"packagelists/core-tools-packages.json",
"packagelists/selinux.json"
"packagelists/selinux.json",
"packagelists/virt-guest-packages.json"
],
"Hostname": "mariner",
"KernelOptions": {
Expand Down
6 changes: 4 additions & 2 deletions toolkit/imageconfigs/full-aarch64.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"packagelists/virtualization-host-packages.json",
"packagelists/core-packages-image-aarch64.json",
"packagelists/core-tools-packages.json",
"packagelists/selinux-full.json"
"packagelists/selinux-full.json",
"packagelists/virt-guest-packages.json"
],
"KernelCommandLine": {
"SELinux": "permissive"
Expand All @@ -24,7 +25,8 @@
"Name": "Azure Linux Core",
"PackageLists": [
"packagelists/hyperv-packages.json",
"packagelists/core-packages-image-aarch64.json"
"packagelists/core-packages-image-aarch64.json",
"packagelists/virt-guest-packages.json"
],
"KernelOptions": {
"default": "kernel"
Expand Down
6 changes: 4 additions & 2 deletions toolkit/imageconfigs/full.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
"packagelists/hyperv-packages.json",
"packagelists/ssh-server.json",
"packagelists/selinux-full.json",
"packagelists/drtm.json"
"packagelists/drtm.json",
"packagelists/virt-guest-packages.json"
],
"KernelCommandLine": {
"SELinux": "permissive"
Expand All @@ -28,7 +29,8 @@
"PackageLists": [
"packagelists/grub2-mkconfig.json",
"packagelists/hyperv-packages.json",
"packagelists/core-packages-image.json"
"packagelists/core-packages-image.json",
"packagelists/virt-guest-packages.json"
],
"KernelOptions": {
"default": "kernel"
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/marketplace-gen1-fips.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@
"packagelists/fips-packages.json",
"packagelists/core-packages-image.json",
"packagelists/marketplace-tools-packages.json",
"packagelists/azurevm-packages.json"
"packagelists/azurevm-packages.json",
"packagelists/hyperv-packages.json"
],
"AdditionalFiles": {
"additionalconfigs/cloud-init.cfg": "/etc/cloud/cloud.cfg",
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/marketplace-gen1.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"PackageLists": [
"packagelists/core-packages-image.json",
"packagelists/marketplace-tools-packages.json",
"packagelists/azurevm-packages.json"
"packagelists/azurevm-packages.json",
"packagelists/hyperv-packages.json"
],
"AdditionalFiles": {
"additionalconfigs/cloud-init.cfg": "/etc/cloud/cloud.cfg",
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/marketplace-gen2-aarch64.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@
"PackageLists": [
"packagelists/core-packages-image-aarch64.json",
"packagelists/marketplace-tools-packages.json",
"packagelists/azurevm-packages.json"
"packagelists/azurevm-packages.json",
"packagelists/hyperv-packages.json"
],
"AdditionalFiles": {
"additionalconfigs/cloud-init.cfg": "/etc/cloud/cloud.cfg",
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/marketplace-gen2-fips.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@
"packagelists/fips-packages.json",
"packagelists/core-packages-image.json",
"packagelists/marketplace-tools-packages.json",
"packagelists/azurevm-packages.json"
"packagelists/azurevm-packages.json",
"packagelists/hyperv-packages.json"
],
"AdditionalFiles": {
"additionalconfigs/cloud-init.cfg": "/etc/cloud/cloud.cfg",
Expand Down
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/marketplace-gen2.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@
"PackageLists": [
"packagelists/core-packages-image.json",
"packagelists/marketplace-tools-packages.json",
"packagelists/azurevm-packages.json"
"packagelists/azurevm-packages.json",
"packagelists/hyperv-packages.json"
],
"AdditionalFiles": {
"additionalconfigs/cloud-init.cfg": "/etc/cloud/cloud.cfg",
Expand Down
1 change: 1 addition & 0 deletions toolkit/imageconfigs/packagelists/azurevm-packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"cloud-init-azure-kvp",
"cloud-utils-growpart",
"dhcp-client",
"dracut-hyperv",
"grubby",
"hyperv-daemons",
"kexec-tools",
Expand Down
2 changes: 2 additions & 0 deletions toolkit/imageconfigs/packagelists/base-image-packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
"tdnf-plugin-repogpgcheck",
"util-linux",
"zlib",
"dracut-hostonly",
"dracut-vrf",
"initramfs"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
"cronie-anacron",
"logrotate",
"core-packages-base-image",
"dracut-hostonly",
"dracut-vrf",
"initramfs"
],
"_comment": "Install 'initramfs' last to avoid unnecessary regeneration when other packages, such as 'kernel', are installed."
Expand Down
2 changes: 2 additions & 0 deletions toolkit/imageconfigs/packagelists/core-packages-image.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
"cronie-anacron",
"logrotate",
"core-packages-base-image",
"dracut-hostonly",
"dracut-vrf",
"initramfs"
],
"_comment": "Install 'initramfs' last to avoid unnecessary regeneration when other packages, such as 'kernel', are installed."
Expand Down
1 change: 1 addition & 0 deletions toolkit/imageconfigs/packagelists/hyperv-packages.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"packages": [
"dracut-hyperv",
"hyperv-daemons"
]
}
3 changes: 2 additions & 1 deletion toolkit/imageconfigs/packagelists/qemu-guest-packages.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"packages": [
"qemu-guest-agent"
"qemu-guest-agent",
"dracut-virtio"
]
}
Loading

0 comments on commit d7910ee

Please sign in to comment.