Xavier AGX/NX 采用NVMe 启动,NVMe flash JetPack方案

news/2025/2/7 14:56:42/

目录

方案一、 适用JetPack4.5及以前版本(Xavier AGX/NX)

方案二、适用JetPack 4.6-L4T-R32.6.1(Xavier AGX/NX)


由于NVIDIA Jetson 系列核心模块自带的EMMC空间均有限而在实际产品应用过程中,需要存储系统、算法、采集和分析后的视频、图片、音频等内容,仅利用Jetson 模块自带的存储空间是远远不足够的,因此需要外接存储设备(相对于SATA接口,NVMe接口更小也更适合嵌入式设备采用),本案例均基于M.2 Key M(NVMe PCIe协议)。        

硬件:Jetson Xavier AGX/NX

SSD:  M.2 Key M(2280), NVMe 

软件:JetPack 4.5、JetPack4.6

早期英伟达NVIDIA Developer Forum上提供了一个解决方案但是采用该方案存在两个问题:

1、Xavier或NX 在反复开关机后概率性出现无法Mount SSD为rootfs系统盘,即Mount rootfs识别从而导致默认成了emmc 为rootfs,重启后可能正常;

2、应用操作比较比较复杂,不适宜规模批量应用

nvidia@xavier:~$ mount
/dev/mmcblk0p1 on / type ext4 (rw,relatime,data=ordered)
proc on /proc type proc (rw,relatime)

如下提供 两个解决方案分别针对Jetpack 4.5及前版本 和 4.6 版本,已验证了Lenovo 1TB(P980),Samsung 1TB(MZ-V8V1T0BW)、铠侠Kioxia等品牌大小从128GB 至 1TB (M.2 Key-M, NVMe PCIe 协议)

方案一、 适用JetPack4.5及以前版本(Xavier AGX/NX)

步骤1、插入NVMe SSD到NX 机器的M.2 插槽并上电开机  (步骤1至2基于Xavier NX)

步骤2、登录NX 系统,采用gdisk 创建NVMe 分区表并获取PARTUUID,如下Bash 操作 

$sudo gdisk /dev/nvme0 或 /dev/nvme0n1"o" -> 清除全部分区及分区数据
"n" -> 创建新分区
"1" -> 输入分区名称即 /dev/nvme0n1p1
"40M" -> 按回车
"Linux filsystem" -> 按回车默认文件系统
"c" -> 输入分区表名称"PARTLABEL"
"w" -> 写入分区信息到NVMe 并退出
$ sudo mkfs.ext4 /dev/nvme0n1p1
//如果是R32.4.4系统需获取Partition UUID (第4步需要);如果是R32.5系统则不需要Partition UUID
$ sudo blkid /dev/nvme0n1p1
执行结果类似如下:/dev/nvme0n1p1: LABEL="PARTLABEL" UUID="9dbf8e39-4f70-45a2-a95a-1df033209c42" TYPE="ext4" PARTUUID="ed722cf3-ed4e-4989-9608-861c5e67291f"

步骤3、复制rootfs文件系统 (此步骤在电脑Host PC操作,将ssd 从Xavier NX拔下来并挂载到电脑)

$ sudo mount /dev/sdx1 /mnt
$ cd Linux_for_Tegra/rootfs/   (电脑端Linux_for_Tegra/rootfs 目录)
// 复制Rootfs文件系统 到NVMe SSD
$ sudo tar -cpf - * | ( cd /mnt/ ; sudo tar -xpf - )
$ sudo umount /mnt

步骤4、将Xavier NX 设置为Recovery mode 并通过USB链接到电脑主机Host PC

步骤5、在电脑端复制步骤2获取的PARTUUID 到 Linux_for_Tegra/bootloader/l4t-rootfs-uuid.txt (R32.5 不需要此步骤)

采用如下命令刷机Xavier NX(Rootfs 到NVMe )

// L4T-R32.4.4
$ sudo ./flash.sh jetson-xavier-nx-devkit-emmc external
// L4T-R32.5
$ sudo ./flash.sh jetson-xavier-nx-devkit-emmc nvme0n1p1

步骤6、等待步骤5 刷机完成,Xavier NX会自动重启,进入Xavier NX 查看df 命令(nvme0n1p1 已默认为启动系统),继续安装相关SDK 软件即可

方案二、适用JetPack 4.6-L4T-R32.6.1(Xavier AGX/NX)

步骤1、插入空白NVMe SSD到Xavier AGX M.2 插槽并上电开机  (步骤1至4基于Xavier AGX)

步骤2、登录Xavier AGX系统,采用gdisk 创建NVMe 分区表并获取PARTUUID和Sectors扇区

$sudo gdisk /dev/nvme0 或 /dev/nvme0n1"o" -> 清除全部分区及分区数据
"n" -> 创建新分区
"1" -> 输入分区名称即 /dev/nvme0n1p1
"40M" -> 按回车
"Linux filsystem" -> 按回车默认文件系统
"c" -> 输入分区表名称"PARTLABEL"
"w" -> 写入分区信息到NVMe 并退出$sudo fdisk /dev/nvme0n1 "p" 查看分区信息并获取sector 

