刷写和启动目标设备

使用 flash.sh 辅助脚本将引导加载程序和内核刷写到板上,并可选择将根文件系统刷写到内部或外部存储设备。
使用脚本 l4t_initrd_flash.sh 刷写连接到 Jetson 设备的内部或外部介质。此脚本使用恢复初始 ramdisk 进行刷写,并且可以使用相同的过程刷写外部和内部介质。由于此脚本使用内核进行刷写,因此通常比 flash.sh 更快。有关更多详细信息,请参阅 使用 initrd 进行刷写 部分。

开始之前

必须存在以下目录
bootloader:引导加载程序和刷写工具,例如 TegraFlash、CFG、BCT 等。
kernel:内核 Image /vmlinux.uimg、DTB 文件和内核模块
rootfs:您下载的根文件系统
此目录开始时为空。您可以使用示例文件系统填充它。
nv_tegra:用户空间二进制文件和示例应用程序
此外,在运行这些命令之前,您必须将 USB 电缆连接到恢复端口。

基本刷写脚本用法

通过运行 flash.sh –h(使用版本中包含的 flash.sh 脚本)查找最新的用法信息。基本用法如下。
$ sudo ./flash.sh [选项] <板> <根设备>
其中
options 是一个或多个命令行开关。所有开关都是可选的。开关在 刷写脚本用法 中描述。
<board> 指定要应用于要刷写的设备的配置。值在主题 设备名称表快速入门 中列出。flash.sh 从名为 <board>.conf 的配置文件中获取配置。
<rootdev> 指定要刷写的设备类型。使用值 mmcblk0p1 刷写本地存储设备(eMMC 或 SD 卡,取决于平台),例如,与 NFS 服务器区分开来。

基本刷写步骤

本节介绍刷写一个或多个目标设备的一些常用步骤。
要刷写目标设备
1. 将目标设备置于重置/恢复模式。
1. 打开载板电源并按住 RECOVERY 按钮。
2. 按下 RESET 按钮。
2. 运行此版本顶层目录中的 flash.sh 脚本。脚本必须提供目标板(例如 jetson-xavier)的根文件系统
$ sudo ./flash.sh <板> <根设备>
其中
<board> 指定目标设备的配置,如主题 设备名称表快速入门 中所述
<rootdev> 指定根文件系统所在的设备,如 基本刷写脚本用法 中所述
对于根文件系统,像这样执行脚本
$ sudo ./flash.sh <板> mmcblk0p1
要使用方便的脚本进行刷写
NVIDIA 提供了一个方便的刷写脚本,它可以自动检测 Jetson 设备的载板类型
$ sudo ./nvsdkmanager_flash.sh [--storage <存储设备> ]
其中 --storage 仅在 Jetson Xavier NX 系列和 Jetson AGX Xavier 系列上受支持。它可以是 nvme0n1p1 以刷写到外部 NVMe SSD,或 sda1 以刷写到外部 USB 存储驱动器。
在 Jetson Xavier NX 系列上,使用 --storage 选项进行刷写仅刷写 QSPI 和外部 NVMe 或 USB 存储;它不刷写内部 eMMC/SD 存储。
要刷写目标设备以挂载由 UUID 指定的 rootfs
对于内部存储设备(例如 eMMC 或 SD 卡),输入此命令
$ sudo ./flash.sh <板> internal
此命令将用于根文件系统分区的 UUID 存储在文件 bootloader/l4t-rootfs-uuid.txt 中。您可以在执行上述命令之前,通过将 UUID 写入此文件来指定您自己的 UUID。
对于外部阶段设备(例如 NVMe 或 USB 设备),输入此命令
$ sudo ./flash.sh <板> external
此命令将用于根文件系统分区的 UUID 存储在文件 bootloader/l4t-rootfs-uuid.txt_ext 中。您可以在执行上述命令之前,通过将 UUID 写入此文件来指定您自己的 UUID。
要刷写目标设备以挂载由分区设备名称指定的 rootfs
对于连接到 Jetson 设备的 USB 存储设备上的分区,输入此命令
$ sudo ./flash.sh <板> sda<x>
对于连接到 Jetson 设备的 NVMe 存储设备上的分区,输入此命令
$ sudo ./flash.sh <板> nvme0n1p<x>
其中
<x> 是一个数字,指定 APP 分区在存储设备上的位置,例如 USB 设备的 sda1,或 NVMe 存储设备的 nvme0n1p1
<board> 指定目标设备的配置,如主题 设备名称表快速入门 中所述
要克隆 Jetson 设备并刷写
1. 从您要从中刷写的文件系统分区复制 system.img。输入此命令
$ sudo ./flash.sh -r -k APP -G <克隆名> <板> mmcblk0p1
其中
<clone> 确定副本的名称。
<board> 指定目标设备的配置。
此步骤在 <top> 目录中创建 <clone> 的两个副本:一个稀疏映像(小于原始映像),名为 <clone>,以及一个精确副本,名为 <clone>.raw
例如,如果 <clone>original.img,则 flash.sh 创建一个名为 original.img 的稀疏映像和一个名为 original.img.raw 的精确副本。
2. <clone>.img 复制到 <L4T>/bootloader/system.img 目录。输入此命令
$ sudo cp <克隆名>.img bootloader/system.img
3. 将映像刷写到目标板。
如果目标板已经刷写,则将克隆映像重新刷写到 APP 分区。输入此命令
$ sudo ./flash.sh -r -k APP <板> mmcblk0p1
如果目标板从未刷写过,则刷写板的所有分区。输入此命令
$ sudo ./flash.sh -r <板> mmcblk0p1
备份和还原 Jetson 设备
NVIDIA 提供了用于创建 Jetson 设备备份映像并从备份映像还原 Jetson 的工具。
备份 Jetson 设备与克隆设备不同(请参阅 克隆 Jetson 设备并刷写),因为备份映像包括设备内部 eMMC 和 QSPI 内存中的每个分区,而克隆仅包含 APP 文件系统分区。
用于备份和还原 Jetson 设备的工具位于 BSD 的此目录中
/Linux_for_Tegra/tools/backup-restore/
有关备份和还原设备的说明,请参阅同一目录中的文件 README_backup_restore.txt
您必须先安装 Secureboot 软件包,然后才能使用这些工具。
RCM 启动到 NFS
适用于:仅限 Jetson Xavier NX 系列、Jetson AGX Xavier 系列和 Jetson TX2 系列
注意
要创建可启动的 NFS 根文件系统,您必须首先
执行主题 步骤 1:设置根文件系统设置文件系统 部分中描述的过程
执行主题 在 Linux 主机上配置 NFS 根目录BSP 自定义 中描述的过程。
1. 将设备置于重置/恢复模式。
打开载板电源并按住 RECOVERY 按钮。
然后按下 RESET 按钮。
2. 执行命令
$ sudo./flash.sh -N <ip_addr>:<root_path> --rcm-boot <板> eth0
其中
<ip_addr> 是主机系统的 IP 地址
<root_path> 是 NFS rootfs 的路径
<board> 是主题 设备名称表快速入门 中指定的目标设备的配置

