leapp-repository icon indicating copy to clipboard operation
leapp-repository copied to clipboard

feature request: support custom content inside upgrade initramfs

Open verdverm opened this issue 1 year ago • 6 comments

In the process of our efforts to support luks on c7->r8, we found that adding a custom overlay to be very helpful and require minimal changes. For the actual implementation, I would expect that this would be enabled and included via an ENV var.

LEAPP_CUSTOM_INITRAMFS_OVERLAY=<path> would turn this on and set src to CopyFile

diff --git a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/files/generate-initram.sh b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/files/generate-initram.sh
index 9648234c..205f8071 100755
--- a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/files/generate-initram.sh
+++ b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/files/generate-initram.sh
@@ -107,6 +107,7 @@ build() {
         --no-hostonly \
         --kver "$KERNEL_VERSION" \
         --kernel-image "vmlinuz-upgrade.$KERNEL_ARCH" \
+        --include /custom-overlay /
         "initramfs-upgrade.${KERNEL_ARCH}.img"
     popd || {
         echo "ERROR: Failed to change directory using 'popd'.";
diff --git a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py
index 5a686a47..b1dccd92 100644
--- a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py
+++ b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py
@@ -10,6 +10,7 @@ from leapp.models import RequiredUpgradeInitramPackages  # deprecated
 from leapp.models import UpgradeDracutModule  # deprecated
 from leapp.models import (
     BootContent,
+    CopyFile,
     TargetOSInstallationImage,
     TargetUserSpaceInfo,
     TargetUserSpaceUpgradeTasks,
@@ -229,6 +230,7 @@ def prepare_userspace_for_initram(context):
     # install all required rpms first, so files installed/copied later
     # will not be overwritten during the dnf transaction
     _install_initram_deps(packages)
+    files.append(CopyFile(src="/root/overlay", dst="/custom-overlay"))
     _copy_files(context, files)

verdverm avatar May 30 '24 16:05 verdverm