步骤3、将NVMe SSD 格式化为ext4 文件系统(ext2/3稳定性远远不如ext4)

$ sudo mkfs.ext4 /dev/nvme0n1p1

步骤4、获取NVMe SSD 的PARTUUID

$ sudo blkid /dev/nvme0n1p1如:/dev/nvme0n1p1: LABEL="PARTLABEL" UUID="9dbf8e39-4f70-45a2-a95a-1df033209c42" TYPE="ext4" PARTUUID="ed722cf3-ed4e-4989-9608-861c5e67291f"

以下操作再电脑Host PC上执行(PC系统Ubuntu 18.04, 步骤5至8 )

步骤5、修改NVMe SSD 分区表,将步骤2中的sector_size和num_sectors 填入flash_l4t_nvme.xml (本例新建一个xml以做区分)

$vi Linux_for_Tegra/tools/kernel_flash/flash_l4t_nvme.lenovo.x800.1TiB.xml<device type="nvme" instance="0" sector_size="512" num_sectors="2000409264">

步骤6、默认系统刷机到Internal EMMC

$sudo ./tools/kernel_flash/l4t_initrd_flash.sh jetson-xavier mmcblk0p1

步骤7、将步骤2  获取uuid 填写到 Linux_for_Tegra/bootloader/l4t-rootfs-uuid.txt_ext

步骤8、运行如下命令将系统刷入NVMe SSD并等待刷机完成success:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 -c ./tools/kernel_flash/flash_l4t_nvme.lenovo.x800.128GiB.xml -S 100GiB  --showlogs jetson-xavier nvme0n1p1

步骤9、Xavier AGX重启后验证系统是否已成功刷入NVMe SSD


http://www.ppmy.cn/news/502790.html

相关文章

基于三星单片机S3C9454+NTC热敏电阻的温度检测设计

1、设计原理&#xff1a; NTC热敏电阻为3990K&#xff0c;当温度25摄氏度时对应的阻值为100K。NTC热敏电阻的特性是随着温度升高阻值降低。当温度变化时阻值跟着变化&#xff0c;电压也就跟着变化。S3F9454通过ADC6将检测到的电压值转化为实际的温度值。本例温度检测范…

Apikit 自学日记:邀请成员一起协作

邀请成员一起协作 在 Apikit 中&#xff0c;所有的 API 接口都是以项目的方式进行管理&#xff0c;因此首先需要创建一个 API 管理项目。 除了创建 API 项目&#xff0c;还可以创建项目组来对项目进行分类或者设置统一的用户操作权限。 一、手动创建项目 进入 API 研发管理项…

傻白入门芯片设计,AveMC常用指令合集(二十二)

常用命令 avemc [-gui/f]&#xff1a;启动AveMC read_desin&#xff1a;从文件中读取设计&#xff0c;并执行其所有模块 prove&#xff1a;执行形式化验证 reset&#xff1a;重置属性为Undetermine clear/exit/quit&#xff1a;清理工作并退出 show_design_info&#xff1…

Mysql增删改查、Mysql查询属性、Mysql使用案例

create database 创建db1数据库 create database db1 charset utf8; show databases 查看数据库 show databases; alter database 修改库的编码 alter database db1 charset gdk; drop database 删除db1数据库 drop database db1; use databases 使用数据库 use …

Cloud Studio 浏览器插件来啦

当谈到Cloud Studio浏览器插件的优势时&#xff0c;最显著的就是它的便捷性。通过安装Cloud Studio浏览器插件&#xff0c;用户可以在浏览器中直接打开Cloud Studio的开发环境&#xff0c;无需切换到其他应用程序&#xff0c;从而提高了开发效率。 另一个优势是插件对于Github…

解决阿里云远程桌面蓝屏、黑屏

1、打开远程连接任务管理器&#xff1a;Ctrl ShiftEsc &#xff08;或CtrlAltEnd&#xff09; 2、结束任务&#xff1a; explorer.exe 3、任务管理器→ 文件&#xff08;工具栏&#xff09;→运行新任务&#xff08;新建任务&#xff09;→浏览→c:\windwos\explorer.exe

向日葵远程控制连接服务器黑屏原因

我的设备:一个系统为Ubuntu的工作站和一台系统为Win7的电脑&#xff0c;Win7电脑是自用 因为要用自用电脑远程连接工作站&#xff0c;但是连接上服务器发现是黑屏&#xff0c;就像这样: 百度问题&#xff0c;得到的反馈绝大多数都是修改分辨率&#xff0c;但是对于我的问题好…

连接ubuntu 向日葵黑屏

问题&#xff1a;连接Ubuntu 20.04.4 的向日葵&#xff0c;黑色屏幕不显示&#xff08;但是可以打开文字对话框&#xff09; 尝试1&#xff1a;执行 sudo apt install lightdm sudo dpkg-reconfigure lightdm 然后重启&#xff0c;但是依然黑屏 尝试2&#xff1a;向日葵工单咨…