Yocto Setup TFTP/NFS: Difference between revisions

From Variscite Wiki
(→‎Target: Add NetworkManager note)
(Fix symbolic link)
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<!-- Set release according to "release" parameter in URL and use MORTY_V1.0_DART-6UL as default
<!-- Set release according to "release" parameter in URL and use MORTY_V1.0_DART-6UL as default
--> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!--
--> {{#vardefine:RELEASE_PARAM|{{#urlget:release|RELEASE_MORTY_V1.0_DART-6UL}}}} <!--
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM|RELEASE_MORTY_V1.0_DART-6UL}}}} <!--
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:B2QT_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{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__<!--
-->{{#vardefine:BUILD_FOLDER_DISTRO | {{ #varexists:BUILD_FOLDER_X11 | {{#var:BUILD_FOLDER_X11}} | {{ #varexists:BUILD_FOLDER_XWAYLAND | {{#var:BUILD_FOLDER_XWAYLAND}} | {{#var:BUILD_FOLDER_B2QT}} }} }} }}<!--
-->{{ #varexists:DEFAULT_IMAGE_BB_NAME | | {{ #vardefine:DEFAULT_IMAGE_BB_NAME | fsl-image-gui }} }}<!--


Show CONFIG_FEC note if these conditions met:  
Show CONFIG_FEC note if these conditions met:  
Line 15: Line 19:
-->{{#vardefine:KERNEL_VER_MAJOR|{{#explode:{{#var:KERNEL_VER}}|.|1}}}}<!--                                                                                  Parse Kernel Version xx.YY.zz
-->{{#vardefine:KERNEL_VER_MAJOR|{{#explode:{{#var:KERNEL_VER}}|.|1}}}}<!--                                                                                  Parse Kernel Version xx.YY.zz
-->{{#vardefine:KERNEL_VER_MINOR|{{#explode:{{#var:KERNEL_VER}}|.|2}}}}<!--                                                                                  Parse Kernel Version xx.yy.ZZ
-->{{#vardefine:KERNEL_VER_MINOR|{{#explode:{{#var:KERNEL_VER}}|.|2}}}}<!--                                                                                  Parse Kernel Version xx.yy.ZZ
-->{{#vardefine:SHOW_CONFIG_FEC|1}}<!--                                                                                                                     Initialize SHOW_CONFIG_FEC = 1
-->{{#vardefine:SHOW_CONFIG_FEC|1}}<!--
Initialize SHOW_CONFIG_FEC = 1


Check KERNEL_VER and KERNEL_DEFCONFIG
Check KERNEL_VER and KERNEL_DEFCONFIG
Line 25: Line 30:
= Running Yocto rootfs on Variscite board using TFTP &amp; NFS  =
= Running Yocto rootfs on Variscite board using TFTP &amp; 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  ../{{#varexists:BUILD_FOLDER_X11 | {{#var:BUILD_FOLDER_X11}} | {{#var:BUILD_FOLDER_XWAYLAND}} }}/tmp/deploy/images/{{#var:MACHINE_NAME}}/fsl-image-gui-{{#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 62: Line 71:
  $ sudo chmod -R 777 /tftpboot
  $ sudo chmod -R 777 /tftpboot
  $ sudo /etc/init.d/xinetd restart
  $ sudo /etc/init.d/xinetd restart
$ cd {{#var:BUILD_FOLDER}}/{{#varexists:BUILD_FOLDER_X11 | {{#var:BUILD_FOLDER_X11}} | {{#var:BUILD_FOLDER_XWAYLAND}} }}/
{{#ifeq: {{#var:SOC_SERIES}} | imx8 |
{{#ifeq: {{#var:SOC_SERIES}} | imx8 |
<br>
<br>
Line 69: Line 77:
|
|
<br>
<br>
$ cd {{#var:BUILD_FOLDER}}/{{#var:BUILD_FOLDER_DISTRO}}/
  $ sudo cp tmp/deploy/images/{{#var:MACHINE_NAME}}/{{#var:KERNEL_IMAGE}} /tftpboot
  $ sudo cp tmp/deploy/images/{{#var:MACHINE_NAME}}/{{#var:KERNEL_IMAGE}} /tftpboot
  $ for f in tmp/deploy/images/{{#var:MACHINE_NAME}}/*.dtb; do if <nowiki>[[ -L $f ]] && [[</nowiki> $f != *{{#var:MACHINE_NAME}}.dtb <nowiki>]]</nowiki>; then sudo cp $f /tftpboot; fi done
  $ for f in tmp/deploy/images/{{#var:MACHINE_NAME}}/*.dtb; do if <nowiki>[[ -L $f ]] && [[</nowiki> $f != *{{#var:MACHINE_NAME}}.dtb <nowiki>]]</nowiki>; then sudo cp $f /tftpboot; fi done
Line 78: Line 87:
Follow our kernel compilation guide {{Varlink|Yocto_Build_Linux|{{#var:RELEASE_LINK}}|Build kernel from source code}}<br>
Follow our kernel compilation guide {{Varlink|Yocto_Build_Linux|{{#var:RELEASE_LINK}}|Build kernel from source code}}<br>
Run "make menuconfig", go to "Device Drivers → Network device support → Ethernet driver support → Freescale devices → FEC ethernet controller" and press y.
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:<br>
CONFIG_AT803X_PHY&#61;y<br>
CONFIG_ADIN_PHY&#61;y<br>
Compile the kernel and copy arch/arm64/boot/Image.gz to /tftpboot }}
Compile the kernel and copy arch/arm64/boot/Image.gz to /tftpboot }}
}}
}}


== Target  ==
 
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]
unmanaged-devices=interface-name:eth0
 
Enable DNS:
$ sudo ln -fs /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.  
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.
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}}
  {{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX7 | => setenv image zImage}}
  => setenv serverip 192.168.1.188
  => 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 {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs (change <uname> to the name of user)
  => setenv nfsroot {{#var:BUILD_FOLDER_ABSOLUTE_PATH}}/rootfs (replace <uname> with the actual username)
  => setenv bootcmd run netboot
  => setenv bootcmd run netboot
  => saveenv  
  => saveenv
You are all set. Connect Ethernet cable, power cycle the {{#var:HARDWARE_NAME}} and it should boot over NFS.<br>
<br>


If using NetworkManager, configure NetworkManager not to manage the NFS interface by adding the following to ''/etc/NetworkManager/NetworkManager.conf''
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.
[keyfile]
unmanaged-devices=interface-name:eth0

Revision as of 21:19, 10 August 2022

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:

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