From b2d2e187c9ed4ecd16e84ee1511c847b9d437d46 Mon Sep 17 00:00:00 2001 From: Purna Pavan Chandra Aekkaladevi Date: Fri, 14 Feb 2025 21:18:38 +0530 Subject: [PATCH] dom0_kernel_installer: generate initramfs --- lisa/transformers/dom0_kernel_installer.py | 49 ++++++++++++++++++---- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/lisa/transformers/dom0_kernel_installer.py b/lisa/transformers/dom0_kernel_installer.py index 011d1f368d..0df2bd27e4 100644 --- a/lisa/transformers/dom0_kernel_installer.py +++ b/lisa/transformers/dom0_kernel_installer.py @@ -10,7 +10,7 @@ from lisa import schema from lisa.node import Node from lisa.operating_system import CBLMariner -from lisa.tools import Cp, Echo, Ln, Ls, Sed, Tar, Uname +from lisa.tools import Cp, Cat, Echo, Ln, Ls, Sed, Tar, Uname from lisa.util import field_metadata from .kernel_installer import BaseInstaller, BaseInstallerSchema @@ -128,7 +128,9 @@ def install(self) -> str: ) else: # Mariner 3.0 initrd - target = f"/boot/initramfs-{current_kernel}.img" + initramfs = f"/boot/initramfs-{new_kernel}.img" + dracut_cmd = f"dracut --force {initramfs} {new_kernel}" + node.execute(dracut_cmd, sudo=True, shell=True) link = f"/boot/initramfs-{new_kernel}.img" if isinstance(node.os, CBLMariner) and mariner_version == 2: @@ -136,11 +138,11 @@ def install(self) -> str: target = f"/boot/initrd.img-{current_kernel}" link = f"/boot/initrd.img-{new_kernel}" - ln = node.tools[Ln] - ln.create_link( - target=target, - link=link, - ) + ln = node.tools[Ln] + ln.create_link( + target=target, + link=link, + ) if kernel_config_path: # Copy kernel config @@ -243,6 +245,9 @@ def _update_mariner_config( initrd_regexp = f"mariner_initrd_mshv=initrd.img-{current_kernel}" initrd_replacement = f"mariner_initrd_mshv=initrd.img-{new_kernel}" + cat = node.tools[Cat] + cat.read(mariner_config, sudo=True, force_run=True) + # Modify file to point new kernel binary sed.substitute( regexp=vmlinuz_regexp, @@ -258,3 +263,33 @@ def _update_mariner_config( file=mariner_config, sudo=True, ) + + uuid = node.execute( + "lsblk -o MOUNTPOINT,UUID | grep '/ ' | awk '{print $2}'", + sudo=True, + shell=True, + ).stdout.strip() + partuuid = node.execute( + "lsblk -o MOUNTPOINT,PARTUUID | grep '/ ' | awk '{print $2}'", + sudo=True, + shell=True, + ).stdout.strip() + + print(f"root partition UUID: {uuid}") + print(f"root partition PARTUUID: {partuuid}") + + sed.substitute( + regexp=f"root=UUID={uuid}", + replacement=f"root=PARTUUID={partuuid}", + file=mariner_config, + sudo=True, + ) + + # sed.substitute( + # regexp="root=UUID=117cee6d-733a-487f-b6db-319c4319c23c", + # replacement="root=PARTUUID=08f32d68-e577-4f1c-b236-e0d4ff7ae6de", + # file=mariner_config, + # sudo=True, + # ) + + cat.read(mariner_config, sudo=True, force_run=True)