From a983faf7361f74849f64fe36358322ce68b5680d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Tue, 25 Aug 2026 00:17:20 -0300 Subject: [PATCH] fix(genesis): retire stale legacy initramfs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com> --- xCAT-server/lib/xcat/plugins/mknb.pm | 1 + xCAT-server/lib/xcat/plugins/sles.pm | 39 +++++++++++++++++++++------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/mknb.pm b/xCAT-server/lib/xcat/plugins/mknb.pm index 541f6e91a..51a8a2105 100644 --- a/xCAT-server/lib/xcat/plugins/mknb.pm +++ b/xCAT-server/lib/xcat/plugins/mknb.pm @@ -269,6 +269,7 @@ sub _install_prebuilt_genesis { } unlink(values(%backups)); + unlink("$destination_dir/genesis.fs.$arch.lzma"); return ("$destination_dir/genesis.fs.$arch.gz", undef); } diff --git a/xCAT-server/lib/xcat/plugins/sles.pm b/xCAT-server/lib/xcat/plugins/sles.pm index ec35e0f15..6aaa5cfb9 100644 --- a/xCAT-server/lib/xcat/plugins/sles.pm +++ b/xCAT-server/lib/xcat/plugins/sles.pm @@ -44,6 +44,31 @@ sub handled_commands }; } +sub _find_genesis_boot_files +{ + my ($tftpdir, $arch) = @_; + return unless defined($arch) && $arch =~ /\A[A-Za-z0-9_]+\z/; + + my $directory = "$tftpdir/xcat"; + my $kernel = "genesis.kernel.$arch"; + return unless -r "$directory/$kernel"; + + my $lzma = "genesis.fs.$arch.lzma"; + my $gzip = "genesis.fs.$arch.gz"; + my $initrd; + if (-r "$directory/$lzma" && -r "$directory/$gzip") { + $initrd = -C "$directory/$lzma" > -C "$directory/$gzip" + ? $gzip + : $lzma; + } elsif (-r "$directory/$lzma") { + $initrd = $lzma; + } elsif (-r "$directory/$gzip") { + $initrd = $gzip; + } + return unless defined($initrd); + return ($kernel, $initrd); +} + sub precreate_sles11_mypostscript { my ($node, $osver, $callback) = @_; @@ -1450,10 +1475,10 @@ sub mksysclone # copy kernel and initrd from image dir to /tftpboot my $ramdisk_size = 200000; + my ($genesis_kernel, $genesis_initrd) = + _find_genesis_boot_files($tftpdir, $arch); - if (-r "$tftpdir/xcat/genesis.kernel.$arch" - and (-r "$tftpdir/xcat/genesis.fs.$arch.gz" - or -r "$tftpdir/xcat/genesis.fs.$arch.lzma")) + if (defined($genesis_kernel) && defined($genesis_initrd)) { #We have a shot... my $ent = $rents{$node}->[0]; @@ -1505,12 +1530,8 @@ sub mksysclone } $kcmdline .= " XCAT=$xcatmaster:$xcatdport xcatd=$xcatmaster:$xcatdport SCRIPTNAME=$imagename"; - my $i = "xcat/genesis.fs.$arch.gz"; - if (-r "$tftpdir/xcat/genesis.fs.$arch.lzma") { - $i = "xcat/genesis.fs.$arch.lzma"; - } - $bootparams->{$node}->[0]->{kernel} = "xcat/genesis.kernel.$arch"; - $bootparams->{$node}->[0]->{initrd} = $i; + $bootparams->{$node}->[0]->{kernel} = "xcat/$genesis_kernel"; + $bootparams->{$node}->[0]->{initrd} = "xcat/$genesis_initrd"; $bootparams->{$node}->[0]->{kcmdline} = $kcmdline; } else