算力舱刷系统(新版)
适用应用:
算力舱刷机工具(新版)lpk 下载: 点击下载
如果需要在刷机界面手动下载资源,可打开:
这份文档用于 jetson-flash 目录里的安装脚本,重点入口是:
startup_scripts/setup_ssd_docker.sh
脚本支持多个 phase,每个阶段只做一件明确的事。
先进入刷机系统
有两种方式进入刷机系统:
- 通过微服中安装“算力舱刷机工具”应用
- 直接通过本地机器启动刷机镜像
警告操作
在构建系统镜像的时候,会需要较大的硬盘空间,请确保机器剩余空间大于 60GB。
方式 1:使用算力舱刷机工具
在内测工具中的算力舱内测组中安装这个应用。
这个应用包含
jetson系统镜像和cuda相关驱动,体积较大(约 20G),需要等待下载完成。安装完成后,打开应用会出现一个
terminal,这个terminal就是刷机系统。如果需要手动下载刷机资源,可在刷机界面打开:
方式 2:在本地机器运行刷机镜像
先拉取镜像,二选一即可:
bash# 大陆地址 docker pull registry.cn-hangzhou.aliyuncs.com/catdogai/jetson-flash:t912-6.2-0.1.0-rc2 # Docker Hub 地址 docker pull catdogai/jetson-flash:t912-6.2-0.1.0-rc2启动容器,下面分别是大陆地址和 Docker Hub 地址的命令,任选其一:
bash# 大陆地址 docker run -it --rm --privileged --network host -v /dev/bus/usb:/dev/bus/usb -v /dev:/dev registry.cn-hangzhou.aliyuncs.com/catdogai/jetson-flash:t912-6.2-0.1.0-rc2 bash # Docker Hub 地址 docker run -it --rm --privileged --network host -v /dev/bus/usb:/dev/bus/usb -v /dev:/dev catdogai/jetson-flash:t912-6.2-0.1.0-rc2 bash等待
docker启动完成后,会出现一个terminal,这个terminal就是刷机系统。
刷机前步骤
确保算力舱和刷机系统通过
typec连接起来。- 如果使用微服应用进行刷系统,请把算力舱上的
typec口和微服上的usb连接起来 - 如果使用本地机器进行刷系统,请把算力舱上的
typec口和本地机器usb连接起来
- 如果使用微服应用进行刷系统,请把算力舱上的
确保算力舱处于
recovery mode。- 可通过管理列表中的
recovery键进入recovery模式 - 可在算力舱刷机工具系统中执行
ssh nvidia@192.168.55.1登录后,运行sudo reboot --force forced-recovery
- 可通过管理列表中的
附加说明
在拆开算力舱的外壳后,靠近电源按钮的键为 recovery,另外一个为 reset 键。在这两个键的下方会有两个小字标识,分别为 RECY 和 RST。
- 在关机的情况下,通过按住
recovery按钮,然后再按开机键 2 秒,再松开开机键,然后才松开recovery键 - 在开机的情况下,先按住
recovery键,再按压reset键,最后松开reset键,再松开recovery键
进入
recovery mode后,在刷机系统执行lsusb。如果结果中出现
ID 0955:7023 Nvidia Corp.APX,说明已经成功进入recovery模式。注意不要看到NVIDIA Linux for Tegra,那个表示设备还在正常启动的Tegra系统里。在刷机系统执行刷机命令:
bashcd /Linux_for_Tegra sudo ./flash.sh jetson-agx-orin-devkit internal # 重复刷写可用: sudo ./flash.sh -r jetson-agx-orin-devkit internal等待运行结束后,会显示类似下面的内容:
text[ 1100.2456 ] Coldbooting the device [ 1100.2459 ] tegrarcm_v2 --chip 0x23 0 --ismb2 [ 1100.2462 ] MB2 version 01.00.0000 [ 1100.3052 ] Coldbooting the device [ 1100.3056 ] tegrarcm_v2 --chip 0x23 0 --reboot coldboot [ 1100.3057 ] MB2 version 01.00.0000 *** The target generic has been flashed successfully. *** Reset the board to boot from internal eMMC.算力舱会自动重启。重启成功后,按下面“刷机后先准备安装脚本”继续。
刷机后先准备安装脚本(必做)
刷机后,在板载系统(eMMC)的 /home/nvidia 目录下会有 lzc-jetson-installer.tar.gz,先解压再执行后续步骤:
cd /home/nvidia
tar -xzf lzc-jetson-installer.tar.gz
cd lzc-jetson-installer
ls lzc-jetson-installer.shlzc-jetson-installer.sh 脚本在 lzc-jetson-installer 目录中,不在 /home/nvidia 根目录。
1. 先理解两个系统
这份文档里会反复提到两个系统:
- 板载系统(eMMC):系统运行在机器主板自带的内置存储上。可以把它理解成“机器自带的基础系统”。
- SSD 系统(NVMe):系统运行在后续迁移到的 NVMe SSD 上。可以把它理解成“迁移后的工作系统”。
这两个说法描述的是“当前系统跑在哪块存储上”,不是两套完全独立的软件版本。
最容易判断的方法是:
findmnt /判断规则:
- 输出是
/dev/mmcblk0p1一类:你当前在 板载系统(eMMC) - 输出是
/dev/mapper/ssd_vg-ssd_lv:你当前在 SSD 系统(NVMe)
可以这样理解它们的区别:
- 板载系统(eMMC):刷机完成后先进入这里,主要负责初始化磁盘、迁移系统、修复或重建启动链路。
- SSD 系统(NVMe):迁移完成后主要在这里长期运行,负责 Docker、
lzc-ai-agent和日常业务。 - 板载系统(eMMC) 更接近“安装器 / 维护系统”。
- SSD 系统(NVMe) 更接近“最终工作系统”。
它们的优缺点可以这样理解:
- 板载系统(eMMC)优点:机器出厂就能用,刷机后可以直接进入,适合做初始化、修复和兜底恢复。
- 板载系统(eMMC)缺点:存储空间和性能通常不如 NVMe SSD,更不适合长期承载镜像、模型和日常业务数据。
- SSD 系统(NVMe)优点:容量更大、读写更快,更适合长期运行 Docker、模型服务和业务数据。
- SSD 系统(NVMe)缺点:需要先完成初始化和迁移;如果启动链路或磁盘状态有问题,排查时通常还是要回到板载系统(eMMC)处理。
如果只写 eMMC 系统,有些人会误以为这是某个单独发布的系统版本。为了减少误解,下面统一写成:
- 板载系统(eMMC)
- SSD 系统(NVMe)
2. 先理解目标
这套脚本的目标是:
- 在 NVMe 上建立 LVM(
ssd_vg/ssd_lv) - 把系统迁移到 NVMe
- 开机自动从 NVMe 运行(switch-root)
- 在 SSD 系统(NVMe)中配置 Docker 和
lzc-ai-agent
3. 常见场景怎么选
3.1 执行环境速查(最重要)
下面所有 ./lzc-jetson-installer.sh 命令都在 /home/nvidia/lzc-jetson-installer 目录执行。
各 phase 应该在哪个系统执行:
configure-disk:板载系统(eMMC)migrate-rootfs:板载系统(eMMC)bootstrap-ssd:板载系统(eMMC)configure-system:SSD 系统(NVMe)reset:从 板载系统(eMMC) 发起(脚本会自动重启并在 NVMe 首次启动继续执行)all:通常从 板载系统(eMMC) 发起(通常执行到 step2 后需要重启)
场景 A:全新配置
# 当前环境:板载系统(eMMC)
sudo ./lzc-jetson-installer.sh --phase configure-disk
sudo ./lzc-jetson-installer.sh --phase migrate-rootfs
sudo reboot
# 机器起来后(当前环境:SSD 系统(NVMe))
sudo /opt/lzc-jetson-installer/startup_scripts/setup_ssd_docker.sh --phase configure-system场景 B:已经有克隆好的 SSD(批量装机)
只做板载系统(eMMC)上的引导配置,不复制 rootfs:
# 当前环境:板载系统(eMMC)
sudo ./lzc-jetson-installer.sh --phase bootstrap-ssd
sudo reboot注意:
- 批量装机前先做 1 台完整演练(含断电重启、回归检查)
- 克隆盘不要和原盘同时在线启动同一机器,避免 LVM UUID 冲突
如果您的母盘容量比较小,而目标的盘比较大,您需要重新的执行下面的脚本进行扩容到硬盘实际的大小
#!/bin/bash
set -euo pipefail
DISK=/dev/nvme0n1
PART=/dev/nvme0n1p1
LV=/dev/ssd_vg/ssd_lv
echo '[1/5] 修复 GPT 备份表到磁盘末尾'
sgdisk -e "$DISK"
echo '[2/5] 将第 1 分区扩到整盘末尾'
parted -s "$DISK" resizepart 1 100%
echo '[3/5] 通知内核重新读取分区表'
partprobe "$DISK" || true
udevadm settle || true
sleep 2
DISK_SIZE=$(blockdev --getsize64 "$DISK")
PART_SIZE=$(blockdev --getsize64 "$PART")
echo "disk_size=$DISK_SIZE part_size=$PART_SIZE"
if [ $((DISK_SIZE - PART_SIZE)) -gt $((20 * 1024 * 1024 * 1024)) ]; then
echo '分区表已经改了,但内核还没刷新到新大小。先重启一次,再执行下面两条:'
echo "pvresize $PART"
echo "lvextend -l +100%FREE -r $LV"
exit 2
fi
echo '[4/5] 扩容 LVM PV'
pvresize "$PART"
echo '[5/5] 扩容 LV 和 ext4 文件系统'
lvextend -l +100%FREE -r "$LV"
echo
lsblk
echo
pvs
echo
vgs
echo
lvs -o +devices
echo
df -h /最终 lsblk 应该看到:ssd_vg/ssd_lv 接近整盘大小
场景 C:彻底重置(会清空所有 NVMe)
# 当前环境:板载系统(eMMC)
sudo ./lzc-jetson-installer.sh --phase resetreset 会自动重建并在最后自动重启。 注意:reset 是基于当前板载系统(eMMC)重建,不是“完整出厂重刷”。 如果你要完全重置系统,请重新刷机。
4. phase 详细说明(做什么、下一步做什么)
4.1 --phase configure-disk(步骤 1)
执行环境:
- 板载系统(eMMC)
作用:
- 探测 NVMe
- 初始化 LVM 根盘(
ssd_vg/ssd_lv) - 如果当前插着多块空白 NVMe,会自动并入同一 VG
- 安装后续手动扩容脚本到
/opt/lzc-jetson-installer/bin/lzc-expand-lvm.sh
成功后下一步:
- 运行
--phase migrate-rootfs
如果需要指定基盘:
sudo SETUP_SSD_BASE_DISK=/dev/nvme0n1 ./lzc-jetson-installer.sh --phase configure-disk如果目标 NVMe 不是空白盘,但你确认可以清理后重建:
sudo SETUP_SSD_BASE_DISK=/dev/nvme0n1 SETUP_SSD_ALLOW_REINIT_NONBLANK=1 ./lzc-jetson-installer.sh --phase configure-disk注意:
SETUP_SSD_ALLOW_REINIT_NONBLANK=1会清理目标盘上的现有数据- 不确定盘符时先用
lsblk确认,不要直接执行
4.2 --phase migrate-rootfs(步骤 2)
执行环境:
- 板载系统(eMMC)
作用:
- 把当前根系统复制到
/ssd - 写入目标系统
fstab - 安装并启用
setssdroot.service(下次启动会切到 NVMe root) - 在板载系统(eMMC)中禁用自动升级服务(在 setssdroot 配置完成之后执行)
成功后下一步:
sudo reboot- 启动后运行
--phase configure-system
4.3 --phase bootstrap-ssd
执行环境:
- 板载系统(eMMC)
作用:
- 适用于“已经有可启动克隆 SSD”的机器
- 激活已有 LVM root(
/dev/ssd_vg/ssd_lv) - 在板载系统(eMMC)上安装
setssdroot.service - 同步安装扩容脚本到
/opt/lzc-jetson-installer/bin/lzc-expand-lvm.sh - 在板载系统(eMMC)中禁用自动升级服务(同样在 setssdroot 配置后执行)
成功后下一步:
sudo reboot
注意:
- 如果使用的是克隆盘,不要和原盘同时在线启动同一机器,避免 LVM UUID 冲突
4.4 --phase configure-system(步骤 3)
前提:
- 当前
/已经是 NVMe LVM root(不是板载系统 eMMC)
执行环境:
- SSD 系统(NVMe)
作用:
- 禁用 SSD 系统(NVMe)当前系统自动升级服务
- 配置 swap
- 配置 Docker
- 配置 fan / bluetooth
- 安装并启动
lzc-ai-agent
成功后下一步:
- 正常使用即可
如果你要跳过 lzc-ai-agent 安装和启动:
sudo DISABLE_LZC_AIAGENT=1 /opt/lzc-jetson-installer/startup_scripts/setup_ssd_docker.sh --phase configure-system如果你需要单独执行安装软件脚本并设置代理:
sudo bash ./scripts/chroot_install_software.sh --http-proxy http://127.0.0.1:7890 --docker-proxy http://127.0.0.1:7890也可以用环境变量写法:
sudo HTTP_PROXY=http://127.0.0.1:7890 DOCKER_PROXY=http://127.0.0.1:7890 bash ./scripts/chroot_install_software.sh4.5 --phase reset
执行环境:
- 从板载系统(eMMC)发起
作用:
- 停止相关服务
- 清空所有 NVMe(危险)
- 重建步骤 1 和步骤 2
- 安排首次 NVMe 启动自动执行步骤 3
- 自动重启
- 基于当前板载系统(eMMC)重建(不是完整出厂重刷)
成功后下一步:
- 脚本会自动重启
- 首次进入 NVMe 后自动执行步骤 3
- 完成后登录机器做验证
如果你确认要跳过交互确认:
sudo ./lzc-jetson-installer.sh --phase reset --yes注意:
reset会清空所有 NVMe 数据reset是基于当前板载系统(eMMC)重建,不是完整系统重刷;如需完全重置请重新刷机
4.6 --phase all
执行环境:
- 通常从板载系统(eMMC)执行
作用:
- 顺序执行
configure-disk + migrate-rootfs - 如果当前已经是 NVMe root,继续执行
configure-system
注意:
- 大部分首次安装场景仍然需要你在重启后执行一次
configure-system(或使用reset的自动链路)
5. 常见问题(按报错找解决)
5.1 报错:No blank NVMe disk is available for initialization
原因:
- 所有 NVMe 都被识别为非空(有分区或签名)
处理:
- 指定基盘并允许清理:
sudo SETUP_SSD_BASE_DISK=/dev/nvme0n1 SETUP_SSD_ALLOW_REINIT_NONBLANK=1 ./lzc-jetson-installer.sh --phase configure-disk5.2 报错:Current rootfs is not on NVMe LVM(运行步骤 3 时)
原因:
- 你还在板载系统(eMMC)里
处理:
findmnt /看当前根是否ssd_vg/ssd_lv- 不是的话先重启
- 再执行
configure-system
5.3 插了第二块盘后空间没变
先确认:
- 这块盘是否在初始化时已经在线且空白
- 不是的话手动扩容:
sudo /opt/lzc-jetson-installer/bin/lzc-expand-lvm.sh --disk /dev/nvme1n1如果目标盘不是空白盘,但你确认可以清理:
sudo /opt/lzc-jetson-installer/bin/lzc-expand-lvm.sh --disk /dev/nvme1n1 --force-wipe
sudo /opt/lzc-jetson-installer/bin/lzc-expand-lvm.sh --disk /dev/nvme1n1 --force-wipe --yes注意:
--force-wipe会清理目标盘上的现有数据--yes会跳过确认提示,适合无人值守场景,执行前请先确认盘符
5.4 reset 后提示盘不是空白
原因:
- 旧分区信息缓存未及时刷新(脚本已做刷新与重试)
处理:
- 直接重试
reset - 或指定盘 + 允许重建
5.5 UI 显示磁盘可用空间异常(多盘同一 LVM)
说明:
- 后端已去重同一逻辑卷的
fsavail统计,避免两块盘重复累计
6. 验证系统
findmnt /
lsblk
sudo pvs
sudo vgs
sudo lvs
systemctl status lzc-ai-agent --no-pager
systemctl is-enabled setssdroot.service你应该看到:
/在/dev/mapper/ssd_vg-ssd_lvlzc-ai-agent正常启用并运行setssdroot.service已启用