Skip to content

Debian Setup TFTP/NFS

Running Debian rootfs on Variscite board using TFTP & NFS

On the Host

Prepare the rootfs folder:

cd ~/debian_imx8qm_var_som
mkdir -p ~/rootfs_debian_nfs
cd ~/rootfs_debian_nfs
sudo tar xvf ~/debian_imx8qm_var_som/output/rootfs.tar.gz -C .

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-get 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 ~/debian_imx8qm_var_som
sudo cp -a ~/rootfs_debian_nfs/boot/*.dtb /tftpboot
sudo cp ~/rootfs_debian_nfs/boot/Image.gz /tftpboot

Make adjustments to the rootfs:

When using NetworkManager on the target, configure NetworkManager not to manage the interface used for the NFS boot by adding the following to ~/rootfs_debian_nfs/etc/NetworkManager/NetworkManager.conf:

[keyfile]
unmanaged-devices=interface-name:eth0

Enable DNS:

sudo ln -fs /proc/net/pnp ~/rootfs_debian_nfs/etc/resolv.conf

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.