资讯动态

Jetson Xavier NX 从 SD 卡启动完整指南:烧录、切换与排障

发布时间:2026/9/18 21:23:45 来源:尧图企业网站定制
很多人第一次拿到 Jetson Xavier NX最容易被坑的不是深度学习环境不是 CSI 摄像头而是一张小小的 SD 卡。明明按照教程烧好了镜像插到载板上电结果还是进了 eMMC 里的旧系统或者 SDK Manager 报错找不到设备折腾一晚上毫无进展。这篇记录就是写给准备从零开始用 SD 卡启动 Xavier NX 的朋友从镜像下载、烧录、启动模式切换到首次开机验证和常见坑位排查一条线走完。踩过那么多坑之后我把可复现的步骤和排查思路都整理在下面照着做就行。1. 先用 3 分钟搞懂 Xavier NX 的启动规则1.1 为什么你的板子默认不认 SD 卡Jetson Xavier NX 模块自带 16GB eMMC 存储这一点和树莓派差别很大。树莓派天生就是 SD 卡启动插卡即用而 Xavier NX 的 BootROM 在设计上允许从多种介质启动包括 eMMC、SD 卡、USB 甚至 NVMe但具体从哪个介质启动取决于模块引脚或载板上的启动配置信号。绝大多数官方开发者套件和第三方载板出厂默认的启动介质都指向模块内部的 eMMC。所以哪怕你把一张已经烧好完整系统的 SD 卡插进卡槽只要启动配置没有改BootROM 还是会优先加载 eMMC 里的 bootloader 和内核SD 卡在整个启动过程中根本没被“看到”。这就是很多新手卡住的根本原因镜像烧录没问题SD 卡也没问题但板子压根没打算从它启动。想从 SD 卡启动必须显式告诉板子“换一个启动介质”而不是单纯插卡。1.2 哪些场景真的需要 SD 卡启动不是因为 SD 卡启动听上去很酷才做而是这几个场景里SD 卡几乎是刚需。第一eMMC 空间不够用。Xavier NX 的 16GB eMMC 装完 JetPack 基础系统剩余空间本来就紧张再装 PyTorch、TensorRT、OpenCV 这一套几天就满了。这时候把系统放到大容量 SD 卡上成本最低、改动最小。第二多系统切换。跑 ROS 是一个环境跑 AI 推理是另一个环境互相之间依赖容易冲突。准备两张 SD 卡一张 ROS 专用、一张深度学习专用想用哪个就插哪张比反复重装系统省太多时间。第三系统急救。eMMC 里的系统被折腾坏了、启动不起来了SD 卡上的系统就成了“救援系统”。挂载 eMMC、备份数据、修复 bootloader都能在 SD 卡系统里完成。别等到系统挂了才想到准备救援卡那时候你连一个能开机的环境都没有。第四批量部署和恢复。项目原型做好之后把整个环境固化到 SD 卡镜像里量产或迁移时直接刷卡即可比逐台配置 eMMC 高效得多。2. 准备好这些再动手硬件、工具与镜像2.1 硬件清单与选卡建议硬件方面我建议先把清单列全避免做到一半发现缺东西。Xavier NX 开发者套件或者“模块 载板”的组合是必须的。我这篇以官方 Developer Kit 载板为例第三方载板原理一样但启动配置的位置和方式可能不同后面会单独说明。显示器建议用 DP 接口直连很多 DP 转 HDMI 线在 Xavier NX 上兼容性一般新手容易误判成“系统没启动”。键鼠、电源也不可少电源尽量用官方适配器或者标称 19V、5A 以上的足额电源供电不稳是各种稀奇古怪问题的源头。SD 卡的挑选值得单独说一下。容量方面建议 64GB 起步JetPack 完整系统加常用开发库30~40GB 是常态32GB 卡装完系统基本就没空间放数据了。速度等级方面认准 A2 和 V30A2 代表随机读写性能好对系统运行流畅度影响很大V30 保证持续写入速度不低于 30MB/s烧录时能快一些。品牌方面闪迪、三星、铠侠这类原厂卡更靠谱千万别碰价格明显低于市场价的所谓“大容量卡”十有八九是扩容卡烧录时看着正常运行几天就掉盘。a 顺便做了一张简单的对比方便理解不同存储介质对系统体验的影响存储介质典型顺序读取典型顺序写入随机 IOPS系统体验板载 eMMC120~150MB/s80~120MB/s中等最稳但空间小普通 SD 卡60~80MB/s30~50MB/s低能用但卡顿明显A2 级 SD 卡90~120MB/s60~90MB/s较高日常操作流畅2.2 下载官方 JetPack主机的硬盘和网络要留够制作 SD 卡系统本质上就是把 JetPack包含 Linux 内核、Ubuntu rootfs、CUDA、cuDNN、TensorRT 等烧到 SD 卡里。最正规的方式是使用 NVIDIA 官方提供的 SDK Manager但这个工具只有 Linux 版本官方支持 Ubuntu 18.04/20.04/22.04 等主流版本。Windows 和 macOS 用户需要准备一台 Ubuntu 主机或者装一台 Ubuntu 虚拟机但虚拟机直通 SD 卡读卡器会比较麻烦体验不如下一台实体机。下载 JetPack 之前确认主机硬盘剩余空间至少 20GB网络尽量稳定。整个下载包通常有 10GB 到 20GB具体大小取决于你选择的 JetPack 版本和组件。新手建议选择 JetPack 5.1.2这个版本对 Xavier NX 支持非常成熟网上资料多踩坑概率低。别一上来就追最新版Xavier NX 已经不算新模块了最新的 JetPack 6.x 虽然也支持但很多第三方库的预编译包还停留在 JetPack 5 时代没必要给自己增加适配成本。下载和安装 SDK Manager 需要注册 NVIDIA 开发者账号。下载完成后在 Ubuntu 终端里执行安装包里的安装脚本比如sudo apt install ./sdkmanager_2.x.x_amd64.deb装完后通过终端启动sdkmanager2.3 烧录用哪个工具SDK Manager、Etcher 还是 dd烧录用什么工具取决于你有没有现成镜像。有三种常见选择。SDK Manager 最正规适合第一次做系统的人。它可以联网下载 JetPack 组件然后直接写入 SD 卡整个过程有图形界面引导出错概率低。balenaEtcher 适合手头已经有现成镜像文件的情况。跨平台Windows、macOS、Linux 都能用操作简单选镜像、选 SD 卡、一键写入还能自动校验写入结果。缺点是对你要写的镜像没有做任何适配镜像本身必须是为 Xavier NX 生成的。dd 命令适合有一定 Linux 基础的用户尤其是在脚本化部署场景。它不校验、不提示写错盘符会把整块磁盘毁掉所以新手不推荐直接用 dd。无论用哪种工具烧录之前都要确认一件事目标设备选的是 SD 卡不是主机硬盘。这个错误我见过太多次尤其是机器上挂着多块硬盘的时候一不留神就把整块 U 盘或者移动硬盘覆盖了。3. 制作可启动 SD 卡的完整流程3.1 用 SDK Manager 制作 SD 卡镜像推荐用 SDK Manager 给 SD 卡烧录系统核心流程分四步。第一步启动 SDK Manager 并登录 NVIDIA 账号。在主页选择目标硬件为 Jetson Xavier NX选择要安装的 JetPack 版本。如果只想做 SD 卡镜像、不想同时给主机安装组件可以在这里把 Host Machine 相关的勾选项去掉只保留 Target Hardware 部分。第二步点击 Continue 进入组件选择页。这里注意看界面底部的目标存储选项。不同版本的 SDK Manager 界面略有差异有的直接显示 Storage 下拉框你可以选 eMMC 或 SD Card有的会单独弹窗让你选择要创建 SD 卡镜像。关键动作只有一个把目标存储明确设置为 SD 卡而不是 eMMC。这一步选错的话后面会变成给模块刷 eMMC需要连接设备并进入恢复模式完全不是我们想要的流程。第三步插入 SD 卡。SDK Manager 会识别到一张可移动设备显示设备名称和容量。确认选中的是 SD 卡后继续。此时它开始下载 JetPack 并写入 SD 卡整个过程可能持续 30 分钟到 1 小时取决于网络速度。期间主机会要求输入 sudo 密码注意保持屏幕常亮别让系统进入睡眠状态。第四步等待提示成功。写入完成后SDK Manager 会弹出完成或成功的提示。到这一步SD 卡已经是一张包含完整 JetPack 系统的可启动卡了可以安全弹出。有个细节值得提一下如果 SDK Manager 卡在某个进度点长时间不动先别急着拔卡。它可能在后台做校验或者在网络重试。可以先看主机的网络连接是否正常再等几分钟。频繁中断反而容易留下坏镜像。3.2 用 Etcher 烧录现成镜像如果你已经从其他途径拿到了 Xavier NX 的 SD 卡镜像文件通常是.img.xz或者.img格式烧录更简单。在 Windows 或 Ubuntu 上打开 balenaEtcher点击 Flash from file 选择镜像文件然后点击 Select target 选择 SD 卡最后点 Flash。Etcher 会自动完成解压、写入、校验三步写入时间取决于 SD 卡速度和镜像大小一般 10 到 20 分钟。这里有一个 Windows 用户很容易踩的坑烧录完成后Windows 可能会弹出提示“需要格式化磁盘”并显示 SD 卡只有几十 MB。别点格式化这完全是正常现象。Windows 不认识 SD 卡上的 ext4 分区只能看到 FAT 格式的 boot 分区所以会认为这张卡“异常”。直接忽略这个提示把卡拔出来插到 Xavier NX 上就行。如果要用 dd 命令烧录先通过lsblk确认 SD 卡的设备名然后执行xz -dk jetpack_5.1.2_linux_sd.img.xz sudo dd ifjetpack_5.1.2_linux_sd.img of/dev/sdX bs4M statusprogress convfsync务必注意of后面写的是 SD 卡的整个设备节点比如/dev/sdb不是/dev/sdb1。写错了盘符代价是整块磁盘数据清零。新手没有十足把握建议直接用 Etcher。3.3 烧录完成后的关键自检烧录完成以后别急着上板子先花一分钟做自检能排除大量低级的启动问题。把 SD 卡重新插回电脑用lsblkLinux或磁盘管理Windows查看分区结构。正常的 JetPack SD 卡应该有多个分区常见的有 boot 分区FAT和 rootfs 分区ext4rootfs 分区容量往往占据卡的大部分空间。如果只能看到几个小分区或者整张卡变成一个未分配空间的磁盘说明烧录过程可能失败了建议重新烧一遍。还有一种情况SDK Manager 生成的镜像写完之后SD 卡上的 rootfs 分区只有默认的几十 GB没有占满整张卡。这不用急系统首次启动后可以自己扩展分区后面我会讲具体的扩展方法。自检还有一个意义确认 SD 卡没有被电脑识别成“只有几百 MB 的坏卡”。如果你用的是一张扩容卡烧录时可能侥幸写入成功但实际数据根本没写全这种卡上板必出问题尽早淘汰。4. 让 Xavier NX 从 SD 卡启动两种切换方式4.1 方式一载板硬件切换完整从 SD 卡启动这是一条最正统、最完整的 SD 卡启动路径内核、rootfs、bootloader 都从 SD 卡读取。前提是你的载板提供了启动介质选择能力。以官方 Developer Kit 载板为例载板上通常有一组启动配置的开关或者跳线丝印附近一般会标注 “Boot Device”“BOOT_SEL”“SD Boot” 之类的字样。操作顺序是先完全断电把启动配置从 eMMC 档切到 SD 卡档插好 SD 卡然后重新上电。上电后BootROM 会根据这个配置从 SD 卡加载整个系统。第三方载板的情况差别很大。有的载板用拨码开关有的用跳线帽短接特定两个针脚有的则是通过模块连接器上的引脚电平决定启动源。拿到一块不熟悉的载板第一件事是找它的硬件手册或者官方 Wiki看清楚启动配置在哪一页千万别靠猜。我之前用过一块工控载板启动选择的跳线藏在散热片下面翻遍说明书才找到不看文档硬猜真的会怀疑人生。还有一个容易忽略的点从 SD 卡启动时最好把连接电脑的 USB 调试线拔掉。有些载板在插入 USB 线时会自动进入 USB device 模式或者干扰启动检测导致明明配置正确却起不来。这种方式切换后系统里看到的/根分区就是 SD 卡分区板载 eMMC 依然存在但不会参与启动。想切回 eMMC把开关拨回去、拔掉 SD 卡再上电即可。这种“物理隔离”带来的好处是两个系统互不干扰非常适合多环境切换。4.2 方式二eMMC 引导 SD 卡根文件系统最省事的软件切换如果你的载板根本没有启动介质选择开关或者你不想动硬件还有一种软件层面的方法让 eMMC 里的 bootloader 和内核先启动然后把根文件系统挂载到 SD 卡上。严格来说这时候内核还在 eMMC 里但你的 Ubuntu 系统、软件、用户数据全部跑在 SD 卡上对绝大多数应用场景来说体验等同于“SD 卡启动”。具体操作如下。第一步从 eMMC 系统正常开机。打开终端执行lsblk确认 SD 卡对应的设备节点。在 Xavier NX 上内置 eMMC 通常是mmcblk0SD 卡通常是mmcblk1SD 卡的第一个分区就是mmcblk1p1。不同镜像内核下编号可能略有差异以lsblk输出的设备名和容量为准。lsblk典型输出中mmcblk1p1是 SD 卡的 boot 分区mmcblk1p2是 rootfs 分区。因为我们要把整个根文件系统切到 SD 卡需要改的是 root 参数。第二步备份当前的启动配置文件。L4T 系统的启动菜单在/boot/extlinux/extlinux.conf。备份很重要改错了还能恢复sudo cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.bak第三步编辑启动参数sudo nano /boot/extlinux/extlinux.conf找到APPEND那一行会看到类似APPEND ${cbootargs} root/dev/mmcblk0p1 rw rootwait把root修改为 SD 卡 rootfs 分区APPEND ${cbootargs} root/dev/mmcblk1p1 rw rootwait保存退出然后重启sudo reboot重启后执行df -h /如果/对应的设备显示为/dev/mmcblk1p1说明根文件系统已经切到 SD 卡了。这个方法有一个硬性前提eMMC 里的内核版本和 SD 卡里的 rootfs 必须匹配。因为内核还是从 eMMC 的/boot目录加载如果 SD 卡上的 rootfs 是另一个 JetPack 版本启动过程中很可能因为驱动不匹配而失败轻则模块加载报错重则直接 kernel panic。想规避这个问题最简单的办法是用同一份 JetPack 镜像分别做 eMMC 系统和 SD 卡系统保证内核与 rootfs 版本一致。4.3 切回 eMMC 启动与常见恢复技巧切回 eMMC 启动分情况处理。如果你用的是硬件切换方式把启动开关拨回 eMMC 档拔掉 SD 卡重新上电系统就会从 eMMC 启动。要注意的是如果 SD 卡还插着而启动配置是 eMMC系统不会管 SD 卡直接走 eMMC。如果你用的是软件切换方式把/boot/extlinux/extlinux.conf里的root改回/dev/mmcblk0p1重启即可。因为extlinux.conf.bak还在可以直接覆盖回去sudo cp /boot/extlinux/extlinux.conf.bak /boot/extlinux/extlinux.conf sudo reboot如果改错了配置导致 eMMC 系统无法启动也不要慌。把 SD 卡插上切换到 SD 卡系统开机挂载 eMMC 分区然后手动修复 eMMC 里的extlinux.confsudo mount /dev/mmcblk0p1 /mnt sudo nano /mnt/extlinux/extlinux.conf修改完拔掉 SD 卡切回 eMMC 启动就能恢复。这个玩法再次说明常备一张 SD 卡系统真的能救急。5. 首次开机验证与性能摸底5.1 首次开机引导与 Ubuntu 初体验SD 卡系统第一次上电可能会有两种表现。如果 SD 卡里是 SDK Manager 生成的完整镜像通常直接进入 Ubuntu 初始化向导选择语言、键盘布局、创建用户名和密码、设置时区。有些 JetPack 版本会询问是否连接 NVIDIA 账号可以跳过不影响使用。如果开机后没有画面先别慌按顺序检查三件事第一显示器是不是 DP 接口直连DP 转 HDMI 线在 Xavier NX 上兼容性不佳的情况确实存在第二电源是不是足额的12V/5A 或 19V 官方适配器都没问题但那种杂牌 12V/2A 电源带不动 Xavier NX第三SD 卡是不是插到位了有时候卡没完全推入触点没接触上。顺利进入桌面后建议先做两件事连接网络然后打开终端执行sudo apt update sudo apt upgrade这一步能保证系统处于最新状态也能验证网络和软件源是否正常。5.2 用命令确认系统真的跑在 SD 卡上很多人以为看到桌面就说明 SD 卡启动成功了其实不一定。如果 eMMC 系统没坏而你插着 SD 卡开机有些配置会默认加载 eMMC 系统桌面看起来一切正常。所以必须用命令确认根分区到底挂载在哪。在终端里执行df -h /输出里Filesystem一列如果是/dev/mmcblk1p1说明根文件系统在 SD 卡上。再用lsblk看完整存储布局lsblk正常情况下mmcblk0是 16GB 的 eMMCmmcblk1是你插入的 SD 卡容量对应 SD 卡实际大小。还可以查看内核启动参数cat /proc/cmdline如果在启动参数里看到root/dev/mmcblk1p1说明内核也是按 SD 卡 root 来启动的。这三个命令交叉验证基本可以确定系统运行位置。5.3 顺手测一下 SD 卡速度别让性能拖后腿SD 卡和 eMMC 相比顺序读写差距可能不大但随机读写性能差距明显这会直接影响系统响应速度。建议首次启动后做一个简单测速心里有底。最简单的办法是用dd测顺序读写。先测写sync sudo sh -c echo 3 /proc/sys/vm/drop_caches dd if/dev/zero of/tmp/test.bin bs1M count1024 convfdatasync再测读sync sudo sh -c echo 3 /proc/sys/vm/drop_caches dd if/tmp/test.bin of/dev/null bs1M count1024测完删掉临时文件rm /tmp/test.bin常见的 A2 卡在 Xavier NX 上顺序写 60~90MB/s顺序读 80~110MB/s这个水平日常用没问题。如果写入只有二三十兆大概率是卡本身太差或者卡已经处于高温降速状态。想要更精确的随机性能数据可以装iozone或者fio但对大多数使用场景来说dd 的粗略结果已经足够发现问题了。6. 常见问题与排查实录6.1 一张表快速定位启动失败原因把这一年多来遇到的和身边朋友踩过的问题整理成一张速查表按现象查原因效率最高。现象可能原因解决办法插着 SD 卡开机仍进入 eMMC 系统启动配置没切换USB 调试线干扰载板默认 eMMC 优先检查启动开关/跳线拔掉 USB 线重启开机黑屏风扇转但无画面DP 转 HDMI 线兼容性差电源功率不足显示器未唤醒换 DP 直连线换足额适配器重新上电开机后反复重启供电波动SD 卡质量差系统镜像损坏换官方电源换 A2 正品卡重新烧录启动到一半 kernel panicroot 设备写错内核与 rootfs 版本不匹配核对extlinux.conf的root统一 JetPack 版本系统能进但 lsblk 看到根目录还在 mmcblk0实际启动的还是 eMMC 系统检查启动配置或重新修改extlinux.conf进系统后卡顿、软件频繁崩溃SD 卡随机读写太差散热不足卡过热降速换 A2 卡加装散热风扇128GB 卡根分区只有 28GB镜像默认分区没有扩展符合预期进入系统后扩展分区Windows 提示 SD 卡需要格式化Windows 不识别 ext4 分区正常现象忽略提示不要格式化烧录时 SDK Manager 找不到 SD 卡读卡器接触不良权限问题换读卡器用sudo -E sdkmanager启动工具6.2 几个容易忽略的细节经验最后分享几个实操中很容易忽略的细节都是踩过坑才记住的。第一SD 卡扩展分区别跳过。镜像默认 rootfs 分区大小是固定的不扩展的话128GB 卡浪费将近 100GB。首次进入 SD 卡系统后先看df -h /如果容量小于 SD 卡标称容量执行sudo growpart /dev/mmcblk1 2 sudo resize2fs /dev/mmcblk1p2注意分区号要以实际为准growpart后面的2代表第二个分区也就是 rootfs 分区。如果你的 SD 卡在系统里显示为mmcblk1p1就是 rootfs那对应要调整命令。扩容前最好先备份重要数据虽然操作一般安全但小心驶得万年船。第二散热比你想的更关键。Xavier NX 满载时发热量不小如果机箱内风道不好SD 卡区域温度很容易超过 70°C。SD 卡温度过高会主动降速甚至读写失败表现出来的症状就是系统莫名卡顿、服务假死。给板子加一个主动散热风扇让空气流过 SD 卡槽区域能解决很多“看似系统问题”的故障。第三eMMC 里的系统不要删。哪怕你已经完全切到 SD 卡启动也建议保留 eMMC 里的原始系统。它不仅是你的救援系统而且在你需要重新烧录、恢复模块出厂状态时eMMC 里的 L4T 环境能帮你省去很多重新配置的麻烦。很多官方刷机工具也是围绕 eMMC 工作的保留它你就多了一条退路。第四SD 卡不要带电插拔。虽然 SD 卡物理上支持热插拔但在系统运行中直接拔卡轻则文件系统损坏重则卡上的分区表都救不回来。需要换卡时先sudo poweroff完全断电之后再把卡取出来。第五改 boot 配置前永远先备份。这一点在extlinux.conf上尤甚。L4T 系统相对精简启动配置文件一旦写错eMMC 系统可能直接挂掉修复成本远比备份成本高。一条cp命令几十秒的事能帮你省下可能的一整天重装时间。从我个人的使用习惯来说Xavier NX 到手后第一件事就是按这篇文的流程做一张 SD 卡系统而不是急着在那 16GB 的 eMMC 里装环境。工具箱里常备两张卡一张是日常开发的主力系统卡容量大、速度快另一张是只装了纯净 JetPack 的急救卡专门用来救砖和排查问题。遇到过太多次“板子突然启动不了”的情况最后都是靠这张急救卡把 eMMC 里的数据备份出来再从容地修复配置。SD 卡启动配置看着只是系统部署的一个小环节但真正用起来之后你会发现它是 Xavier NX 整个开发流程里最值得提前花时间搞定的事情之一。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价