Network Boot Raspberry Pi

This is a post is meant for myself.

Prepare tftp boot folder

$ sudo mkdir /mnt/<tftpboot>
$ sudo mount -t nfs <ip_of_NAS>:/volume1/<tftpboot> /mnt/<tftpboot>
$ sudo cp /boot/firmware/bootcode.bin /mnt
Get Raspberry Pi Serial Number 
$ grep Serial /proc/cpuinfo
$ sudo mkdir /mnt/<tftpboot>/<rpi_serial>
$ sudo rsync -avhP /boot/firmware/ /mnt/<tftpboot>/<rpi_serial>

Prepare pxe share folder

$ sudo mkdir /mnt/pxeshare
$ sudo mount -t nfs <ip_of_NAS>:/volume1/pxeshare /mnt/pxeshare
$ sudo mkdir /mnt/pxeshare/<rpi_folder>
$ sudo rsync -avhP --exclude /boot --exclude /proc --exclude /sys --exclude /dev --exclude /mnt / /mnt/pxeshare/<rpi_folder>/
$ sudo mkdir /mnt/pxeshare/<rpi_folder>/{dev,proc,sys,boot,mnt}

Edit /boot/firmware/cmdline.txt

$ mv cmdline.txt cmdline.bak.txt 
$ console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=<ip_of_NAS>:/volume1/pxeshare/<rpi_folder> rw ip=dhcp elevator=deadline rootwait  cfg80211.ieee80211_regdom=SG > /mnt/tftpboot/cmdline.txt

Edit /etc/fstab

$ sudo sed -i "2i <ip_of_NAS>:/volume1/tftpboot/<rpi_serial> /boot/firmware nfs _netdev 0 0" /mnt/pxeshare/<rpi_folder>/etc/fstab

Enable zram and disable swap

$ sudo dphys-swapfile swapoff 
$ sudo dphys-swapfile uninstall 
$ sudo systemctl stop dphys-swapfile.service 
$ sudo systemctl disable dphys-swapfile.service 
$ sudo systemctl mask dphys-swapfile.service 
$ sudo apt-get install zram-tools

References

https://warmestrobot.com/blog/2024/06/27/raspberry-pi-network-boot-guide-2/
https://rob-ferguson.me/how-to-pxe-boot-your-rpi/

You may also like...

Leave a Reply