Jetson Developer Guide 文档里面只有一段简单介绍 PXE 这块配置使用,无法完整配置
结合参考下面链接这篇文章,可在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
zzz@zzz:~/nvidia$ sudo mkdir tftp/grub
zzz@zzz:~/nvidia$ sudo mkdir tftp/efi
4.复制文件(内核映像、initrd、efi)
zzz@zzz:~$ cp $MYROOTFS/boot/Image tftp/
zzz@zzz:~$ sudo cp $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 apt purge xinetd
$ 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 会加载报错
913

被折叠的 条评论
为什么被折叠?



