使用 initrd 刷新 NVIDIA Jetpack
介绍
此文章提供了在 EMMC 和 SSD 上使用 NVIDIA 的 Jetpack 4.6 initrd 刷新程序的指南。
这是闪烁到内部或外部媒体的简化方式。该过程首先刷新一个最小的 initrd,它启动并将内部和外部媒体暴露给主机以进行刷新。与其他闪烁技术相比,此闪烁过程要快得多。比如Jetson Xavier NX需要刷SPI+EMMC,用initd可以同时刷。此功能的另一个优点是它提供了一种闪存内部或外部媒体的解决方案。
可以在目录/Linux_for_Tegra/tools/kernel_flash/ 中找到使用 initrd 刷机的工具和说明。有关更多详细信息,请参阅同一目录中的README_initrd_flash.txt。此外,我们建议您阅读 Jetpack 4.6 的 NVIDIA Jetson Linux 开发人员指南。
功能支持表 | ||
---|---|---|
木板 | 用 initrd 闪烁 | |
杰森TX2 | no | |
泽维尔AGX | yes | |
泽维尔NX | yes | |
杰森纳米 | no |
要求
高品质 USB‑C / micro-USB 电缆。低质量的电缆可能会使刷机过程失败。
主机需要 NetworkManager 来配置网络以进行闪烁,而不是其他一些网络管理应用程序。
在刷写过程中,必须暂时为新的外部存储设备禁用自动挂载。
程序
1.禁用自动挂载
systemctl stop udisks2.service
2.安装依赖
sudo apt install libxml2-utils simg2img network-manager abootimg sshpass device-tree-compiler
3. 将 Jetson Board 置于恢复模式并将其插入您的计算机。
4.下载所需的Jetpack后,请前往NVIDIA SDK管理器创建的Target HW image文件夹。默认情况下,它将位于/home/$USER/nvidia/nvidia_sdk。
cd /home/$USER/nvidia/nvidia_sdk
5. 导航到相应的 Jetpack 目录。
cd JetPack_4.6_
6.从NVIDIA下载Jetson Platform Fuse Burning and Secure Boot Documentation and Tools包并解压。
tar xvjf secureboot_r32.6.1_aarch64.tbz2
7. 导航到Linux_for_Tegra目录。
cd Linux_for_Tegra
8. 启动 initrd 烧录程序。在这里您可以选择是刷入内部本地存储设备(eMMC 或 SD 卡),还是外部 SSD 磁盘。
闪烁内部本地存储设备
sudo ./tools/kernel_flash/l4t_initrd_flash.sh mmcblk0p1
在哪里:
•
闪烁外部 SSD 磁盘
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device -c [ --external-only ] [ -S ]
在哪里:
可以是jetson-xavier-nx- devkit、jetson-xavier-nx-devkit-emmc或jetson-agx-xavier-devkit。 可以设置为 "mmcblk0p1" 或 "internal" 以从内部设备启动或 "external"、"sda1" 或 "nvme0n1p1" 以从外部设备启动。如果您的外部设备的外部分区布局具有“APP”分区,则在此处指定“nvme0n1p1”将生成 rootfs 引导命令行: root=/dev/nvme0n1p1
. 如果是内部的或外部的,该工具将生成 rootfs 命令行: root=PARTUUID=...
.是 XML 格式的外部存储设备的分区布局。NVIDIA 在Linux_for_Tegra/tools/kernel_flash/提供了一些分区布局示例,因此您可以使用其中任何一个作为起点。有关如何创建它们的更多信息,请访问官网。 是您要闪存的外部存储设备的名称,因为它出现在“/dev/”文件夹中(即 nvme0n1、sda)。
是包含操作系统的分区大小(以字节为单位)。允许 KiB、MiB、GiB 速记,例如 1GiB 表示 1024 * 1024 * 1024 字节。此大小不能大于 中指定的“num_sectors” * “sector_size”,并且必须足够小以适合分区布局中的其他分区。
--external-only是只刷外部存储设备的标志,否则内部和外部设备都将被刷入。请注意,如果您只刷新外部设备,Jetson 将重新启动到内部存储,您必须手动更改/boot/extlinux/extlinux.conf 中的
root=
参数以从外部设备启动。如果您想从内部存储再次启动,您应该挂载分区并更改内部存储文件系统的/boot/extlinux/extlinux.conf。
因此,闪存连接到 Xavier NX 的 SSD 磁盘的示例是:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 -c ./tools/kernel_flash/flash_l4t_nvme.xml -S 8GiB --showlogs jetson-xavier-nx-devkit nvme0n1p1
使用 rootfs AB 支持刷新外部 SSD 磁盘
此工作流程与之前的工作流程几乎相同,但有以下区别:
在 flash 脚本中使用ROOTFS_AB=1标志。
使用包含 APP_b 的不同分区布局。
使用外部的<删除rootdev>参数。
因此,使用 rootfs AB 支持刷新连接到 Xavier NX 的 SSD 磁盘的示例是:
sudo ROOTFS_AB = 1 ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 -c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml -S 8GiB --showlogs external jetson-xavier-nx
该命令会在SSD中创建两个8GB的APP分区(APP和APP_b),并将APP(slot A)设置为active和current slot。
8. 刷机完成后,即可启用自动挂载服务
systemctl start udisks2.service
原文链接:https://developer.ridgerun.com/wiki/index.php?title=NVIDIA_Jetpack_Flashing_with_initrd