Yocto Setup TFTP/NFS: Difference between revisions

From Variscite Wiki
No edit summary
 
(9 intermediate revisions by 2 users not shown)
Line 3: Line 3:
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:B2QT_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:B2QT_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:Debian_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{COMMON_YOCTO_VARS}}<!--
--> {{COMMON_YOCTO_VARS}}<!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} - Yocto Setup TFTP/NFS}} {{DocImage|category1={{#var:HARDWARE_NAME}}|category2=Yocto}} __toc__<!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} - Yocto Setup TFTP/NFS}} {{DocImage|category1={{#var:HARDWARE_NAME}}|category2=Yocto}} __toc__<!--
Line 32: Line 33:


== On the Host  ==
== On the Host  ==
{{#vardefine:decompressionCommand|
{{#switch: {{#var:RECOVERY_SD_NAME_COMP}}
| zst=sudo zstd -d ../{{#var:BUILD_FOLDER_DISTRO}}/{{#var:TMPDIR}}/deploy/images/{{#var:MACHINE_NAME}}/{{#var:DEFAULT_IMAGE_BB_NAME}}-{{#var:MACHINE_NAME}}.tar.zst --stdout {{!}} sudo tar xvf -
| #default=sudo tar xvf ../{{#var:BUILD_FOLDER_DISTRO}}/{{#var:TMPDIR}}/deploy/images/{{#var:MACHINE_NAME}}/{{#var:DEFAULT_IMAGE_BB_NAME}}-{{#var:MACHINE_NAME}}.tar.{{#var:RECOVERY_SD_NAME_COMP|gz}}
}}
}}
Prepare the rootfs folder:
Prepare the rootfs folder:
  $ cd {{#var:BUILD_FOLDER}}
  $ cd {{#var:BUILD_FOLDER}}
  $ sudo mkdir rootfs
  $ sudo mkdir rootfs
  $ cd rootfs
  $ cd rootfs
  $ sudo tar xvf  ../{{#var:BUILD_FOLDER_DISTRO}}/{{#var:TMPDIR}}/deploy/images/{{#var:MACHINE_NAME}}/{{#var:DEFAULT_IMAGE_BB_NAME}}-{{#var:MACHINE_NAME}}.tar.{{#var:RECOVERY_SD_NAME_COMP|gz}}
  $ {{#var:decompressionCommand}}


Make sure the NFS server is installed:
Make sure the NFS server is installed:
Line 43: Line 51:


Edit /etc/exports. E.g.
Edit /etc/exports. E.g.
  $ sudo gedit /etc/exports
  $ sudo nano /etc/exports
...and add the following line to it (replace <uname> with the actual username):  
...and add the following line to it (replace <uname> with the actual username):  
  {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs    *(rw,sync,no_root_squash,no_all_squash,no_subtree_check)  
  {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs    *(rw,sync,no_root_squash,no_all_squash,no_subtree_check)  
Line 52: Line 60:


Make sure the TFTP server is installed:
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
  $ sudo apt-get install xinetd tftpd tftp


Verify the following:
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
  $ ls /usr/sbin/in.tftpd
  $ sudo gedit /etc/xinetd.d/tftp
  $ sudo nano /etc/xinetd.d/tftp
  service tftp
  service tftp
  {
  {
Line 68: Line 87:
  disable = no
  disable = no
  }
  }
and run:
and run:
  $ sudo mkdir /tftpboot
  $ sudo mkdir /tftpboot
  $ sudo chmod -R 777 /tftpboot
  $ sudo chmod -R 777 /tftpboot
  $ sudo /etc/init.d/xinetd restart
  $ sudo systemctl restart xinetd
$ sudo systemctl restart tftpd-hpa
{{#ifeq: {{#var:SOC_SERIES}} | imx8 |
{{#ifeq: {{#var:SOC_SERIES}} | imx8 |
<br>
<br>

Latest revision as of 16:14, 29 October 2024

Warning: This page is designed to be used with a 'release' URL parameter.

This page is using the default release RELEASE_MORTY_V1.0_DART-6UL.
To view this page for a specific Variscite SoM and software release, please follow these steps:

  1. Visit variwiki.com
  2. Select your SoM
  3. Select the software release
DART-6UL - 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_x11/tmp/deploy/images/imx6ul-var-dart/fsl-image-gui-imx6ul-var-dart.tar.gz

Make sure the NFS server is installed:

$ sudo apt-get install nfs-kernel-server


Edit /etc/exports. E.g.

$ sudo nano /etc/exports

...and add the following line to it (replace <uname> with the actual username):

/home/<uname>/var-fslc-yocto/rootfs    *(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:

# 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


$ cd ~/var-fslc-yocto/build_x11/
$ sudo cp tmp/deploy/images/imx6ul-var-dart/zImage /tftpboot
$ for f in tmp/deploy/images/imx6ul-var-dart/*.dtb; do if [[ -L $f ]] && [[ $f != *imx6ul-var-dart.dtb ]]; then sudo cp $f /tftpboot; fi done
$ sudo rename 's/zImage-//' /tftpboot/zImage-*.dtb



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/<uname>/var-fslc-yocto/rootfs/etc/NetworkManager/NetworkManager.conf:

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

Enable DNS:

$ sudo ln -fs /proc/net/pnp /home/<uname>/var-fslc-yocto/rootfs/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. 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.