Yocto Setup TFTP/NFS: Difference between revisions
No edit summary |
|||
(8 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 34: | Line 35: | ||
{{#vardefine:decompressionCommand| | {{#vardefine:decompressionCommand| | ||
{{#switch: {{#var:RECOVERY_SD_NAME_COMP}} | {{#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 | | 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}} | | #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}} | ||
}} | }} | ||
Line 50: | Line 51: | ||
Edit /etc/exports. E.g. | Edit /etc/exports. E.g. | ||
$ sudo | $ 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 59: | 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 | ||
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 | $ sudo nano /etc/xinetd.d/tftp | ||
service tftp | service tftp | ||
{ | { | ||
Line 75: | 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 | $ 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
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:
- Visit variwiki.com
- Select your SoM
- Select the software release
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.