刷写脚本用法

本节通过提供有关 flash.sh 命令行选项和 flash.sh 用法的其他方面的详细信息,补充了 基本刷写脚本用法
命令行选项
描述
-b <bctfile>
已弃用。引导控制表配置文件路径名。
-c <cfgfile>
闪存分区表配置文件路径名。
-d <dtbfile>
设备树文件路径名。
-e <emmc 大小>
已弃用。目标设备的 eMMC 内存大小。仅适用于使用 eMMC 的目标设备。
-f <flashapp>
要使用的闪存应用程序的名称。闪存应用程序存储在 bootloader 目录中。默认的闪存应用程序是 bootloader/tegraflash.py
-h
打印命令行语法和命令行选项的描述。
-k <partition_id>
flash.xml 或 flash.cfg 中指定的分区名称或编号。
-m <mts_preboot>
要使用的 MTS 预启动文件的名称,例如 mts_preboot
-n <nfs_args>
静态 NFS 网络分配:<客户端 IP>:<服务器 IP>:<网关 IP>:<子网掩码>
-o <odmdata>
ODM 数据。
-p <bp_size>
eMMC 硬件启动分区总大小。
-r
跳过构建 system.img;重用现有的。
-s <PKC_密钥_文件>
包含用于签名和构建 bl_update_payload 的 PKC 密钥的文件的路径名。(已过时)
-t <tegraboot>
tegraboot 二进制文件的路径名,例如 nvtboot.bin
-u <PKC_key_file>
包含用于 ODM 熔断板的 PKC 密钥的文件的路径名。
-v <SBK_key_file>
包含用于 ODM 熔断板的安全启动密钥 (SBK) 的文件的路径名。
-w <wb0boot>
热启动二进制文件的路径名,例如 nvtbootwb0.bin
-x <tegraid>
处理器芯片 ID。默认值为
NVIDIA® Jetson Nano™ 设备和 NVIDIA® Jetson™ TX1:0x21
NVIDIA® Jetson Xavier™ NX 和 NVIDIA® Jetson AGX Xavier™ 系列:0x19
Jetson TX2 系列:0x18
-z <sn>
目标板的序列号。
-B <boardid>
板 ID。
-C <args>
内核命令行参数。如果指定此选项,它将覆盖为 flash.sh 定义的默认值。如果指定了两个或多个参数,则必须用引号括起来并用空格分隔。
内核命令行参数记录在文件 kernel-4.9/Documentation/kernel-parameters.txt 中。
在 NFS 启动的情况下,如果省略 -I 选项,请使用此选项设置 NFS 启动相关参数。
-F <flasher>
闪存服务器的路径名,例如 cboot.bin
-G <file_name>
读取启动分区并将映像保存到指定的文件。
-I <initrd>
initrd 文件的路径名。默认值为 null。
-K <kernel>
内核映像文件的路径名,例如 zImageImage
-L <bootloader>
引导加载程序的路径名,例如 cboot.binu-boot-dtb.bin
-M <mts 启动>
MTS 启动文件的路径名,例如 mts_si
-N <nfsroot>
NFS 根地址,例如 <我的 IP 地址>:/我的/导出的/nfs/rootfs
-P <ppt_end_plus1>
已弃用。PPT 的末尾加 1;主 GPT 起始地址 + PPT 大小 + 1。
-R <rootfs_dir>
示例 rootfs 目录的路径名。
-S <size>
rootfs 的大小(以字节为单位)。仅对内部 rootdev 有效。KB/MB/GB 后缀表示 1000、10002 和 10003 的单位。KiB/MiB/GiB 后缀表示 1024、10242 和 10243。例如,2GiB 表示 2×1024×1024×1024 字节。
--bup
生成引导加载程序更新有效负载 (BUP)。
--clean-up
启用 ‑‑multi-spec 时,清理 BUP 缓冲区。
--multi-spec
启用对构建多规范 BUP 的支持。
--no-flash
执行除物理刷写板之外的所有步骤。该脚本创建一个 system.img 文件。
--no-systemimg
阻止创建或重新创建 system.img
--usb-instance <id>
要连接的 USB 实例;<id> 是整数 ID(例如 0、1)、总线/设备(例如 003/091)或 USB 端口路径(例如 3-14)。最后一种是推荐形式。
--user_key <user_key_file>
包含用户密钥的文件的路径名,该用户密钥可用于加密和解密内核、kernel-dtb 和 initrd 二进制映像。如果指定了 ‑‑user_key,则还必须指定 ‑v 选项。

刷写到 USB 驱动器

