<div dir="ltr">Hi John, Toomas,<div><br></div><div>Thank you very much.</div><div><br></div><div>I changed my config to match your config, John, however, I still have an error (which is a new one).</div><div><br></div><div>First of all, it boots fine (the first time), launching the install, retrieving syslinux.efi, but it detects the class "GRUB_PC" instead of "GRUB_EFI" (obviously, it should load GRUB_EFI !).</div><div><br></div><div>```</div><div><div>root@faiserv:/srv/fai/config# grep -r GRUB_PC .</div><div>./package_config/DEBIAN:PACKAGES install GRUB_PC</div><div>./package_config/UBUNTU:PACKAGES install GRUB_PC</div><div>./class/60-misc:    ifclass -o GRUB_PC GRUB_EFI ||echo GRUB_PC</div><div><br></div><div>root@faiserv:/srv/fai/config# find . -name GRUB_PC</div><div>./scripts/GRUB_PC</div><div>./disk_config/GRUB_PC</div></div><div><br></div><div><div>root@faiserv:/srv/fai/config# grep -r GRUB_EFI .</div><div>./package_config/GRUB_EFI:PACKAGES aptitude GRUB_EFI</div><div>./package_config/DEBIAN:PACKAGES install GRUB_EFI</div><div>./package_config/UBUNTU:PACKAGES install GRUB_EFI</div><div>./class/60-misc:    ifclass -o GRUB_PC GRUB_EFI ||echo GRUB_PC</div><div><br></div><div>root@faiserv:/srv/fai/config# find . -name GRUB_EFI</div><div>./package_config/GRUB_EFI</div><div>./scripts/GRUB_EFI</div><div>./disk_config/GRUB_EFI</div></div><div>```<br></div><div><br></div><div>I am a bit lost (...); I do not why it is loading GRUB_PC instead of GRUB_EFI.</div><div><br></div><div>I also tried to switch to the DEMO class to check if it comes from my defined class; I get the same result: it load also the GRUB_PC class.</div><div><br></div><div>My 60-misc class is :</div><div>```</div><div><div>cat class/60-misc</div><div>#! /bin/bash</div><div><br></div><div>ifclass -o CENTOS SLC && exit 0</div><div>if ifclass -o I386 AMD64 ; then</div><div>    ifclass -o GRUB_PC GRUB_EFI ||echo GRUB_PC</div><div>fi</div></div><div>```</div><div><br></div><div>Best regards,</div><div>Rémy.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">Le ven. 6 juil. 2018 à 17:14, John G Heim <<a href="mailto:jheim@math.wisc.edu">jheim@math.wisc.edu</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry to reply to your posts out of order but I would not follow the <br>
advice in that message. It is at least out dated. You do not have to <br>
change your dhcp config after each install and you can continue to use <br>
your fai-chboot config files.  Syslinux does support EFI booting. It's <br>
in the syslinux-efi package.<br>
<br>
Here is the code in my dhcp config file that sets the filename option <br>
depending on EFI/BIOS boot:<br>
<br>
=== begin ===<br>
# tell a kernel how to boot via PXE or NFS<br>
server-name faiserver;<br>
next-server faiserver;<br>
# Check pxe boot code #93 to determine whether we are booting via BIOS <br>
or EFI<br>
# 2018-07-04: jheim<br>
option architecture-type code 93 = unsigned integer 16;<br>
class "pxeclients" {<br>
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";<br>
        if option architecture-type = 00:00 {<br>
                filename "fai/pxelinux.0";<br>
        } else {<br>
                filename "fai/syslinux.efi64";<br>
        }<br>
}<br>
=== end ===<br>
<br>
The file syslinux.efi64 is from the debian syslinux-efi package. It's <br>
original name/path was /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi. I <br>
renamed it syslinux.efi64 to distinguish it from the 32-bit syslinux.efi <br>
file. Then I decided not to bother with 32-bit EFI boots. You also need <br>
some libs in your tftp directory to support EFI booting via syslinux. I <br>
think if you modify your dhcp config as abobe, copy the necessary files <br>
from the syslinux-efi package to your tftp space, you'll successfully <br>
boot into the FAI install. You will also need to create new disk config <br>
files to partition via gpt instead of msdos. (More on that below.)<br>
<br>
1. Cut/passte above code into your dhcp config.<br>
2. apt-get install syslinux-efi<br>
3a. cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /srv/tftp/fai/<br>
3b. cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 /srv/tftp/fai/<br>
<br>
Done with the boot stuff. Now the disk config stuff.  Code that detects <br>
whether you have booted via BIOS or EFI already exists in the fai-doc <br>
examples. It's in a class script called 60-grub. It creates either <br>
GRUB_PC or GRUB_EFI class. You have to retain your old BIOS disk config <br>
files for older machines. I used to create a class called LARGEDISK for <br>
disks large enough to partition into /, /var/ usr, ... So I just renamed <br>
that GRUB_PC.  Then I copied that file to GRUB_EFI andmodified it for <br>
gpt partitioning and EFI boot. It looks like this:<br>
<br>
=== begin ===<br>
# 2018-07-04: jheim<br>
disk_config disk1 disklabel:gpt fstabkey:label align-at:1<br>
primary /boot/efi 204800K vfat rw<br>
primary    /usr/local  157286400K    ext4     rw,relatime <br>
createopts="-L LOCALFS"<br>
primary    /           72G-          ext4     rw,relatime <br>
createopts="-L ROOTFS"<br>
primary    swap        8G            swap     rw <br>
createopts="-L SWAPFS"<br>
# EOF<br>
=== end ===<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
On 07/06/2018 07:27 AM, Rémy Dernat wrote:<br>
> Hi,<br>
> <br>
> I am trying to set up an UEFI boot pxe mainly because our hardware <br>
> servers do not support full legacy BIOS anymore (particularly hard disk <br>
> plugin on those servers).<br>
> <br>
> Our legacy pxelinux works just fine from a while now (and thanks for it).<br>
> <br>
> I followed this link : <br>
> <a href="https://lists.uni-koeln.de/pipermail/linux-fai/2014-February/010294.html" rel="noreferrer" target="_blank">https://lists.uni-koeln.de/pipermail/linux-fai/2014-February/010294.html</a><br>
> ... with no luck. I created an "UEFI" specific class to avoid the erase <br>
> of DEFAULT, and put everything in that new class, because we will need <br>
> to keep the pxelinux config.<br>
> <br>
> My tftp fai folder is organised like this:<br>
> ```<br>
> root@faiserv:/srv# tree -L 2<br>
> .<br>
> ├── fai<br>
> │   ├── config<br>
> │   └── nfsroot<br>
> ├── nfs4<br>
> └── tftp<br>
>      └── fai<br>
> <br>
> root@faiserv:/srv/tftp/fai# tree -L 2<br>
> .<br>
> ├── c2960s-universalk9-tar.150-2a.SE9.tar<br>
> ├── cisco-ios-150-2a.tar -> c2960s-universalk9-tar.150-2a.SE9.tar<br>
> ├── efi<br>
> │   ├── fonts<br>
> │   ├── grub.cfg<br>
> │   ├── grub.cfg.nok<br>
> │   ├── i386-pc<br>
> │   ├── locale<br>
> │   ├── pxelinux.cfg -> ../pxelinux.cfg<br>
> │   ├── unicode.pf2<br>
> │   └── x86_64-efi<br>
> ├── gpxelinux.0<br>
> ├── initrd.img-3.16.0-4-amd64<br>
> ├── initrd.img-3.16.0-6-amd64<br>
> ├── ldlinux.c32<br>
> ├── lpxelinux.0<br>
> ├── pxelinux.0<br>
> ├── pxelinux.0.back<br>
> ├── pxelinux.cfg<br>
> │   ├── 0A01FD03<br>
> │   ├── 0A01FFF2<br>
> │   ├── A226B5A1.disable<br>
> │   ├── A226B5A2.disable<br>
> │   ├── A226B5A3.disable<br>
> │   ├── A226B5A4.disable<br>
> │   ├── A226B5A5.disable<br>
> │   ├── A226B5A6.disable<br>
> │   ├── A226B5A7.disable<br>
> │   ├── A226B5A9<br>
> │   ├── A226B5AA.disable<br>
> │   ├── A226B5AB.disable<br>
> │   ├── A226B5B0.disable<br>
> │   ├── A226B5B4.disable<br>
> │   ├── A226B5B8<br>
> │   └── default<br>
> ├── syslinux.efi<br>
> ├── vmlinuz-3.16.0-4-amd64<br>
> └── vmlinuz-3.16.0-6-amd64<br>
> <br>
> ```<br>
> <br>
> I do not know if the UEFI is also searching for a filename matching its <br>
> IP address with the hexa value, so I created a symbolic link to the <br>
> pxelinux.cfg parent directory...<br>
> <br>
> <br>
> I have no problem with DHCP, and my client is loading the grub.cfg menu. <br>
> However, it fails while searching for the nfsroot. The error I get (with <br>
> debug=all) is (replacing sensitive informations):<br>
> ```<br>
> kern/disk.c:196 : Opening `tftp,IP.IP.IP.IP'...<br>
> disk/efi/efidisk.c:461 : opening tftp<br>
> kern/disk.c: 281: Opening `tftp,IP.IP.IP.IP' failed.<br>
> kern/disk.c: 295: Closing `tftp'.<br>
> ```<br>
> <br>
> <br>
> Here is my grub.cfg config :<br>
> ```<br>
> root@faiserv:/srv/tftp/fai/efi# cat grub.cfg<br>
> set menu_color_normal=white/black<br>
> set menu_color_highlight=black/light-gray<br>
> set timeout=5<br>
> # for debug:<br>
> #set pager=1<br>
> set debug=all<br>
> <br>
> insmod efi_gop<br>
> insmod efi_uga<br>
> if loadfont ${prefix}/unicode.pf2<br>
> then<br>
>      insmod gfxterm<br>
>      set gfxmode=auto<br>
>      set gfxpayload=keep<br>
>      terminal_output gfxterm<br>
> fi<br>
> <br>
> menuentry "Install from FAI" {<br>
>       linux  vmlinuz-3.16.0-6-amd64 rw ip=dhcp root=/dev/nfs <br>
> nfsroot=IP.IP.IP.IP:/srv/fai/nfsroot <br>
> FAI_FLAGS=verbose,sshd,createvt,reboot FAI_ACTION=install <br>
> server=faiserv.acme.ltd FAI_CONFIG_SRC=nfs://faiserv.acme.ltd/srv/fai/config<br>
>       initrd initrd.img-3.16.0-6-amd64<br>
> }<br>
> <br>
> ```<br>
> <br>
> <br>
> Any help would be greatly appreciated.<br>
> <br>
> Thanks,<br>
> Rémy<br>
</blockquote></div>