Yocto Setup TFTP/NFS¶
Running Yocto rootfs on Variscite board using TFTP & NFS¶
On the Host¶
Prepare the rootfs folder:
$ cd ~/var-fslc-yocto
$ sudo mkdir rootfs
$ cd rootfs
$ sudo tar xvf ../build_xwayland//images/imx8mq-var-dart/fsl-image-gui-imx8mq-var-dart.tar.gz
Make sure the NFS server is installed:
Edit /etc/exports. E.g.
...and add the following line to it (replace
Restart the NFS server:
Make sure the TFTP server is installed:
# Ubuntu 24.04 and newer
$ sudo apt-get install xinetd tftpd-hpa tftp-hpa
# Ubuntu 22.04 and older
$ sudo apt-get install xinetd tftpd tftp
Configure tftpd-hpa for Ubuntu 24.04 and newer:
$ sudo nano /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
Configure tftpd for Ubuntu 22.04 and older:
$ ls /usr/sbin/in.tftpd
$ sudo nano /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 systemctl restart xinetd
$ sudo systemctl restart tftpd-hpa
$ sudo cp -a /home/<uname>/var-fslc-yocto/rootfs/boot/*.dtb /tftpboot
$ sudo cp /home/<uname>/var-fslc-yocto/rootfs/boot/Image.gz /tftpboot
The default kernel configuration should be modified to compile Ethernet driver into kernel image instead compiling it as a loadable module.
Follow our kernel compilation guide Build kernel from source code
Run "make menuconfig", go to "Device Drivers → Network device support → Ethernet driver support → Freescale devices → FEC ethernet controller" and press y.
Follow this same process to also change the following drivers to built-in:
CONFIG_AT803X_PHY=y
CONFIG_ADIN_PHY=y
Compile the kernel and copy arch/arm64/boot/Image.gz to /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 /home/
Enable DNS:
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. Run the following in the U-Boot command line:
=> setenv serverip <HOST_IP_ADDRESS> (replace <HOST_IP_ADDRESS> with the actual IP address of your host - run 'ifconfig' on the host to get it)
=> setenv nfsroot /home/<uname>/var-fslc-yocto/rootfs (replace <uname> with the actual username)
=> 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.