Skip to content

Debian Setup TFTP/NFS

Running Debian rootfs on Variscite board using TFTP & NFS

On the Host

Prepare the rootfs folder:

mkdir -p ~/rootfs_debian_nfs
cd ~/rootfs_debian_nfs
sudo tar -I unzstd -xvf /build_lsdk2412/images/rootfs_lsdk2412_debian_desktop_arm64.tar.zst -C ~/rootfs_debian_nfs

Make sure the NFS server is installed:

sudo apt install nfs-kernel-server

Edit /etc/exports, e.g.:

sudo gedit /etc/exports

And add the following line to it (replace with the actual username):

/home/<uname>/rootfs_debian_nfs    *(rw,sync,no_root_squash,no_all_squash,no_subtree_check)

Restart the NFS server:

sudo /etc/init.d/nfs-kernel-server restart

Make sure the TFTP server is installed:

sudo apt install xinetd tftpd tftp

Verify the following:

ls /usr/sbin/in.tftpd
sudo gedit /etc/xinetd.d/tftp
service tftp
{
    protocol = udp
    port = 69
    socket_type = dgram
    wait = yes
    user = nobody
    server = /usr/sbin/in.tftpd
    server_args = /tftpboot
    disable = no
}

And run:

sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
sudo /etc/init.d/xinetd restart
cd
sudo cp -a output/*.dtb /tftpboot
sudo cp output/Image.gz /tftpboot

On the Target

Make sure you have a serial connection to the target.

Boot the board and hit any key to stop the autoboot and get to the U-Boot command line.

Replace <HOST_IP_ADDRESS> with the actual IP address of your host. Run ifconfig on the host to get it.

setenv serverip <HOST_IP_ADDRESS>

Replace <uname> with the actual username.

setenv nfsroot /home/<uname>/rootfs_debian_nfs
setenv bootcmd run netboot
saveenv

You are all set. Connect the target board to the same network as the host using an Ethernet cable, power cycle it and it should boot over NFS.