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

  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
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 会加载报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值