blog:netboot_netbsd

There are some differences in how 32bit and 64bit bootloaders work to PXE boot NetBSD on Intel systems.

To successfully netboot, you need two files:

  • netBSD-INSTALL.gz - NetBSD kernel and miniroot sourced from: /pub/NetBSD/NetBSD-8.0/i386/binary/kernel/netbsd-INSTALL.gz
  • pxeboot_ia32.bin - Netboot loader sourced from: /pub/NetBSD/NetBSD-8.0/i386/installation/misc/pxeboot_ia32.bin

An example working syslinux menu entry is shown below:

LABEL BSD - NetBSD 8.0.0 amd64
KERNEL netbsd/amd64/8.0.0/pxeboot_ia32.bin
APPEND boot netbsd/amd64/8.0.0/netbsd-INSTALL.gz
TEXT HELP
Start the 64bit NetBSD 8.0.0 netboot installer.
ENDTEXT

For amd64, there is an additional awkward step in that the pxeboot_ia32.bin loader is hardcoded to expect the NetBSD kernel to be called netbsd in the root of the TFTP server. To get it to be served from anywhere other than there, you need to modify the PXE server (dnsmasq in our case) to catch the request and point it somewhere else.

This entry is added to dnsmasq.conf:

dhcp-vendorclass=netbsd_amd64,"NetBSD:i386:libsa"

… and will flag any TFTP requests from the NetBSD boot loader.

And then this entry:

dhcp-boot=net:netbsd_amd64,tftp:netbsd/amd64/8.0.0/netbsd-INSTALL.gz

… will redirect the boot file request to another location, in this case, the real location of the NetBSD 8.0.0 kernel image.

You can avoid having to put those entries in dnsmasq.conf, but you instead have to manually specify the path to the real kernel at the boot: prompt after selecting the NetBSD 8.0.0 AMD64 menu entry (it fails once trying to load the default kernel path).

Once all that is in place, it will boot and start the normal NetBSD installer - use HTTP/FTP or NFS as the source for installation media. I haven't yet found a preseed/automated installer harness for NetBSD.


Network booting NetBSD 8.0 on i386 is fairly simple, here's the syslinux menu entry I'm using:

LABEL BSD - NetBSD 8.0.0 i386
KERNEL syslinux/mboot.c32
APPEND netbsd/i386/8.0.0/netbsd-INSTALL.gz
TEXT HELP
Start the 32bit NetBSD 8.0.0 netboot installer.
ENDTEXT

Only one file is needed: netbsd-INSTALL.gz - which is sourced from: /pub/NetBSD/NetBSD-8.0/i386/binary/kernel/netbsd-INSTALL.gz

The kernel listed for the syslinux entry is just a standard binary found in most syslinux/pxelinux distributions; it is not specific to NetBSD.

Once loaded, the NetBSD installer will run. NFS/HTTP/FTP will have to be chosen as the installation medium.


Surprisingly, the 147/167/177bug firmware built in to the Motorola MVME single board computers supports network booting, not via anything as sophisticated as PXE, but by traditional BOOTP methods, and fortunately we can support that in any modern Linux system.

TBD

TBD

  • blog/netboot_netbsd.txt
  • Last modified: 2018/11/08 21:03
  • by john