Yocto Setup TFTP/NFS: Difference between revisions

From Variscite Wiki
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:
Make sure you installed NFS server:  
$ sudo apt-get install nfs-kernel-server
  $ 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
<pre>
$ sudo gedit /etc/exports
</pre>
Add the following line (change <uname> to the name of user):


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)  


exit &amp; save
 
<pre>$ sudo /etc/init.d/nfs-kernel-server restart</pre>
Restart the NFS server:
Make sure you installed TFTP server:  
$ 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:
}}
}}


== Target  ==
Make sure you have a serial connection to the target.


Reset and hold the space bar. This will bring you to U-Boot command line.
Make adjustments to the rootfs:<br><br>
{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX7 | => setenv image zImage}}
=> setenv serverip 192.168.1.188
=> setenv nfsroot {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs (change <uname> to the name of user)
=> setenv bootcmd run netboot
=> saveenv


If using NetworkManager, configure NetworkManager not to manage the NFS interface by adding the following to ''/etc/NetworkManager/NetworkManager.conf''
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 /proc/net/pnp /etc/resolv.conf
  $ 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 the {{#var:HARDWARE_NAME}} and it should boot over NFS.<br>
Boot the board and hit any key to stop the autoboot and get to the U-Boot command line.
<br>
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

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 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.