Jetson AGX Orin 配置 UEFI 的 PXE 启动流程

分享作者:user202208045395
作者昵称:yao123
评测品牌:NVIDIA
评测型号:JETSON_AGX_ORIN_64GB
发布时间:2026-10-09 16:38:54
1
概要
Jetson Developer Guide 文档里面只有一段简单介绍 PXE 这块配置使用,无法完整配置 https://docs.nvidia.com/jetson/archives/r36.4.3/DeveloperGuide/SD/FlashingSupport.html#configuring-a-pxe-boot-server-for-uefi-bootloader-on-jetson 结合参考下面链接这篇文章,可在AGX ORIN 开发者套件上实现 PXE 启动功能,这样AGX orin 机器通过网络方式挂载文件系统在 ubuntu PC 电脑上,方便应用开发调试
开源口碑分享内容

Jetson Developer Guide 文档里面只有一段简单介绍 PXE 这块配置使用,无法完整配置


https://docs.nvidia.com/jetson/archives/r36.4.3/DeveloperGuide/SD/FlashingSupport.html#configuring-a-pxe-boot-server-for-uefi-bootloader-on-jetson


 结合参考下面链接这篇文章,可在AGX ORIN 开发者套件上实现 PXE 启动功能,这样AGX orin 机器通过网络方式挂载文件系统在 ubuntu PC 电脑上,方便应用开发调试


https://elinux.org/Jetson/L4T/peripheral/#PXE_boot


具体方法步骤:


主机端(PC):


一. 安装 DHCP服务器


1. sudo apt install isc-dhcp-server


2. 修改则在dhcp conf文件(/etc/dhcp/dhcpd.conf)中添加pxe详细信息,假设本机IP  地址为192.168.0.1,可自定义网段


subnet 192.168.0.0 netmask 255.255.255.0 {

       range 192.168.0.11 192.168.0.20;

       option routers 192.168.0.1;


       # Required for PXE Boot

       class "pxeclients" {

               match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";

                       filename "efi/grubnetaa64.efi.signed";

                       # TFTP Server IP address

                       next-server 192.168.0.1;

                       option root-path "/home/zzz/nvidia/tftp";

       }

}


3. 配置节点网络IP 重新启动并检查DHCP服务器


#enp0s31f6 是对接orin 网络节点名,通过ifconfig 查看节点名

sudo ifconfig enp0s31f6 192.168.0.1  

sudo systemctl restart isc-dhcp-server

sudo systemctl status isc-dhcp-server


二.安装NFS


sudo apt install nfs-kernel -server


# 设置需挂载 rootfs 全局路径


export MYROOTFS=/home/zzz/nvidia/L4T-software/Linux36.4.3/L4T/Linux_for_Tegra/rootfs


echo "$MYROOTFS *(async,rw,no_root_squash,no_all_squash,no_subtree_check,insecure,anonuid=1000,anongid=1000)" | sudo tee --append /etc/exports > /dev/null


sudo systemctl restart nfs-kernel-server


sudo systemctl status nfs-kernel-server


三.设置TFTP服务器



1. zzz@zzz:~$  sudo apt install -y tftpd -hpa


2.配置修改/etc/default/tftpd-hpa,zzz是主机PC的用户名


TFTP_USERNAME="zzz"

TFTP_DIRECTORY="/tftp"

TFTP_ADDRESS=":69"

TFTP_OPTIONS="--secure"



3.创建tftp目录

zzz@zzz:~/nvidia𝑠𝑢𝑑𝑜𝑚𝑘𝑑𝑖𝑟𝑡𝑓𝑡𝑝𝑧𝑧𝑧@𝑧𝑧𝑧: /𝑛𝑣𝑖𝑑𝑖𝑎

sudo mkdir tftp/grub

zzz@zzz:~/nvidia$ sudo mkdir tftp/efi


4.复制文件(内核映像、initrd、efi)


zzz@zzz:~𝑐𝑝

MYROOTFS/boot/Image  tftp/

zzz@zzz:~𝑠𝑢𝑑𝑜𝑐𝑝

MYROOTFS/boot/initrd.img /tftp/

zzz@zzz:~$ sudo cp  grubnetaa64.efi.signed /tftp/efi/


grubnetaa64.efi.signed 来源

(https://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/grub-efi-arm64-signed_1.142+2.04-1ubuntu26_arm64.deb.html) 这个网页已经无法查看

通过这个方式获取,先在Jetson orin 机器上执行安装

sudo apt-get install grub-efi-arm64-signed


最后执行查看 ls /usr/lib/grub/arm64-efi-signed/目录

拷贝grubnetaa64.efi.signed 出来到/tftp/efi/


5.创建grub.cfg

zzz@zzz:~/nvidia$ sudo gedit tftp/grub/grub.cfg


修改grub.cfg如下:

set timeout_style=menu

set timeout=10


menuentry "Jetson" {

     linux /Image root=/dev/nfs rw netdevwait ip=:::::eth0:on nfsroot=192.168.0.1:/home/zzz/nvidia/L4T-software/Linux36.4.3/L4T/Linux_for_Tegra/rootfs fbcon=map:0 net.ifnames=0  console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0

     initrd /initrd

}


6.重新启动并检查TFTP服务器

𝑠𝑢𝑑𝑜𝑎𝑝𝑡𝑝𝑢𝑟𝑔𝑒𝑥𝑖𝑛𝑒𝑡𝑑

sudo systemctl restart tftpd-hpa

$ sudo systemctl status tftpd-hpa.service


四.  AGX ORIN 客户端机器测试

上电开启jetson AGX Orin 机器,进入开机显示logo 界面按esc按键进入UEFI bootloader 启动选择界面,选择PXEv4(备注下面图片来自网络)



之后等待一段时间之后文件系统成功挂载 PC电脑的home/zzz/nvidia/L4T-software/Linux36.4.3/L4T/Linux_for_Tegra/rootfs 目录下


调试过程中发现问题:


    (1)进入显示Grub 之后一直显示黑屏,通过debug uart 打印日志查看 mount rootfs fail,错误,导致无法挂载成功

   重新执行下指令: sudo systemctl restart nfs-kernel-server

   重新 让agx orin 开机,再次进入PXE 启动发现可正常挂载成功


 (2)tftp 下面 Image 和 initrd 文件最好需要使用已刷机下面/Linux_for_Tegra/rootfs/boot 下面的,可能会出现不匹配Image 会加载报错


全部评论
暂无评论
0/144