From 9ed6596820c3370a2d2e070a3d58a2e9636fd752 Mon Sep 17 00:00:00 2001 From: mxi1 Date: Wed, 21 Apr 2010 09:36:22 +0000 Subject: [PATCH] -defect 2990306 is fixed; if two or more kernel packages are installed into $rootimg_dir/boot/, the value of "<$rootimg_dir/boot/vmlinux-*>" will be one array, not a file, which can lead to one error for the copy() subroutine in File::Copy. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@5835 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/share/xcat/netboot/sles/genimage | 60 ++++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/xCAT-server/share/xcat/netboot/sles/genimage b/xCAT-server/share/xcat/netboot/sles/genimage index fe6d7f9f1..5dcd8d422 100755 --- a/xCAT-server/share/xcat/netboot/sles/genimage +++ b/xCAT-server/share/xcat/netboot/sles/genimage @@ -525,25 +525,16 @@ sub getlibs { sub mkinitrd { mkpath("/tmp/xcatinitrd.$$/bin"); - if($basekernelver eq $kernelver) { - if (-f "$rootimg_dir/boot/vmlinuz-$kernelver") { - copy(<$rootimg_dir/boot/vmlinuz-*>,"$destdir/kernel"); - } elsif (-f "$rootimg_dir/boot/vmlinux-$kernelver"){ - copy(<$rootimg_dir/boot/vmlinux-*>,"$destdir/kernel"); - } - } - else { - if(-r "$rootimg_dir/boot/vmlinuz-$kernelver") { - copy("$rootimg_dir/boot/vmlinuz-$kernelver","$destdir/kernel"); - } elsif(-r "$rootimg_dir/boot/vmlinux-$kernelver") { - copy("$rootimg_dir/boot/vmlinux-$kernelver","$destdir/kernel"); - } elsif(-r "/boot/vmlinuz-$kernelver") { - copy("/boot/vmlinuz-$kernelver","$destdir/kernel"); - } elsif(-r "/boot/vmlinux-$kernelver") {#for SLES10,11 - copy("/boot/vmlinux-$kernelver","$destdir/kernel"); - } else { - xdie("Cannot read /boot/vmlinuz-$kernelver"); - } + if(-r "$rootimg_dir/boot/vmlinuz-$kernelver") { + copy("$rootimg_dir/boot/vmlinuz-$kernelver","$destdir/kernel"); + } elsif(-r "$rootimg_dir/boot/vmlinux-$kernelver") { + copy("$rootimg_dir/boot/vmlinux-$kernelver","$destdir/kernel"); + } elsif(-r "/boot/vmlinuz-$kernelver") { + copy("/boot/vmlinuz-$kernelver","$destdir/kernel"); + } elsif(-r "/boot/vmlinux-$kernelver") {#for SLES10,11 + copy("/boot/vmlinux-$kernelver","$destdir/kernel"); + } else { + xdie("Cannot read /boot/vmlinuz-$kernelver"); } symlink("bin","/tmp/xcatinitrd.$$/sbin"); mkpath("/tmp/xcatinitrd.$$/usr/bin"); @@ -1210,23 +1201,32 @@ sub generic_post { #This function is meant to leave the image in a state approxi system("sed -i '".'s/^\(TARGETS = .*\)$/\1 gettyset/'."' $rootimg_dir/etc/init.d/.depend.start"); system("ln -s ../gettyset $rootimg_dir/etc/init.d/rc3.d/S60gettyset"); } + + # is the following necesary ? + # it seems the kernel file will always be copied in the mkinitrd() subroutine if(($osver =~ /sles11/) || ($osver =~ /sles10/)) {#for sles11,sles10 - if(-e <$rootimg_dir/boot/vmlinux-*>) { - copy(<$rootimg_dir/boot/vmlinux-*>,"$destdir/kernel"); - } else { - unless (-e "$destdir/kernel") { - print qq{Error: couldn't find the suitable kernel in $rootimg_dir/boot/ directory and $destdir directory}; + if($kernelver) { + if(-e <$rootimg_dir/boot/vmlinux-$kernelver>) { + copy(<$rootimg_dir/boot/vmlinux-$kernelver>,"$destdir/kernel"); + } else { + print qq{Error: couldn't find the suitable kernel in $rootimg_dir/boot/ for $kernelver!}; exit 1; } + } else { + my @files = <$rootimg_dir/boot/vmlinux-*>; + copy($files[0], "$destdir/kernel") if(scalar @files > 0); } - }else { - if(-e <$rootimg_dir/boot/vmlinuz-*>) { - copy(<$rootimg_dir/boot/vmlinuz-*>,"$destdir/kernel"); - } else { - unless (-e "$destdir/kernel") { - print qq{Error: couldn't find the suitable kernel in $rootimg_dir/boot/ directory and $destdir directory}; + }else { # is it necessary? + if($kernelver) { + if(-e <$rootimg_dir/boot/vmlinuz-$kernelver>) { + copy(<$rootimg_dir/boot/vmlinuz-*>,"$destdir/kernel"); + } else { + print qq{Error: couldn't find the suitable kernel in $rootimg_dir/boot/ for $kernelver!}; exit 1; } + } else { + my @files = <$rootimg_dir/boot/vmlinuz-*>; + copy($files[0], "$destdir/kernel") if (scalar @files > 0); } } }