适用于:仅限 Jetson Xavier NX 系列、Jetson Nano 设备、Jetson AGX Xavier 系列和 Jetson TX1
Jetson Xavier NX 系列、Jetson Nano 设备、Jetson AGX Xavier 系列和 Jetson TX1 可以从具有大容量存储类和批量传输协议的 USB 设备启动,例如闪存驱动器。不支持热插拔;闪存驱动器必须在设备启动之前连接。您可以手动设置闪存驱动器以进行启动,如 手动设置闪存驱动器以进行启动 部分中所述。
所有 Jetson 设备都可以使用启动分区从内部存储启动,并且可以将外部 USB 驱动器挂载为根文件系统。
对于 Jetson Xavier NX 系列、Jetson AGX Xavier 系列和 Jetson TX2 系列,NVIDIA 提供了一种简化刷写到连接到 Jetson 的 USB 驱动器的方法。有关详细信息,请参阅 使用 initrd 刷写设置 USB 驱动器以进行启动
注意
Jetson AGX Xavier 系列设备使用仅存储在内部 eMMC 内存上的启动固件。因此,在这种类型的设备的内部 eMMC 刷写之前,它无法从 USB 或 NVMe SSD 启动。
手动设置闪存驱动器以进行启动
适用于:仅限 Jetson Xavier NX 系列、Jetson Nano 设备、Jetson AGX Xavier 系列和 Jetson TX1
1. 仅对于此方法,请确认设备可以从 eMMC 成功启动。如果不能,请首先刷写到 eMMC 以纠正问题。
2. 将闪存驱动器连接到主机。
3. 检查闪存驱动器的设备名称(例如 /dev/sdb
$ sudo lsblk -p -d | grep sd
4. 创建新的 GPT
$ sudo parted /dev/<sdx> mklabel gpt
其中 <sdx> 是您的主机分配给闪存驱动器的设备名称。
例如,如果主机为闪存驱动器分配设备名称 sdb,则命令为
$ sudo parted /dev/sdb mklabel gpt
5. 添加 APP 分区
$ sudo parted /dev/<sdx> mkpart APP 0GB <大小>
其中 <size> 是分区的大小。它必须至少为 16 GB。如果闪存驱动器有足够的空间,它可以更大。
例如,如果 <sdx>sdb,并且分区要包含 16 GB,请输入
$ sudo parted /dev/sdb mkpart APP 0GB 16GB
APP 分区的设备名称将为 /dev/<sdx>1
6. 将 APP 格式化为 ext4 分区并挂载它。
$ sudo mkfs.ext4 /dev/<sdx>1
$ sudo mount /dev/<sdx>1 /mnt
您可以将 APP 格式化为 ext2 或 ext3,但强烈建议使用 ext4,因为它更快、更紧凑、更可靠。
7. 将 Jetson 设备连接到主机并将其置于恢复模式,然后输入以下命令以生成 rootfs 而不刷写设备
$ cd Linux_for_Tegra/
$ sudo BOOTDEV=sda1 ./flash.sh --no-flash <板> sda1
$ sudo mkdir tmp_system
$ sudo mount bootloader/system.img.raw ./tmp_system
$ sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude=/proc ./tmp_system/ /mnt
其中 sda1 是 Jetson 设备将分配给 APP 的设备名称。
8. 卸载闪存驱动器并将其从主机断开连接
$ sudo umount /mnt
$ sudo umount ./tmp_system
9. 将闪存驱动器插入目标设备并打开电源或重新启动它。
10. 如果您的设备仍然从其内部存储启动,您可能需要更改启动顺序。有关说明,请参阅 刷写到外部存储设备
手动设置闪存驱动器以用作根文件系统
1. 以类似于 手动设置闪存驱动器以进行启动 的方式准备闪存驱动器。
2. 刷写 Jetson 设备以挂载外部闪存驱动器
$ sudo ./flash.sh <板> sda1
准备使用 Secureboot 从闪存驱动器启动的文件
安装 Secureboot 软件包后,内核文件 /boot/Image 必须签名,并且签名文件必须另存为 /boot/Image.sig
如果您使用 flash.sh 刷写安装了 Secureboot 的设备,则脚本会自动创建并存储签名文件。如果您手动创建签名文件,则还必须手动保存它。有关更多信息,请参阅主题 内核和 Kernel-DTB 二进制文件签名Jetson Xavier NX 系列和 Jetson AGX Xavier 系列启动流程 部分。
使用 initrd 刷写设置 USB 驱动器作为启动设备或根文件系统
适用于:仅限 Jetson Xavier NX 系列、Jetson AGX Xavier 系列和 Jetson TX2 系列
通过使用 initrd 刷写,您可以刷写到连接到 Jetson Xavier NX 系列、Jetson AGX Xavier 系列或 Jetson TX2 系列的外部 USB 设备。有关更多信息,请参阅 刷写到外部存储设备
注意
虽然 Jetson TX2 系列不支持在设备上使用 USB 驱动器作为启动设备,但它允许您使用此类存储设备作为根文件系统。

刷写到 NVMe 驱动器

Jetson 设备可以从 NVMe 存储设备启动。不支持热插拔;NVMe 驱动器必须在设备启动之前连接。
您可以按照 手动设置 NVMe 驱动器以进行启动 部分中的步骤手动设置 NVMe 驱动器以进行启动。
所有 Jetson 设备都可以使用启动分区从内部存储启动,并将外部 NVMe 驱动器挂载为根文件系统。
对于 Jetson Xavier NX 系列、Jetson AGX Xavier 系列和 Jetson TX2 系列,NVIDIA 提供了一种简化刷写到连接到 Jetson 设备的 NVMe 驱动器的方法。有关详细信息,请参阅 使用 initrd 刷写设置 NVMe 驱动器以进行启动
注意
Jetson AGX Xavier 系列设备使用仅存储在内部 eMMC 内存上的启动固件。因此,在这种类型的设备的内部 eMMC 刷写之前,它无法从 USB 或 NVMe SSD 启动。
手动设置 NVMe 驱动器以进行启动
1. 确认设备可以从 eMMC 成功启动。如果不能,请首先刷写到 eMMC 以纠正问题。
2. 将 NVMe 驱动器连接到主机。
3. 检查 NVMe 驱动器的设备名称(例如 /dev/nvme0n1
$ lsblk -d -p | grep nvme | cut -d\ -f 1
请注意,‑d\ 之后必须有两个空格。
4. 创建新的 GPT
$ sudo parted /dev/<nvmeXn1> mklabel gpt
其中 <nvmeXn1> 是您的主机分配给 NVMe 驱动器的设备名称。
例如,如果主机为 NVMe 驱动器分配设备名称 nvme0n1,则命令为
$ sudo parted /dev/nvme0n1 mklabel gpt
5. 添加 APP 分区
$ sudo parted /dev/<nvmeXn1> mkpart APP 0GB <大小>
其中 <size> 是分区的大小。它必须至少为 16 GB。如果 NVMe 驱动器有足够的空间,它可以更大。
例如,如果 <nvmeXn1>nvme0n1,并且分区要包含 16 GB,请输入
$ sudo parted /dev/nvme0n1 mkpart APP 0GB 16GB
APP 分区的设备名称然后为 /dev/<nvmeXn1>p1
6. APP 格式化为 ext4 分区并挂载它。
$ sudo mkfs.ext4 /dev/<nvmeXn1>p1
$ sudo mount /dev/<nvmeXn1>p1 /mnt
您可以将 APP 格式化为 ext2 或 ext3,但强烈建议使用 ext4,因为它更快、更紧凑、更可靠。
7. 将 Jetson 设备连接到主机并将其置于恢复模式,然后输入以下命令以生成 rootfs 而不刷写设备
$ cd Linux_for_Tegra/
$ sudo BOOTDEV=nvme0n1p1 ./flash.sh --no-flash <板> nvme0n1p1
$ sudo mkdir tmp_system
$ sudo mount bootloader/system.img.raw ./tmp_system
$ sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude=/proc ./tmp_system/ /mnt
其中 nvme0n1p1 是 Jetson 设备将分配给 APP 的设备名称。
8. 卸载 NVMe 驱动器并将其从主机断开连接
$ sudo umount /mnt
$ sudo umount ./tmp_system
9. 将 NVMe 驱动器插入目标设备并打开电源。
10. 如果 Jetson 设备使用 U‑Boot,请在 U-Boot 环境中将其设置为从 NVMe 驱动器启动
要直接测试,请在 U Boot 提示符下输入 run bootcmd_nvme0
要将 NVMe 设置为使用普通启动命令首先启动,请将 U‑Boot 变量 boot_targets 更改为 "nvme0 mmc1 mmc0 usb0 pxe dhcp",然后输入 U‑Boot 命令 run boot
要使更改永久生效,请在 U-Boot 中更改 boot_targets 后但在启动之前运行 saveenv
如果 Jetson 设备使用 CBoot,请参阅 使用 CBoot 更改启动顺序
手动设置 NVMe 驱动器以用作根文件系统
1. 以类似于 手动设置 NVMe 驱动器以进行启动 的方式准备 NVMe 设备。
2. 刷写您的 Jetson 以挂载外部 NVMe 驱动器
$ sudo ./flash.sh <板> nvme0n1p1
准备使用 Secureboot 从 NVMe 驱动器启动的文件
使用 initrd 刷写设置 NVMe 驱动器作为启动设备或根文件系统
适用于:仅限 Jetson Xavier NX 系列、Jetson AGX Xavier 系列和 Jetson TX2 系列
通过使用 initrd 刷写,您可以刷写到连接到 Jetson Xavier NX 系列、Jetson AGX Xavier 系列或 Jetson TX2 系列的外部 NVMe SSD。有关更多信息,请参阅 刷写到外部存储设备

刷写到 SD 卡

适用于:仅限 Jetson Xavier NX 系列和 Jetson Nano 开发模块
本节介绍针对 Jetson Xavier NX 系列模块(P3668-0000 或 P3668-0003)或 Jetson Nano 开发模块(P3448-0000 或 P3448-0003)刷写和利用 SD 卡的步骤。P3668-0000 和 P3448-0000 仅用作 Jetson 开发工具包的组件。
先决条件
下载适用于 Linux 的 Etcher。Etcher 是您将用于将映像复制到 SD 卡的工具。它可在以下网址获得
下载适用于 Linux x64(64 位)的 Etcher (AppImage)。使下载的文件可执行。
注意
NVIDIA 建议使用 Etcher 将映像复制到 SD 卡,因为它是一种简单且万无一失的方法。如果您愿意,您也可以使用 Linux dd 命令执行此操作。如果您使用此方法,则无需下载 Etcher。
生成要刷写到 SD 卡的映像
适用于:仅限 Jetson Xavier NX 系列和 Jetson Nano 设备
1. 如果您尚未这样做,请展开存档 linux_for_tegra.tbz2
2. 转到目录 Linux_for_Tegra/tools
3. 输入此命令
$ ./jetson-disk-image-creator.sh -o <blob_name> -b <板> -r <修订号>
其中
<blob_name> 是文件名;脚本使用此名称保存原始映像。
<board> 指定要刷写 SD 卡的 Jetson 设备类型。<board> 的值在主题 Jetson 模块和配置 的表 快速入门 中指定。
<revision> 是要使用的 Jetson 模块的修订号
100 适用于原始 Jetson Nano 修订版 A01
200 适用于原始 Jetson Nano 修订版 A02
300 适用于原始 Jetson Nano 修订版 B00 或 B01
Jetson Nano 2GB 或 Jetson Xavier NX 系列无需此项(请勿使用 ‑‑r 选项)
此命令为 Jetson Xavier NX 开发模块生成一个带有 SPI‑SD 配置文件分区的原始镜像,或为 Jetson Nano 开发模块生成一个带有 Min-SPI 配置文件分区的原始镜像。
例如,要创建一个名为 sd-blob.img 的原始镜像文件,以便在 Jetson Nano 开发模块修订版 A01 上使用
$ ./jetson-disk-image-creator.sh -o sd-blob.img -b jetson-nano-devkit -r 100
jetson-disk-image-creator.sh 脚本支持使用修改后的 rootfs。因此,您可以创建一个带有指定 rootfs 目录的 SD 卡镜像
$ ROOTFS_DIR=<MODIFIED_ROOTFS_PATH> ./jetson-disk-image-creator.sh -o <blob_name> -b <board> -r <revision>
要使用 Etcher 将镜像刷写到 SD 卡
1. 将 SD 卡插入主机系统上的 SD 卡插槽。如果您的系统没有 SD 卡插槽,您可以使用外部 SD 卡读卡器。
2. 启动 Etcher 并选择由 jetson-disk-image-creator.sh 脚本创建的 SD blob 镜像文件。
3. 选择要刷写的 SD 卡。
4. 单击“Flash”(刷写)以将 SD blob 镜像写入 SD 卡。
要使用 dd 将镜像刷写到 SD 卡
输入命令
$ sudo dd if=<sd_blob_name> of=/dev/mmcblk<n> bs=1M oflag=direct
其中
<sd_blocb_name> 是由 jetson-disk-image-creator.sh 脚本创建的 blob 镜像文件的名称(如有必要,包含路径名)。
<n> 是您的 Linux 主机检测到的 SD 卡块号,即 0 或 1。
例如,要将名为 sd-blob.img 的镜像 blob 文件从工作目录复制到 SD 卡块号 1
$ sudo dd if=sd-blob.img of=/dev/mmcblk1 bs=1M oflag=direct
要调整根分区大小以填充可用的 SD 卡空间
根分区始终在启动设备的末尾创建。这允许您更改其大小,而无需移动其他分区。
您可以使用 resize2fs 工具更改启动分区的大小,该工具由 oem-config 在首次从 SD 卡启动新复制的镜像 blob 文件时运行。
当首次启动新初始化的 SD 卡时,它会运行 oem-config,其功能之一是设置 APP 分区的大小。它执行以下操作
1. 将备份 GPT 标头移动到磁盘末尾
2. 删除并重新创建根分区
3. 通知内核和操作系统分区表和根分区大小的更改
4. 调整根分区上的文件系统大小,以适应预期的分区表和根分区大小

刷写到外部存储设备

适用于:仅限 Jetson Xavier NX 系列、Jetson AGX Xavier 系列和 Jetson TX2 系列
initrd 刷写工具支持刷写到外部存储设备。有关此工具的概述,请参阅 使用 initrd 刷写 部分。
要刷写外部设备,您必须创建一个外部分区布局。有关此信息,请参阅 外部存储设备分区 部分,位于 引导加载程序 中。
L4T 支持作为外部存储设备的设备是在 Linux 文件系统中显示为 SCSI 设备(设备名称 /dev/sd*)和 NVMe 设备 (/dev/nvme*n*) 的设备,位于 Linux “dev” 文件系统中。NVIDIA 在 Linux BSP 包中提供了必要的工具和说明;它们可以在 Linux_for_Tegra/tools/kernel_flash 目录中找到。有关更详细的说明,请参阅该目录中 README_initrd_flash.txt 文件中的工作流程 3、4 和 5。

使用 CBoot 更改启动顺序

对于使用 CBoot 启动的设备,您可以在刷写设备后在 CBoot 环境中更改启动顺序
1. 当 CBoot 从 extlinux.conf 加载启动配置时,按任意键中断 CBoot。
2. 输入以下命令以更改启动顺序并验证更改
$ setvar boot-order <dev1> <dev2> <dev3> ...
$ printvar boot-order
您可以指定任意数量的 <dev> 参数。这些参数的有效值包括
emmc
nvme
nvme:C<n>(其中 <n> 是设备编号)
nvme:pcie@<addr>, net(其中 <addr> 是设备的 PCIe 地址)
sd
usb
3. 要重启,请输入 boot

使用 U-Boot 更改启动顺序

对于使用 U‑Boot 启动的设备,您可以在刷写设备后更改启动顺序。更改 U‑Boot 变量 boot_targets 以按优先级顺序列出启动设备,然后输入 U‑Boot 命令 run boot
您可以指定任意数量的 <dev> 参数。这些参数的有效值包括
dhcp
mmc0
mmc1
nvme0
pxe
usb0

刷写特定分区

您可以使用命令行选项 ‑k 刷写特定分区,而不是刷写整个设备。
要刷写特定分区
输入命令
$ sudo ./flash.sh -k <partition_name> [--image <image_name>] <board> <rootdev>
其中
<partition_name> 是要刷写的分区的名称。可能的值取决于目标设备。有关详细信息,请参阅主题 引导加载程序默认分区概述 部分。
<image_name> 是镜像文件的名称。如果省略,flash.sh 将选择用于刷写整个设备的镜像文件。
<board> 是目标设备的配置,如主题 快速入门刷写 Jetson 开发套件操作系统 部分中所述。
<rootdev> 指定根文件系统所在的设备,如 基本 Flash 脚本用法 中所述。
示例
要在 Jetson Nano 2GB 上使用默认文件 <L4T>/kernel/dtb/tegra210-p3448-0003-p3542-0000.dtb 刷写内核上的 dtb
$ sudo ./flash.sh -k DTB jetson-nano-2gb-devkit mmcblk0p1
要在 Jetson AGX Xavier 上使用默认文件 <L4T>/kernel/Image 刷写内核
$ sudo ./flash.sh -k kernel jetson-xavier mmcblk0p1
要在 Jetson AGX Xavier 上使用预定义的配置文件列表刷写 mb1 bct
$ sudo ./flash.sh -k MB1_BCT jetson-xavier mmcblk0p1
要通过使用用户指定的镜像文件 <user_path>/cboot.bin 在 Jetson TX2 上刷写 CPU 引导加载程序
$ sudo ./flash.sh -k cpu-bootloader –-image <user_path>/cboot.bin jetson-tx2 mmcblk0p1
关于 “-k kernel” 选项的说明
由于 Jetson Nano 设备和 Jetson TX1 需要 U‑Boot,并且 U‑Boot 是 Jetson TX2 的默认引导加载程序,因此刷写到内核分区的镜像实际上是 U‑Boot 镜像。U‑Boot 从根文件系统中的 /boot/Image 加载 Linux 内核。
因此,您无法使用 ‑k kernel 选项更新 Linux 内核镜像。您可以使用以下任一方法更新 /boot/Image
修改 /boot/extlinux/extlinux.conf 以添加新的启动条目。
请按照 /boot/extlinux/extlinux.conf 中提供的说明和示例进行操作。通过这种方法,您始终可以使用 cpscp/boot/Image 替换为自定义构建的内核,并使用 U‑Boot 启动它。
仅在 T210(Jetson Nano 设备和 Jetson TX1)设备上,将 Jetson 设备的恢复 USB 端口连接到您的主机。在 U‑Boot 命令提示符下输入以下命令
$ ums 0 mmc 1
这会将 eMMC(或带有 SD 卡的 Jetson Nano)作为一组 USB 大容量存储设备(每个分区作为一个设备)连接到主机。然后,您可以将您的自定义内核直接复制到 /boot/Image

刷写以 NFS 作为根目录

您可以刷写设备以使用网络文件系统 (NFS) 作为根文件系统。
注意
要创建可启动的 NFS 根文件系统,您必须首先
执行主题 步骤 1:设置根文件系统设置文件系统 部分中描述的过程
执行主题 在 Linux 主机上配置 NFS 根目录BSP 自定义 中描述的过程。
要刷写以使用网络文件系统作为根文件系统
1. 将设备置于恢复模式。打开载板电源;按住 RECOVERY 按钮,然后按 RESET 按钮。
2. 输入以下命令
$ sudo ./flash.sh -N <ip_addr>:<root_path> <board> eth0
其中
<ip_addr> 是主机系统的 IP 地址。
<root_path> 是 NFS 根文件系统的路径。
<board> 是目标设备的配置,如主题 快速入门 中的 设备名称表 中所指定。
此命令刷写引导加载程序和文件系统镜像,其中仅包含一个 /boot 目录,以便在启动时使用位于 <ip_addr>:/<root_path> 的网络文件系统作为根文件系统。

使用 initrd 进行刷写

适用于:仅限 Jetson Xavier NX 系列、Jetson AGX Xavier 系列和 Jetson TX2 系列
您可以使用 initrd(初始 RAM 磁盘)刷写到连接到 Jetson 设备的内部介质和外部介质。此过程使用 initrd 和 USB 设备模式。它要求安装 Secureboot 包;请参阅主题 Secureboot 中的 安装 Secureboot 包
用于使用 initrd 刷写的工具和说明可以在 /Linux_for_Tegra/‌tools/‌kernel_flash/ 目录中找到。有关更详细的信息,请参阅同一目录中的 README_initrd_flash.txt
README_initrd_flash.txt 包含使用 initrd 刷写的几个工作流程示例
刷写内部存储设备
刷写外部存储设备,如 NVMe SSD 和 USB 驱动器
在外部存储设备上启用 A/B rootfs
在外部存储设备上启用磁盘加密
刷写单个分区
刷写熔断的 Jetson 设备。
将 Massflash blob 刷写到普通和熔断的 Jetson 设备
为外部和内部存储设备生成单独的镜像,然后刷写组合镜像
注意
Jetson AGX Xavier 系列设备使用仅存储在内部 eMMC 内存上的启动固件。因此,在这种类型的设备的内部 eMMC 刷写之前,它无法从 USB 或 NVMe SSD 启动。
要求
Initrd 刷写需要高质量的 USB‑C / micro-USB 电缆。低质量的电缆可能会导致刷写过程失败。
主机必须具有以下依赖项
$ sudo apt install libxml2-utils abootimg sshpass device-tree-compiler
要使用 initrd 刷写
1. 将 Jetson 设备置于恢复模式。
2. 在主机上输入以下命令
$ cd Linux_for_Tegra
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh <board-name> <rootdev>
其中
<board-name> 是目标设备的 BOARD 环境变量的值。(请参阅主题 快速入门 中的表 Jetson 模块和配置。)
<rootdev> 指定根文件系统所在的设备,如 基本 Flash 脚本用法 中所述。

刷写到多个 Jetson 设备

NVIDIA 提供了一个工具和说明,用于在工厂环境中高效地刷写 Jetson 设备。此工具是 Linux BSP 包的一部分,可在 Linux_for_Tegra 文件夹中找到。有关使用该工具的说明包含在同一文件夹中的 README_Massflash.txt 中。

刷写以进行网络启动

适用于:仅限 Jetson Nano 设备
Jetson Nano 设备通过 PXE 协议的 PXELINUX 实现支持网络启动。
要刷写 Jetson Nano 设备以进行 PXE 启动
1. 下载、解压并准备好适合平台的构建。有关说明,请参阅开源页面 如何安装和运行 TFTP 服务器?
2. 将内核和 DTB 复制到服务器目录
$ sudo cp Linux_for_tegra/kernel/Image /tftpboot/
$ sudo cp Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb /tftboot/
3. 创建配置目录
$ sudo mkdir /tftpboot/pxelinux.cfg
4. pxelinux.cfg/ 中创建 default(一个启动配置文件)的新版本,其中包含以下条目
PROMPT 0
TIMEOUT 30
DEFAULT primary
MENU TITLE PXELinux 启动选项
LABEL primary
MENU LABEL TFTP 上的主内核
LINUX Image
FDT tegra210-p3448-0002-p3449-0000-b00.dtb
APPEND ${cbootargs} booted-via-pxe=true
default 是 PXE 搜索配置参数的几个配置文件中的最后一个(优先级最低)。有关更多信息,请参阅 wiki 页面 PXELINUX 中的 配置文件名
注意
您可以使用虚拟标志 booted-via-pxe=true 来确认 cbootargs 中指定的标志是否实际使用。启动后,通过检查节点 /proc/device-tree/chosen/bootargs 来检查启动配置中是否有此标志。
5. 再次重启 xinetd 服务(TFTP 服务器)。
6. 在 U‑Boot 中设置 serverip 的值,然后测试配置
要直接测试,请在 U‑Boot 提示符下输入 run bootcmd_pxe
要使用普通的 boot 命令进行测试,请将 boot_targets 更改为 pxe dhcp mmc1,然后输入 run boot
首先尝试 PXE 启动,然后是 DHCP,然后是 SD 卡。例如(在 U-Boot 提示符下)
pci enum; pci
setenv serverip <your-tftp-server-ip>
setenv autoload no
dhcp
run bootcmd_pxe

增加根文件系统的内部内存分区

Jetson AGX Xavier 系列建议的根文件系统分区大小为 15 GB(千兆字节)。默认情况下,它在 <board>.conf 文件中指定,该文件由 flash.sh 脚本使用。
使用 -S <size-in-bytes> 参数到 flash.sh 以更改分区大小。
要刷写更大的分区
执行以下命令
$ sudo ./flash.sh -S <size> <board> <rootdev>
其中
<size> 是所需的分区大小,例如,如果您想减小分区大小,则为 8589934592(或 8 GiB),表示 8 GB。
<board> 是目标设备的配置,如主题 快速入门刷写 Jetson 开发套件操作系统 部分中所指定
<rootdev> 指定根文件系统所在的设备,如 基本 Flash 脚本用法 中所述。

确定驱动程序更新是否成功

在目标板上更新驱动程序后,验证更新是否成功完成。您可以使用以下命令确定驱动程序更新的成功或失败。
要确定驱动程序更新是否成功
在启动的目标设备上执行以下命令
$ sha1sum –c /etc/nv_tegra_release
如果驱动程序更新成功,则输出在文件名后显示单词 OK。典型的成功消息如下所示
/usr/lib/xorg/modules/drivers/nvidia_drv.so: OK
如果文件丢失,驱动程序更新将失败。典型的错误消息如下所示
sha1sum: /usr/lib/xorg/modules/drivers/nvidia_drv.so: 没有此类文件或目录
/usr/lib/xorg/modules/drivers/nvidia_drv.so: 打开或读取失败
如果新文件与现有文件不同,驱动程序更新也会失败,并产生如下错误
/usr/lib/xorg/modules/drivers/nvidia_drv.so: 失败

使用 oem-config 重新配置 Jetson 设备

由 SDK 管理器刷写的目标设备在刷写后首次启动时会自动运行 oem-config 工具。您可以使用此工具更改设备配置的某些部分。
oem-config 工具对于自定义配置生产设备非常有用。在典型的用例中,您刷写默认配置并将其克隆到许多生产设备。每个设备的购买者可以使用 oem-config 设置他们自己的用户名和密码、语言、时区等。
有头目标设备(配备显示器的设备)上,oem-config 作为 GUI 应用程序运行。在无头目标设备(没有显示器的设备)上,它作为字符界面应用程序运行。
目标设备在首次启动时运行 oem-config 后,它会禁用该工具,使其在后续启动时不会运行。如果您安装自己的软件包并手动刷写目标设备(在 SDK 管理器之外),如果您希望它在第一次后续启动时运行,则必须手动重新启用 oem-config。同样,目标设备在运行一次 oem-config 后会禁用它。
要在闪存驱动器上手动重新启用 oem-config
1. 选择与目标设备类型相同的源设备,在该设备上已安装所有必需的软件包。
2. 在源设备上安装以下软件包,以便为下次重启启用 oem-configubiquityoem-configoem-config-gtk。输入以下命令
$ sudo apt-get install --no-install-recommends ubiquity oem-config oem-config-gtk
3. 删除软件包 nvidia-l4f-oem-config
$ sudo dpkg --purge nvidia-l4t-oem-config
4. 将源设备的 APP 分区克隆到 backup.imgbackup.img.raw。有关详细信息,请参阅 克隆 Jetson 设备并刷写
5. backup.img.raw(ext4 镜像文件)挂载到主机上您选择的挂载点。
6. 将任何 Jetson 特定的二进制文件应用于镜像文件。nv-oem-config 设置文件包含在 apply_binaries 脚本中。要运行此脚本,请输入
$ cd Linux_for_Tegra
$ sudo ./apply_binaries.sh -r <root>
其中 <root> 表示 backup.img.raw 挂载点。
7. nv-oem-config.target 设置为 default.target
$ cd $root/etc/systemd/system
$ sudo rm default.target
$ sudo ln -s /lib/systemd/system/nv-oem-config.target default.target
8. 卸载在步骤 5 中挂载的设备
$ umount $root
9. 创建更新后的镜像文件 backup.img.raw 的稀疏版本,并将其命名为 system.img:
$ cd Linux_for_Tegra/bootloader/
$ sudo ./mksparse -v –fillpattern=0 /path/to/backup.img.raw system.img
10. system.img 刷写到目标设备。有关详细信息,请参阅 克隆 Jetson 设备并刷写
要在 SD 卡上手动重新启用 oem-config
1. 选择与目标设备类型相同的源设备,在该设备上已安装所有必需的软件包。
2. 输入以下命令,在源设备上安装以下软件包,以便为下次重启启用 oem-configubiquityoem-configoem-config-gtk
$ sudo apt-get install --no-install-recommends ubiquity oem-config oem-config-gtk
3. 删除软件包 nvidia-l4f-oem-config
$ sudo dpkg --purge nvidia-l4t-oem-config
4. 关闭源设备电源并从中取出 SD 卡,然后将其插入主机系统。
5. 使用您选择的挂载点,将 SD 卡的分区 #1(ext4 文件系统)挂载到主机上。
6. 将任何 Jetson 特定的二进制文件应用于 SD 卡的分区 #1。相应的文件在 nv-oem-config 中列出,并由 apply_binaries 脚本应用。输入以下命令以运行脚本
$ cd Linux_for_Tegra
$ sudo ./apply_binaries.sh -r <root>
其中 <root> 表示 SD 卡的分区 #1 挂载点。
7. nv-oem-config.target 设置为 default.target
$ cd $root/etc/systemd/system
$ sudo rm default.target
$ sudo ln -s /lib/systemd/system/nv-oem-config.target default.target
8. 运行 jetson-disk-image-creator.sh 以创建具有修改后 rootfs 的新 SD 卡镜像
$ cd Linux_for_Tegra/tools
$ sudo ROOTFS_DIR=<root> ./jetson-disk-image-creator.sh -o sd-blob.img -b jetson-nano-devkit -r 100
其中 <root> 表示 SD 卡的分区 #1 在其挂载点。有关详细信息,请参阅 生成要刷写到 SD 卡的镜像
9. 输入以下命令以卸载在步骤 4 中挂载的设备
$ umount $root
10. sd-blob.img 刷写到新的 SD 卡。有关详细信息,请参阅 刷写到 SD 卡

关于通过调试端口进行通信

主机计算机上的串行应用程序通常通过主机计算机的 tty 设备和用于刷写的目标设备 USB 端口与 oem-config 通信。(请参阅主题 快速入门 中的 假设。)
一些 Jetson 开发套件还在 40 针接头上有一个 UART 端口。您可以编辑 oem-config 配置文件,使 oem-config 改为使用此端口。您必须在目标设备上刷写镜像之前进行此更改。
Jetson Nano 设备支持使用 micro USB 连接器作为调试端口。这是控制无头 Jetson Nano 设备的最简单方法,因为不需要 USB 转 TTL 适配器。
要配置 oem-config 以使用 40 针接头 UART 端口
1. 在主机计算机上找到相应的配置文件
对于 Jetson Nano 设备和 Jetson TX1:<top>/etc/nv-oem-config.conf.t210
对于 Jetson Xavier 系列:<top>/etc/nv-oem-config.conf.t194
对于 Jetson TX2 系列:<top>/etc/nv-oem-config.conf.t186
2. 打开配置文件并查找定义属性的行
nv-oem-config-uart-port=ttyGS0
3. 将此属性的值从 ttyS0 更改为 ttyTHS1
4. 保存并关闭配置文件。
5. 继续刷写目标设备,如本主题其他部分所述。

oem-config 中的无头模式流程

在目标系统首次启动之前,您必须在主机计算机上启动串行应用程序。您可以使用 puttyscreen 或任何其他通过主机计算机的 tty 设备进行通信并支持 UTF‑8 字符集的串行应用程序。
注意
NVIDIA 不建议将 minicom 用于此应用程序,因为它在处理 UTF‑8 时存在一些问题。
当目标设备在刷写后首次启动并且未找到显示设备时,它将在无头模式下运行 oem-config。使用以下步骤重新配置目标设备。
要使用 oem-config 重新配置目标设备
1. oem-config 显示欢迎屏幕。要前进到下一个屏幕,请按 Tab 键,然后按 Enter 键。
2. oem-config 显示管理其使用的许可证。阅读许可证,然后按 Tab 键,再按 Enter 键接受它。
A screenshot of a cell phone Description automatically generated
3. oem-config 显示一个屏幕,其中列出了语言。使用向上和向下箭头键选择您要用于安装过程的语言。然后按向左和向右箭头键选择“OK”,然后按 Enter 键。
A screenshot of a cell phone Description automatically generated
注意
要从任何屏幕返回到上一个屏幕,请选择“Cancel”(取消)并按 Enter 键。您可以通过多次执行此操作返回多个屏幕。
4. oem-config 显示一个屏幕,其中列出了您选择的语言所在的位置。选择您的位置;然后选择“OK”并按 Enter 键。
A screenshot of a cell phone Description automatically generated
5. oem-config 显示一个屏幕,其中列出了键盘布局。选择您键盘的布局,然后选择“OK”并按 Enter 键。
A screenshot of a cell phone Description automatically generated
6. oem-config 显示一个屏幕,其中列出了您选择的位置中存在的时区。选择您的时区,然后选择“OK”并按 Enter 键。
A screenshot of a cell phone Description automatically generated
如果未列出您的时区,请多次选择“Cancel”(取消)以返回到列出位置的屏幕,然后选择其他位置。
7. oem-config 询问您是否要将系统时钟设置为协调世界时 (UTC) 或格林威治标准时间 (GMT)。Linux 希望系统时钟设置为 UTC;因此,NVIDIA 建议您选择“Yes”(是)并按 Enter 键。但是,如果您正在使用另一个希望系统时钟设置为本地时间的操作系统,请选择“No”(否)。
A screen shot of a smart phone Description automatically generated
8. oem-config 要求您指定您的姓名。输入您的全名(例如,John Smith),然后选择“OK”并按 Enter 键。
A screenshot of a cell phone Description automatically generated
9. oem-config 要求您为您的用户帐户指定用户名。oem-config 会为此名称创建一个用户帐户。然后选择“OK”并按 Enter 键。
NVIDIA 建议使用您的名字,仅使用小写字母。对于非管理活动,请使用此帐户而不是 root 帐户。
A screenshot of a cell phone Description automatically generated
10. oem-config 要求您为您的用户帐户指定密码。输入密码,然后选择“OK”并按 Enter 键。
NVIDIA 建议您指定强密码,即长度超过八个字符,并且至少包含一个大写字母、一个小写字母、数字和标点符号的密码。如果您输入弱密码,oem-config 将要求您确认是否要使用它。
A screenshot of a cell phone Description automatically generated
11. oem-config 要求您再次输入密码,以确认您输入正确。如果您两次都输入相同的密码,它将设置密码并继续下一步。否则,它会提示您再次指定密码。
A screenshot of a cell phone Description automatically generated
12. oem‑config 提示您创建并启用 4 GB 交换文件。它首先显示一条消息,总结了这样做的优点和缺点
A screenshot of a computer Description automatically generated with medium confidence
阅读消息并决定是否创建交换文件。然后按 Enter 键前进到下一个屏幕
A screenshot of a computer program Description automatically generated with low confidence
要创建并启用交换文件,选择“是”并按 Enter 键。要跳过此步骤,选择“否”并按 Enter 键。
注意
正如“创建交换文件”屏幕所解释的那样,如果您计划将 Jetson 设备用于人工智能 (AI) 和深度学习应用程序,NVIDIA 建议您创建并启用交换文件。
请注意,拥有交换文件可能会因增加对介质的写入而缩短 SD 卡的寿命。
如果您未在 oem-config 中创建交换文件,则可以稍后手动创建一个,如 手动创建和启用交换文件 部分所述。
13. oem-config 提示您指定 APP 分区所需的大小,以兆字节为单位。要请求最大可能的大小,请将字段留空或输入 0(零)。
A screenshot of a cell phone Description automatically generated
注意
这仅适用于“刷写到 SD 卡”的情况。对于另一种使用 flash.sh 的情况,您当然可以使用 flash 选项 ‑S 静态地增大 APP 分区。
14. oem-config 显示一个接口列表,它可以将这些接口用作安装期间的主网络接口。
如果您使用以太网作为主网络接口,请确保以太网电缆已连接。然后选择 eth0: Ethernet 选项,选择“确定”,然后按 Enter 键。
A screenshot of a cell phone Description automatically generated
注意
由于此向导中存在已知的无线网络配置错误,您必须手动输入 SSID 而不是从列表中选择它,或者等到初始设置完成后,再使用 nmcli 命令配置无线网络。有关更多详细信息,请参阅 ubuntu.com 文档页面 配置 WiFi 连接
15. oem-config 提示您输入主机的主机名。如果您不知道主机的名称,请咨询您的网络管理员。如果您正在设置专用网络,您可以选择任何名称。输入主机名,然后选择“确定”,并按 Enter 键。
A screenshot of a cell phone Description automatically generated
16. oem-config 提示您选择一个 nvpmodel 模式
A screenshot of a computer Description automatically generated
如果您不知道选择哪种模式,请保留默认设置(在屏幕上突出显示)。
您可以在运行时通过 nvpmodel GUI 更改 nvpmodel 模式。有关更多信息,请转到主题 时钟频率和电源管理,并阅读适用于您的 Jetson 平台的“电源管理”部分中的“nvpmodel GUI”小节。
17. oem-config 使用您所做的选择重新配置系统,然后继续显示系统的登录提示符。
手动创建和启用交换文件
此过程是 使用 oem-config 重新配置目标设备 部分的步骤 12 的替代方法。您可以在运行 oem-config 后随时执行此操作。
1. 要创建交换文件,请输入以下命令
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
2. 要在启动时自动挂载交换文件,请在文本编辑器中打开 /etc/fstab,添加以下行并保存
/swapfile swap swap defaults 0 0
注意
此行中的字段可以使用任何组合和数量的制表符和空格分隔。NVIDIA 建议调整字段间距,使其与文件中其他行的字段对齐。

跳过 oem-config

如果您不想运行 oem-config 来设置系统,则可以在刷写之前运行主机脚本 l4t_create_default_user.sh,以使首次启动过程跳过它。如果未定义默认用户,则启动过程将运行 oem‑configl4_create_default_user.sh 创建一个默认用户,从而阻止 oem‑config 运行。
该脚本的用法是
$ l4t_create_default_user.sh [‑u <user>] [‑p <pswd>] [‑n <host>] [‑a] [‑h]
下表描述了命令行选项
命令行选项
描述
-u <user>
‑‑username <user>
使用指定的用户名创建默认用户。如果省略,脚本将创建一个名为 nvidia 的默认用户。
-p <pswd>
‑‑password <pswd>
使用指定的密码创建默认用户。如果省略,脚本将生成一个随机密码。
‑n <host>
‑‑hostname <host>
使用指定的主机名创建默认用户。如果省略此选项,脚本将使用主机名 tegra-ubuntu
‑a
‑‑autologin
配置 Jetson Linux 以在启动时自动登录到默认用户。如果省略,用户必须手动登录。
‑‑accept-license
接受 NVIDIA 软件的 EULA。如果省略,脚本将提示您接受 EULA。
‑h
‑‑help
打印脚本用法的描述。
示例
创建一个名为 nvidia 的用户,密码为 NDZjMWM4,主机名为 tegra-ubuntu
$ l4t_create_default_user.sh -u nvidia -p NDZjMWM4
创建一个名为 ubuntu 的用户,密码随机生成,主机名为 tegra-ubuntu,并配置 Jetson Linux 以在启动时自动登录到该用户。
$ l4t_create_default_user.sh -u ubuntu -a
创建一个名为 nvidia 的用户,密码随机生成,主机名为 tegra
$ l4t_create_default_user.sh -n tegra

修改 Jetson RAM 磁盘

使用以下步骤修改 Jetson 设备的 RAM 磁盘的默认配置。
修改 RAM 磁盘
1. 解包您的 initrd
$ sudo su
$ cp /boot/initrd /tmp
$ mkdir /tmp/temp
$ cd /tmp/temp
$ gunzip -c /tmp/initrd | cpio -i
2. tmp/temp/ 文件夹中修改您的 initrd 内容
3. 打包您的 initrd
$ sudo su
$ cd /tmp/temp
$ find . | cpio -H newc -o | gzip -9 -n > ../initrd
4. 用您自定义的 initrd 替换 initrd
$ cp /tmp/initrd /boot/initrd