From 7bcf328b0f11c61ee84a8240b639a92efb54e3d6 Mon Sep 17 00:00:00 2001 From: penguhyang Date: Tue, 20 Sep 2016 11:08:27 +0800 Subject: [PATCH] support sles12 for statelite, nfs and ramdisk (#1774) --- xCAT-server/lib/xcat/plugins/sles.pm | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/sles.pm b/xCAT-server/lib/xcat/plugins/sles.pm index 7429da3cf..2de029f12 100644 --- a/xCAT-server/lib/xcat/plugins/sles.pm +++ b/xCAT-server/lib/xcat/plugins/sles.pm @@ -527,8 +527,11 @@ sub mknetboot $nfsdir = $resHash->{nfsdir} . "/netboot/$osver/$arch/$profile"; } } - $kcmdline = - "NFSROOT=$nfssrv:$nfsdir STATEMNT="; + if (&using_dracut($rootimgdir)) { + $kcmdline = "root=nfs:$nfssrv:$nfsdir/rootimg:ro STATEMNT="; + } else { + $kcmdline = "NFSROOT=$nfssrv:$nfsdir STATEMNT="; + } } else { $kcmdline = "imgurl=$httpmethod://$imgsrv/$rootimgdir/rootimg-statelite.gz STATEMNT="; @@ -703,7 +706,13 @@ sub mknetboot } my $initrdstr = "$rtftppath/initrd-stateless.gz"; - $initrdstr = "$rtftppath/initrd-statelite.gz" if ($statelite); + + # special case for the dracut-enabled OSes + if ($statelite) { + unless (&using_dracut($rootimgdir) && ($rootfstype eq "ramdisk")) { + $initrdstr = "$rtftppath/initrd-statelite.gz"; + } + } if ($statelite) { @@ -1722,6 +1731,19 @@ erver, if so, stop it first and try again" ], } } +# Check whether the dracut is supported by this os +sub using_dracut +{ + my $rootimgdir = shift; + my $chkcmd = "chroot $rootimgdir/rootimg dracut --list-modules"; + my $rc = system($chkcmd); + if ($rc) { + return 0; + } else { + return 1; + } +} + sub copycd { my $request = shift;