[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[resolved] PXE booting uefi machines (x86)



To followup on this.
The hardware I was testing with showed UEFI options in the setup
screens but apparently it was incomplete - there was no support
for UEFI netbooting, even after upgrading to the latest firmware.
Testing with different hardware worked on my initial setup, first time.
So now I am able to network-boot either BIOS or UEFI clients, using
the same config file.

Vince

In case anyone cares here are the details, recast to avoid confusion.
If anyone thinks this would be a useful adtition to the manual please
let me know.
 
The dhcp server gives the following paths on the tftp server:
 - BIOS clients: /pxelinux.0 or /bios/lpxelinux.0
 - UEFI clients: /efi64/syslinux.efi
 
The tftp server is Stretch with tftpd-hpa and the --secure option.

The server directory tree layout is:
 
/srv/tftpboot/
  bios/
    *.c32             # copied from  /usr/lib/syslinux/modules/bios
    lpxelinux.0
    pxelinux.cfg/
      default -> ../../default.cfg

  debian/daily/amd64/debian-installer/amd64/
    bootnetx64.efi
    boot-screens/
    grub/
    grubx64.efi
    initrd.gz
    linux
    pxelinux.0
    pxelinux.cfg/
      default          # standard netboot.tar.gz version

  default.cfg          # customised master PXE config file
 
  efi64/
    syslinux.efi
    *.c32              #copied from /usr/lib/syslinux/modules/efi64/
    ldlinux.e64        #ditto
    pxelinux.cfg/
      default -> ../../default.cfg
 
  ldlinux.c32  -> bios/ldlinux.c32
  pxelinux.0   -> bios/lpxelinux.0
  pxelinux.cfg -> bios/pxelinux.cfg


There is a simpler way to set things up that will work for stable
releases (but not for the 'daily' installer images).
Download the netboot installer tarball (e.g. [1]), unpack the
netboot.tar.gz file in /srv/tftpboot and add the three symlinks.

/srv/tftpboot
  debian-installer/amd64/
    bootnetx64.efi
    boot-screens/
      ldlinux.c32
    grub/
    grubx64.efi
    initrd.gz
    linux
    pxelinux.0
    pxelinux.cfg/
      default          # standard netboot.tar.gz version

  ldlinux.c32  -> debian-installer/amd64/boot-screens/ldlinux.c32
  pxelinux.0   -> debian-installer/amd64/pxelinux.0
  pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg

The di-netboot-assistant package can help take care of this for you.

On the dhcp server set the file paths to
 - BIOS clients: /pxelinux.0
 - UEFI clients: /debian-installer/amd64/bootnetx64.efi

The bootnetx64.efi file behaves differently to syslinux.efi and
just Does The Right Thing if you set up the TFTP tree as shown.

[1] http://deb.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz

Reply to: