1. 项目概述为什么Jetson Nano 2GB的系统安装是第一个关键门槛如果你刚拿到一块NVIDIA Jetson Nano 2GB开发者套件看着这块小巧但功能强大的板子第一件事肯定是让它“活”起来。对于很多刚接触嵌入式AI开发尤其是从树莓派或其他单片机平台转过来的朋友来说给Jetson Nano安装系统这一步可能会遇到一些意想不到的“坑”。这不仅仅是把系统镜像写到SD卡那么简单它涉及到NVIDIA为边缘计算设备定制的软件栈、驱动兼容性以及后续开发环境的基石。一个干净、正确的系统安装能让你在后续部署YOLO、TensorRT模型或者运行ROS时省去无数排查环境问题的麻烦。这篇文章我就结合自己多次给Jetson Nano 2GB刷机的经验把从准备到完成的完整流程以及那些官方文档里没细说、但实际操作中一定会遇到的细节和避坑指南给你讲透。2. 核心需求解析你需要准备什么在动手之前理清需求并准备好正确的“弹药”至关重要。Jetson Nano 2GB的系统安装流程与在PC上安装Ubuntu或给树莓派烧录系统有相似之处但也有其特殊性。2.1 硬件清单不止一块板卡首先确保你手头有这些硬件NVIDIA Jetson Nano 2GB 开发板主角。MicroSD 卡这是Jetson Nano的系统盘。容量至少32GB强烈推荐64GB或以上。读写速度至关重要请选择Class 10或UHS-I及以上速度等级的卡。低速卡会导致系统运行极其缓慢编译安装软件时更是煎熬。我实测过一张好的高速卡如A2级别的和普通卡在首次启动和安装更新时的体验天差地别。MicroSD 卡读卡器用于连接你的宿主机Windows/Mac/Linux电脑。5V 2.5A 电源适配器必须使用官方推荐规格的电源。供电不足是导致Jetson Nano运行不稳定、莫名重启或无法启动的常见元凶。不要试图用手机充电器或树莓派电源凑合。显示器与HDMI线用于首次启动时的图形化设置。Jetson Nano 2GB自带一个Micro HDMI接口你需要一根Micro HDMI转标准HDMI的线缆。USB键盘和鼠标用于初始设置。网络连接网线强烈推荐。虽然Jetson Nano 2GB支持Wi-Fi需搭配兼容的USB无线网卡如官方推荐的特定型号但在初始安装和后续大量下载更新时有线网络的稳定性和速度是无可替代的。准备一根网线直接连接到你的路由器上。注意Jetson Nano 2GB没有内置eMMC存储完全依赖MicroSD卡。因此SD卡的质量和速度直接决定了整个系统的性能和寿命。投资一张好卡是值得的。2.2 软件与镜像选择下载正确的起点软件准备主要在宿主机你的电脑上进行系统镜像前往NVIDIA官方开发者网站developer.nvidia.com的Jetson Nano下载页面。找到Jetson Nano 2GB的版本下载最新的JetPack SDK。对于Jetson Nano 2GB通常你会下载一个名为jetson-nano-2gb-sd-card-image.zip或类似名称的压缩包这就是预装了Ubuntu 18.04/20.04 LTS和所有必要驱动、CUDA、cuDNN、TensorRT等组件的完整系统镜像。务必确认你下载的是对应“2GB”版本的镜像4GB版本的镜像不兼容。烧录工具Windows/Mac使用BalenaEtcher。它开源、免费、界面简单几乎不会出错是我最推荐的工具。Linux可以使用dd命令但更推荐使用GNOME Disks工具或Etcher的AppImage版本图形化操作更安全。SD卡格式化工具可选但建议在烧录新镜像前最好彻底清空SD卡。可以使用SD卡协会官方的SD Memory Card Formatter工具它能进行底层格式化解决一些潜在问题。3. 系统烧录实操详解从镜像到可启动SD卡这是最核心的一步操作不复杂但细节决定成败。3.1 镜像下载与验证下载完庞大的系统镜像压缩包通常超过5GB后第一件事不是急着解压而是验证文件的完整性。下载过程中任何网络波动都可能导致文件损坏用一个损坏的镜像烧录结果就是无法启动。在Linux/Mac终端或Windows的PowerShell中可以使用sha256sum或Get-FileHash命令计算下载文件的哈希值与官网提供的校验和进行比对。这一步花一分钟可能省去你几小时的无谓排查。3.2 使用BalenaEtcher进行烧录这里以最通用的BalenaEtcher为例展示安全烧录流程插入SD卡将MicroSD卡通过读卡器插入电脑。打开Etcher启动BalenaEtcher它的界面非常直观只有三个步骤“Select image”、“Select drive”、“Flash!”。选择镜像点击“Select image”找到你下载的.zip压缩包。Etcher可以直接读取.zip文件无需手动解压这非常方便。选择驱动器点击“Select drive”这时请万分小心。列表中会显示你电脑上所有的可移动存储设备。务必准确选中你的SD卡对应的盘符。你可以通过容量大小来辅助判断。选错盘符可能会格式化你的电脑硬盘导致数据丢失。开始烧录确认无误后点击“Flash!”。Etcher会自动完成解压、验证和写入的过程。这个过程视SD卡速度和电脑性能可能需要10-30分钟。验证与弹出烧录完成后Etcher会进行自动验证Verify确保写入的数据与镜像源一致。全部完成后不要急着在电脑上打开SD卡盘符。直接安全弹出SD卡即可。因为此时SD卡内的分区格式ext4在Windows下不可见强行打开或格式化会破坏启动文件。实操心得在点击“Flash”前我习惯性会拔掉电脑上其他不必要的U盘或移动硬盘只留下目标SD卡最大限度避免选错驱动器的风险。这是从无数血泪教训中总结出的“肌肉记忆”。3.3 烧录后的SD卡状态解读烧录成功后如果你在Linux系统下查看SD卡会发现它被分成了多个分区包括一个FAT32格式的boot分区和一个ext4格式的rootfs分区。但在Windows下你可能只能看到一个很小的、可能无法识别的分区这是正常的。绝对不要在Windows下对这个SD卡进行任何格式化或文件操作。4. 首次启动与初始配置让Jetson Nano“站起来”将烧录好的SD卡插入Jetson Nano 2GB板卡背面的卡槽连接好显示器、键盘、鼠标、网线最后接通电源。4.1 上电与开机引导接通电源后你会看到板卡上的绿色电源指示灯亮起。系统首次启动会进行一系列初始化操作包括扩展文件系统以填满整个SD卡空间、生成SSH主机密钥等。这个过程会在屏幕上显示大量日志首次启动可能需要5-10分钟请耐心等待不要中途断电。当屏幕最终出现Ubuntu的图形化登录界面或直接进入桌面环境取决于JetPack版本时恭喜你最基础的一步已经成功了。4.2 系统初始化设置向导首次进入系统通常会有一个类似OOBE开箱体验的设置向导引导你完成接受许可协议阅读并同意NVIDIA的软件许可条款。选择语言和键盘布局根据你的偏好选择通常选中文简体和汉语。创建用户账户设置用户名、计算机名和密码。请务必记住你设置的密码后续的sudo操作都需要它。计算机名建议取得有辨识度方便在网络中查找。选择时区通常地图上点击上海或选择Asia/Shanghai。磁盘设置通常使用默认的全盘选项即可。完成设置向导结束后系统可能会要求重启。4.3 关键的后安装步骤进入桌面后先别急着跑Demo。有几个关键操作必须做它们为后续开发铺平道路。4.3.1 连接网络与更新系统确保网线已连接或配置好Wi-Fi。打开终端CtrlAltT首先更新软件包列表并升级所有已安装的包。Jetson Nano的镜像发布后官方源会有很多安全更新和bug修复。sudo apt update sudo apt full-upgrade -y这个升级过程会下载几百MB的更新耗时较长取决于你的网速。务必完成此步骤它可以解决很多潜在的软件冲突。4.3.2 验证核心组件安装升级完成后验证几个核心组件是否正常工作查看JetPack信息sudo apt install jetson-stats # 安装jtop工具 jtop运行jtop后可能需要重启一次你可以在一个漂亮的界面中看到JetPack版本、CUDA、cuDNN、TensorRT的版本号以及CPU、GPU、内存的实时状态。这是管理Jetson的瑞士军刀。验证CUDAnvcc --version查看CUDA编译器版本。验证TensorRTdpkg -l | grep tensorrt查看TensorRT的安装版本。4.3.3 开启最大性能模式至关重要Jetson Nano默认运行在低功耗的5W模式2GB版本只有一种模式但需确认时钟频率。为了获得完整的计算性能特别是在运行AI模型时我们需要将其设置为最大性能模式。对于2GB版本通常使用以下命令sudo nvpmodel -m 0运行后可以使用sudo nvpmodel -q查询当前模式。模式0代表最大性能10W模式对于2GB版散热设计支持此模式。同时还需要设置风扇如果套件包含风扇为自动调速确保散热sudo jetson_clocks这条命令会动态最大化CPU和GPU的时钟频率。你可以将其添加到开机自启动脚本中但要注意散热情况。5. 深度配置与开发环境准备系统跑起来只是第一步接下来要把它打造成一个顺手的AI开发工作站。5.1 解决潜在的驱动与内核问题有时在更新系统后可能会遇到NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver的错误。这通常意味着内核更新后NVIDIA内核模块没有自动重新编译安装。解决方法如下# 重新安装NVIDIA内核模块 sudo apt install --reinstall nvidia-l4t-kernel sudo reboot重启后问题通常得以解决。这是一个经典的“坑”记住这个命令能省不少时间。5.2 配置软件源与安装基础开发工具为了获得更快的下载速度可以将Ubuntu的软件源替换为国内镜像源如清华源、阿里云源。编辑/etc/apt/sources.list文件将ports.ubuntu.com替换为镜像地址。然后安装开发者必备的工具链sudo apt update sudo apt install -y build-essential cmake git curl wget vim python3-pip python3-devpython3-pip建议立即升级到最新版并配置国内PyPI源以加速Python包安装pip3 install --upgrade pip pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple5.3 安装与配置容器运行时Docker在边缘设备上Docker是部署和管理应用的神器。Jetson Nano是ARM64架构需要安装ARM64版本的Docker。# 安装依赖 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # 添加Docker官方GPG密钥和仓库注意是arm64 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository deb [archarm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable # 安装Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io # 将当前用户加入docker组避免每次使用sudo sudo usermod -aG docker $USER newgrp docker # 刷新组权限或注销重登 # 验证安装 docker run --rm hello-world如果成功运行hello-world容器说明Docker安装成功。同样可以配置Docker镜像加速器。5.4 部署示例AI应用验证环境为了验证整个系统从底层驱动到上层框架都工作正常可以运行一个经典的图像分类Demo。这里以使用TensorRT加速的ImageNet分类为例下载示例代码git clone https://github.com/NVIDIA-AI-IOT/torch2trt cd torch2trt注意这是一个例子实际NVIDIA官方提供jetson-inference项目包含更丰富的示例安装PyTorch前往NVIDIA官方论坛或PyTorch官网找到为Jetson Nano预编译的PyTorch wheel文件进行安装。这是最稳妥的方式避免漫长且易错的源码编译。运行推理按照示例项目的README下载一个预训练模型如ResNet-18并对一张图片进行推理。观察终端输出和GPU利用率通过jtop查看如果能看到分类结果且GPU有负载说明从CUDA、cuDNN到TensorRT的整个AI栈工作正常。6. 高级主题无头模式安装与远程访问很多时候我们并不需要为Jetson Nano连接显示器而是采用“无头模式”安装和访问。6.1 无头模式烧录与首次启动无头模式安装的核心是在烧录镜像后、首次启动前预先配置好网络和SSH。这样板卡上电后就能自动联网并开启SSH服务你可以直接从另一台电脑远程登录。烧录镜像与前述步骤完全相同。配置网络Wi-Fi在宿主机上挂载SD卡的boot分区。创建一个名为wpa_supplicant.conf的文件内容如下ctrl_interfaceDIR/var/run/wpa_supplicant GROUPnetdev update_config1 countryCN network{ ssid你的Wi-Fi名称 psk你的Wi-Fi密码 key_mgmtWPA-PSK }将此文件复制到SD卡boot分区的根目录。系统首次启动时会自动将其移动到正确位置并连接Wi-Fi。启用SSH同样在boot分区根目录创建一个空的、无后缀的文件命名为ssh。这告诉系统在首次启动时启用SSH服务。安全弹出SD卡插入Jetson Nano上电。查找IP地址等待几分钟后登录你的路由器管理界面查看DHCP客户端列表找到主机名为你设置的计算机名或jetson-nano的设备记下其IP地址。远程连接在宿主机上使用SSH客户端连接ssh 你的用户名Jetson_Nano的IP地址输入密码即可进入命令行界面。后续所有操作都可以在终端完成。6.2 配置静态IP与远程桌面对于固定位置的开发配置静态IP更方便。编辑Jetson Nano上的网络配置文件/etc/netplan/01-netcfg.yaml文件名可能略有不同配置静态IP、网关和DNS。然后应用配置sudo netplan apply。如果需要图形化界面可以安装VNC服务器或使用XRDPWindows远程桌面协议。安装XRDP相对简单sudo apt install xrdp sudo systemctl enable xrdp sudo systemctl start xrdp然后在Windows电脑上使用“远程桌面连接”输入Jetson Nano的IP地址用之前设置的用户名和密码登录即可看到完整的Ubuntu桌面。7. 常见问题与故障排除实录即使按照步骤操作也难免会遇到问题。这里记录了几个最常见的问题和解决方法。7.1 系统无法启动卡在Logo或黑屏可能原因1电源问题。这是最常见的原因。请确保使用5V 2.5A或更高电流如4A的电源适配器并且电源线质量良好。尝试更换电源和电源线。可能原因2SD卡问题。SD卡质量差、速度慢或烧录过程出错。重新使用SD Card Formatter彻底格式化然后用Etcher重新烧录镜像并确保验证通过。可能原因3镜像文件损坏。重新下载镜像并务必校验SHA256值。可能原因4显示器兼容性。尝试更换HDMI线或显示器。有些显示器可能需要特定的分辨率或刷新率。7.2 首次启动极慢或卡在“文件系统扩展”阶段这通常是SD卡速度太慢导致的。除了等待有时可能超过30分钟没有太好办法。下次请购买UHS-I A1/V30或更高规格的高速卡。如果长时间超过1小时无响应可能是卡住了需要强制重启并重新烧录。7.3 网络连接不稳定或无法连接有线网络检查网线、路由器端口。尝试sudo dhclient eth0手动获取IP。无线网络确认USB网卡型号在官方兼容列表内。检查wpa_supplicant.conf文件格式是否正确特别是引号和换行。使用sudo iwconfig查看无线接口状态sudo nmcli dev wifi扫描网络。7.4 运行AI示例时内存不足OOMJetson Nano 2GB内存有限运行稍大的模型或同时开启多个服务易触发OOM Killer。解决方法增加Swap空间这是最有效的方法。创建2-4GB的swap文件可以极大缓解内存压力。sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 为了永久生效将以下行添加到 /etc/fstab # /swapfile swap swap defaults 0 0优化模型使用TensorRT对模型进行量化INT8和剪枝减少内存占用和提升速度。关闭图形界面如果纯做服务器用可以关闭桌面环境节省内存。sudo systemctl set-default multi-user.target sudo reboot需要图形界面时再切换回来sudo systemctl set-default graphical.target。7.5 风扇不转或持续高速运转如果套件包含风扇可以通过jetson_clocks脚本控制。持续高速运转可能是散热片安装不当或环境温度过高。检查散热片与SoC的接触是否良好硅脂是否涂匀。可以安装jtop来监控温度并手动调整风扇速度。安装系统是整个Jetson Nano开发之旅的起点也是一个筛选器。顺利通过这一关意味着你拥有了一个稳定、可靠的硬件基础。上面提到的每一个步骤和坑点都是我和很多开发者真实经历过的。把基础打牢后续在部署YOLOv5、YOLOv8玩转TensorRT甚至搭建ROS机器人时你才会更加得心应手。记住嵌入式开发耐心和细致永远是第一位的。