Yocto Setup TFTP/NFS: Difference between revisions
No edit summary |
|||
Line 30: | Line 30: | ||
= Running Yocto rootfs on Variscite board using TFTP & NFS = | = Running Yocto rootfs on Variscite board using TFTP & NFS = | ||
== Host == | == On the Host == | ||
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}}/tmp/deploy/images/{{#var:MACHINE_NAME}}/{{#var:DEFAULT_IMAGE_BB_NAME}}-{{#var:MACHINE_NAME}}.tar.gz | $ sudo tar xvf ../{{#var:BUILD_FOLDER_DISTRO}}/tmp/deploy/images/{{#var:MACHINE_NAME}}/{{#var:DEFAULT_IMAGE_BB_NAME}}-{{#var:MACHINE_NAME}}.tar.gz | ||
Make sure the NFS server is installed: | |||
$ sudo apt-get install nfs-kernel-server | |||
Edit /etc/exports. E.g. | |||
$ sudo gedit /etc/exports | |||
...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) | ||
Restart the NFS server: | |||
Make sure | $ sudo /etc/init.d/nfs-kernel-server restart | ||
Make sure the TFTP server is installed: | |||
$ sudo apt-get install xinetd tftpd tftp | $ sudo apt-get install xinetd tftpd tftp | ||
Verify the following: | Verify the following: | ||
$ ls /usr/sbin/in.tftpd | $ ls /usr/sbin/in.tftpd | ||
Line 86: | Line 90: | ||
}} | }} | ||
Make adjustments to the rootfs:<br><br> | |||
When using NetworkManager on the target, configure NetworkManager not to manage the interface used for the NFS boot by adding the following to ''{{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs/etc/NetworkManager/NetworkManager.conf'': | |||
[keyfile] | [keyfile] | ||
unmanaged-devices=interface-name:eth0 | unmanaged-devices=interface-name:eth0 | ||
Enable DNS: | Enable DNS: | ||
$ ln -fs {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs/proc/net/pnp {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs/etc/resolv.conf | |||
== On the Target == | |||
Make sure you have a serial connection to the target. | |||
You are all set. Connect Ethernet cable, power cycle | 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 : | |||
{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX7 | => setenv image zImage}} | |||
=> setenv serverip <HOST_IP_ADDRESS> (replace <HOST_IP_ADDRESS> with the actual IP address of your host running the TFTP server) | |||
=> setenv nfsroot {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/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. |
Revision as of 14:39, 18 March 2021
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 gedit /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:
$ 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 ~/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:
$ ln -fs /home/<uname>/var-fslc-yocto/rootfs/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 running the TFTP server) => 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.