重新安装系统

本文档使用命令行方式刷机。

官方教程地址:

Quick Start — NVIDIA Jetson Linux Developer Guide

刷机工具下载地址,L4T 版本为 36.4.4,需下载 Driver Package (BSP)和 Sample Root Filesystem 这两项:

Jetson Linux Release 36.4.4 | NVIDIA Developer

下载完成后,将两个压缩文件拷贝到X86架构的Ubuntu系统的主机(HOST)上,运行下面命令:

$ tar xf ${L4T_RELEASE_PACKAGE}
$ sudo tar xpf ${SAMPLE_FS_PACKAGE} -C Linux_for_Tegra/rootfs/
$ cd Linux_for_Tegra/
$ sudo ./tools/l4t_flash_prerequisites.sh
$ sudo ./apply_binaries.sh

在 Orin AGX 上执行以下步骤:

  1. 断电
  2. 连接 HOST 主机(USB-A)和 AGX(USB-C),注意是 AGX 的 DEBUG 口而非 DC 口
  3. 按住中间的 Recovery 按钮不放
  4. AGX 上电,继续按住 Recovery 保持 5s 以上
  5. 按左侧 Power 按钮,松开
  6. 松开 Recovery 按钮

此时 AGX 应该已经进入 Recovery Mode,在 HOST 终端使用 lsusb命令应该能看到 NVIDIA Corp. APX

然后在 HOST 上执行命令

 sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_t234_nvme.xml \
  --showlogs --network usb0 jetson-agx-orin-devkit external

命令执行完成后,AGX 断电,重启,接入显示器,屏幕会疯狂输出命令行,等待。

稍候,会看到 Ubuntu 的安装和配置界面,在本阶段设置账号和密码等内容。

如要安装 Chromium 浏览器,安装完成后需要手动退出,不要傻等。

清空EMMC

刷完系统后,引导和系统已经被安装到 NVME 固态硬盘。

但是 EMMC 中的数据和引导还在,烧录命令未包含擦除和覆盖 EMMC 存储的操作。

当前 NVME 有更高启动顺序,如果有强迫症,可以删除 EMMC 中的所有数据。

先确认 EMMC 设备节点:

pat@pat-desktop:~$ lsblk -o NAME,TYPE,SIZE,MOUNTPOINT | grep mmcblk
mmcblk0      disk  59.2G
├─mmcblk0p1  part  57.8G
├─mmcblk0p2  part   128M
├─mmcblk0p3  part   768K
├─mmcblk0p4  part  31.6M
├─mmcblk0p5  part   128M
├─mmcblk0p6  part   768K
├─mmcblk0p7  part  31.6M
├─mmcblk0p8  part    80M
├─mmcblk0p9  part   512K
├─mmcblk0p10 part    64M
├─mmcblk0p11 part    80M
├─mmcblk0p12 part   512K
├─mmcblk0p13 part    64M
├─mmcblk0p14 part   400M
└─mmcblk0p15 part 479.5M
mmcblk0boot0 disk     4M
mmcblk0boot1 disk     4M

确认存在的引导:

pat@pat-desktop:~$ sudo efibootmgr -v
BootCurrent: 0001
Timeout: 5 seconds
BootOrder: 0001,0002,0000,0003,0004
Boot0000* Enter Setup   FvVol(49a79a15-8f69-4be7-a30c-a172f44abce7)/FvFile(462caa21-7614-4503-836e-8ab6f4662331)
Boot0001* UEFI WD_BLACK SN850X 1000GB 251256802522 1    VenHw(1e5a432c-0466-4d31-b009-d4d9239271d3)/MemoryMapped(11,0x14160000,0x1417ffff)/PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/NVMe(0x1,00-1B-44-8B-4D-D5-A5-9A)N.....YM....R,Y.
Boot0002* UEFI eMMC Device      VenHw(1e5a432c-0466-4d31-b009-d4d9239271d3)/MemoryMapped(11,0x3460000,0x347ffff)/eMMC(0)/Ctrl(0x0)N.....YM....R,Y.
Boot0003* BootManagerMenuApp    FvVol(49a79a15-8f69-4be7-a30c-a172f44abce7)/FvFile(eec25bdc-67f2-4d95-b1d5-f81b2039d11d)
Boot0004* UEFI Shell    FvVol(49a79a15-8f69-4be7-a30c-a172f44abce7)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)

能看到 Boot0001 和 Boot0002 分别是 NVME 和 EMMC 的两块硬盘,启动顺序 Boot0001 在 Boot0002 之前。

接下来开始擦除 EMMC 分区,先卸载 EMMC 所有分区:

sudo umount -a /dev/mmcblk0p* 2>/dev/null

停止 udisk2 服务,阻止系统自动挂载 EMMC:

sudo systemctl stop udisks2
sudo systemctl mask udisks2  # 临时禁用,重启后恢复

擦除 EMMC 数据:

sudo dd if=/dev/zero of=/dev/mmcblk0 bs=4M status=progress conv=fsync

擦除之后应该显示:

pat@pat-desktop:~$ lsblk -o NAME,TYPE,SIZE,MOUNTPOINT | grep mmcblk
mmcblk0      disk  59.2G
mmcblk0boot0 disk     4M
mmcblk0boot1 disk     4M

剩下的 boot0 和 boot1 分区确定是空的,但是由于没有写入权限,没找到清理的方法,可能是 EMMC 硬件专有引导分区,不能删除。那就先不删了

此外,引导仍然存在,这是因为引导顺序并非存储在 EMMC 中,UEFI 的引导项要么手动删除,要么移除物理设备(EMMC 是焊上去的)。

执行下面命令,可以删除该引导项:

pat@pat-desktop:~$ sudo efibootmgr -b 2 -B
BootCurrent: 0001
Timeout: 5 seconds
BootOrder: 0001,0000,0003,0004
Boot0000* Enter Setup
Boot0001* UEFI WD_BLACK SN850X 1000GB 251256802522 1
Boot0003* BootManagerMenuApp
Boot0004* UEFI Shell