I am attempting to do an NFS boot on AGX Xavier running Jetpack 5.1. I found the following documentation for R35.2.1:
This section contains the following note:
To create a bootable NFS root file system, you must first:
Perform the process described in Step 1: Set Up the Root File System <https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/rootfs_custom.html#wwpID0E0JG0HA>
Perform the process described in Configuring NFS Root on the Linux Host <https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/getting_started.html#wwpID0E0CC0HA>
However, when I visit the URLs mentioned here, I get redirected to R34.1.1’s documentation.
After browsing elsewhere for a guide for NFS boot on AGX Xavier, I managed to find out that these links refer to the topics " Setting Up the Root File System" and " Configuring NFS Root on the Linux Host" respectively. However, I did not find any such topics in the R35.2.1 documentation.
I did however find the following (which are both for 32.7.5 release):
So assuming that the steps mentioned here are still valid, I went through with it and implemented the steps. Here is my full workflow.
- Download the NVIDIA provided sample root file system:
Tegra-Linux-Sample-Root-Filesystem_<release_type>.tbz2
(Note: I actually used the one already downloaded when I had previously downloaded Jetpack source package files).
This was the file: “Tegra_Linux_Sample-Root-Filesystem_R35.2.1_aarch64.tbz2”
- Extract the file system to a new directory (<nfs_dir> represents the directory where the file system was extracted):
mkdir <nfs_dir>
cd <nfs_dir>
sudo tar -jxpf Tegra_Linux_Sample-Root-Filesystem_R35.2.1_aarch64.tbz2
- Set LDK_ROOTFS_DIR environment variable to point to <nfs_dir> and then apply binaries:
export LDK_ROOTFS_DIR="<nfs_dir>"
sudo -E <Linux_for_Tegra>/apply_binaries.sh
-
Install NFS components on host machine:
sudo apt-get install nfs-common nfs-kernel-server
-
Modified /etc/exports file on host so that it contained an entry for my nfs file system. The /etc/exports file contains the following:
<nfs_dir> *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
-
Restart kernel server:
sudo /etc/init.d/nfs-kernel-server restart
-
Set permissions for <nfs_dir>:
sudo chmod 755 <nfs_dir>
sudo chown root.root <nfs_dir>
-
Skip OEM Config via l4t_create_default_user.sh script (I changed the ‘rfs_dir’ variable in the script to point to <nfs_dir>:
Linux_for_Tegra/tools/l4t_create_default_user.sh -u <my_username> -p <my_password> -n <my_hostname>
-
Export the root point:
sudo exportfs -a
-
Disabled firewall:
sudo ufw disable
-
Connected ethernet cable and USB-C cable between Xavier and the host PC. Then put the board in recovery mode and entered the following to flash the Xavier:
sudo ./flash.sh -N <host_ip_address>:<nfs_dir> jetson-agx-xavier-devkit eth0
The flash process went fine, and I get the message:
*** The target t186ref has been flashed successfully. ***
Make target nfsroot(<my_host_ip>:<nfs_dir>) exported on the network and reset the board to boot
After rebooting the Xavier, I get the following message repeatedly on terminal:
[ 572.877089] hwmon hwmon3: temp1_input not attached to any thermal zone
[ 576.036648] nvethernet 2490000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[ 576.046751] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 576.066730] Sending DHCP requests ...... timed out!
[ 655.516021] Trying to unregister non-registered hwtime source
[ 655.516040] nvethernet 2490000.ethernet eth0: Link is Down
[ 655.525683] IP-Config: Retrying forever (NFS root)...
The complete UART log is attached.
uart_log.txt (75.0 KB)
What did I do wrong? Are the steps I followed valid for R35.2.1? Did I miss anything?
Regards,
Sana Ur Rehman