Skip to content

Netboot debug checklist

Carl Karsten edited this page Mar 26, 2026 · 2 revisions

Things I have done to verify all the parts are in place.

dnsmasq pi netboot

val2:~$ cat /etc/dnsmasq.d/rpi.conf 
pxe-service=0,"Raspberry Pi Boot"

tftp

val2:~$ tftp 10.21.0.1 
tftp> get /srv/tftp/f1b7bb5a/config.txt
tftp> get /srv/tftp/f1b7bb5a/cmdline.txt
tftp> quit
val2:~$ cat cmdline.txt
# /boot/cmdline.txt
root=/dev/nfs nfsroot=10.21.0.1:/srv/nfs/rpi/trixie/root,nfsvers=3 ro ip=dhcp rootwait consoleblank=0 netconsole=@/,@10.21.0.1/ overlayroot= console=serial0,115200

nfs

@val2:~$ cat /etc/exports 
/srv/nfs/rpi/trixie/boot 10.21.0.1/24(rw,sync,no_subtree_check,no_root_squash)
/srv/nfs/rpi/trixie/root 10.21.0.1/24(rw,sync,no_subtree_check,no_root_squash)
val2:~$ mkdir -p /tmp/nfs/boot /tmp/nfs/root
val2:~$ sudo mount -t nfs -o nfsvers=3,ro 10.21.0.1:/srv/nfs/rpi/trixie/root /tmp/nfs/root
val2:~$ cat /tmp/nfs/root/etc/fstab 
proc            /proc           proc    defaults          0       0
10.21.0.1:/srv/nfs/rpi/trixie/boot /boot/firmware nfs defaults,auto,rw,nfsvers=3 0 0
10.21.0.1:/srv/nfs/rpi/trixie/root / nfs defaults,auto,rw,nfsvers=3 0 0

val2:~$ sudo mount -t nfs -o nfsvers=3,rw 10.21.0.1:/srv/nfs/rpi/trixie/boot /tmp/nfs/boot

val2:~$ touch /tmp/nfs/boot/ssh
touch: cannot touch '/tmp/nfs/boot/ssh': Permission denied

val2:~$ sudo touch /tmp/nfs/boot/ssh
val2:~$ ls -la /tmp/nfs/boot/ssh 
-rw-r--r-- 1 root root 0 Mar 26 09:26 /tmp/nfs/boot/ssh


val2:~$ findmnt /tmp/nfs/boot 
TARGET        SOURCE                             FSTYPE OPTIONS
/tmp/nfs/boot 10.21.0.1:/srv/nfs/rpi/trixie/boot nfs    rw,nosuid,nodev,noexec,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.21.0.1,mountvers=3,mountport=36735,mountproto=udp,local_lock=none,addr=10.21.0.1

val2:~$ ls -lad /srv/nfs/rpi/trixie/boot
drwxr-xr-x 3 root root 4096 Mar 26 08:30 /srv/nfs/rpi/trixie/boot

ssh

videoteam@val2:~$ cat /tmp/nfs/boot/user-data 
# cloud-config
---

users:
  - name: pi
    groups: users,adm,dialout,netdev,plugdev,cdrom,input,gpio,spi,i2c,sudo
    shell: /bin/bash
    lock_passwd: false  # Set to true to disable password login entirely
    plain_text_password: raspberry
    sudo: ALL=(ALL) NOPASSWD:ALL  # Allow passwordless sudo for this user

# Additional Raspberry Pi OS option (not available on generic cloud-init images)
enable_ssh: true  # Enables the SSH server on first boot

Clone this wiki locally