From 5db2dbd62cad9ba4aa1c7d9845260245466d1ca8 Mon Sep 17 00:00:00 2001 From: Yuan Bai Date: Fri, 9 Nov 2018 17:03:58 +0800 Subject: [PATCH] fix5209 nodeset cannot find pxelinux.0 (#5783) * distro pxelinux.0 default path is changed in ubuntu 16.04 --- xCAT-server/lib/xcat/plugins/mknb.pm | 4 ++++ xCAT-server/lib/xcat/plugins/pxe.pm | 21 ++++++++------------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/mknb.pm b/xCAT-server/lib/xcat/plugins/mknb.pm index b352f6a5f..a24ad1870 100644 --- a/xCAT-server/lib/xcat/plugins/mknb.pm +++ b/xCAT-server/lib/xcat/plugins/mknb.pm @@ -253,6 +253,10 @@ sub process_request { copy("/usr/lib/syslinux/pxelinux.0", "$tftpdir/pxelinux.0"); } elsif (-r "/usr/share/syslinux/pxelinux.0") { copy("/usr/share/syslinux/pxelinux.0", "$tftpdir/pxelinux.0"); + } elsif ("/usr/lib/PXELINUX/pxelinux.0") { + copy("/usr/lib/PXELINUX/pxelinux.0", "$tftpdir/pxelinux.0"); + } else { + copy("/opt/xcat/share/xcat/netboot/syslinux/pxelinux.0", "$tftpdir/pxelinux.0"); } if (-r "$tftpdir/pxelinux.0") { chmod(0644, "$tftpdir/pxelinux.0"); diff --git a/xCAT-server/lib/xcat/plugins/pxe.pm b/xCAT-server/lib/xcat/plugins/pxe.pm index 0031d9bdf..dab9cbe81 100644 --- a/xCAT-server/lib/xcat/plugins/pxe.pm +++ b/xCAT-server/lib/xcat/plugins/pxe.pm @@ -478,24 +478,19 @@ sub process_request { } #end prescripts code - if (!-r "$tftpdir/pxelinux.0") { - unless (-r "/usr/lib/syslinux/pxelinux.0" or -r "/usr/share/syslinux/pxelinux.0") { - $::PXE_callback->({ error => ["Unable to find pxelinux.0 "], errorcode => [1] }); - return; + my @pxelinuxpaths=("/usr/lib/syslinux/pxelinux.0","/usr/share/syslinux/pxelinux.0","/usr/lib/PXELINUX/pxelinux.0","/opt/xcat/share/xcat/netboot/syslinux/pxelinux.0"); + foreach $path (@pxelinuxpaths) { + if (-r "$path") { + copy("$path","$globaltftpdir/pxelinux.0"); + chmod(0644, "$globaltftpdir/pxelinux.0"); + last; } - if (-r "/usr/lib/syslinux/pxelinux.0") { - copy("/usr/lib/syslinux/pxelinux.0", "$tftpdir/pxelinux.0"); - } else { - copy("/usr/share/syslinux/pxelinux.0", "$tftpdir/pxelinux.0"); - } - chmod(0644, "$tftpdir/pxelinux.0"); } - unless (-r "$tftpdir/pxelinux.0") { - $::PXE_callback->({ errror => ["Unable to find pxelinux.0 from syslinux"], errorcode => [1] }); + unless (-r "$globaltftpdir/pxelinux.0") { + $::PXE_callback->({ errror => ["Unable to find pxelinux.0 from syslinux or pxelinux"], errorcode => [1] }); return; } - $errored = 0; my %bphash; my $inittime = 0;