
1. 项目概述为什么需要一份“从零开始”的配置指南如果你手头有一块Jetson Nano无论是刚从二手市场淘来的还是因为之前的系统被自己“玩坏了”需要重装面对一块近乎“裸机”的开发板第一步往往是最让人头疼的。网上的教程很多但要么过于零散要么默认你已经具备某些前置知识跳过了关键步骤导致新手在“烧录系统镜像”或“配置基础环境”时就卡住最终让这块性能不错的小板子吃灰。我经历过不止一次为Jetson Nano重装系统的过程从最初的2GB版本到后来的4GB版本甚至帮朋友处理过各种稀奇古怪的软件冲突导致的系统崩溃。每一次“从零开始”都让我积累了一些在官方文档里不会细说但在实际操作中至关重要的细节。这份指南的目的就是把这些细节串联起来形成一份你完全可以“照着抄作业”的完整流程。它不仅仅是一份操作手册更是一份避坑备忘录涵盖了从准备SD卡到让系统稳定运行、并准备好深度学习开发环境的所有关键步骤。无论你是嵌入式AI的初学者还是需要快速重建一个干净实验环境的研究者这份指南都能帮你节省大量搜索和试错的时间。2. 核心准备工作工具选择与镜像获取在按下任何按键之前充分的准备是成功的一半。对于Jetson Nano的重装准备工作主要围绕“镜像”和“烧录工具”展开这里面的门道不少。2.1 系统镜像的选择并非越新越好NVIDIA为Jetson Nano提供了多个版本的JetPack SDK这是包含了操作系统Ubuntu、CUDA、cuDNN、TensorRT等核心组件的软件栈。你的第一个重要选择就是确定使用哪个版本的JetPack。JetPack 4.6 vs JetPack 5.x/6.x这是一个重要的分水岭。JetPack 4.6及其子版本如4.6.1是基于Ubuntu 18.04和较旧内核的长期支持版本其最大的优势是社区支持极其广泛。你在网上找到的绝大多数关于Jetson Nano的教程、开源项目尤其是前几年的、预编译轮子wheel基本都是针对JetPack 4.6环境验证的。选择它意味着在后续安装各种Python包如PyTorch、TensorFlow的Jetson版本时遇到兼容性问题的概率会大大降低。JetPack 5.x/6.x这些新版本带来了更新的内核、Ubuntu 20.04/22.04系统以及更新的CUDA等驱动理论上性能和安全更新更好。但是对Jetson Nano这款老硬件来说新系统可能占用更多资源且软件生态的迁移尚未完全成熟。很多AI框架需要自己从源码编译过程繁琐且易出错。我的实操心得对于绝大多数以应用和快速上手为目的的用户我强烈推荐从JetPack 4.6.1开始。这是Jetson Nano生态的“黄金标准”能确保你接下来的学习之路不会在环境配置上浪费过多时间。等你完全熟悉了这块板子再尝试升级也不迟。确定版本后你需要去NVIDIA官方网站的Jetson下载中心找到对应的“Jetson Nano Developer Kit SD Card Image”进行下载。文件是一个.img格式的压缩包大小约6GB。2.2 存储介质与烧录工具稳定性的基石SD卡的选择这是影响系统流畅度的最关键硬件。Jetson Nano的操作系统完全运行在SD卡上其读写速度直接决定了开机、打开软件、安装包的速度。容量至少32GB推荐64GB或以上。JetPack系统本身会占用大量空间后续安装各种库和数据集32GB会很快捉襟见肘。速度请务必选择标注有A2和V30标识的UHS-I速度等级的Micro SD卡。A2标准针对的是应用程序性能能极大改善在SD卡上直接运行程序的速度体验。V30代表持续写入速度不低于30MB/s。不要贪便宜买低速卡那会让你的Jetson Nano体验变得异常卡顿。烧录工具在Windows或macOS上我首推BalenaEtcher。它开源、免费、界面简洁且几乎不会出错。相比其他工具它能自动校验烧录后的数据确保镜像完整写入。在Linux系统上可以直接使用dd命令但需要格外小心设备名不要写错。2.3 其他物理准备电源使用官方推荐的5V 4A20WDC电源适配器。USB供电5V 2.5A模式仅适用于最低负载的演示在进行任何实质性计算或连接外设时功率不足会导致系统不稳定、随机重启这是新手常踩的大坑。外设准备显示器通过HDMI或DP接口、USB键盘鼠标。第一次启动需要进行图形化界面设置。网络确保Jetson Nano可以通过网线最稳定或USB WiFi适配器需确认兼容性连接到互联网。后续几乎所有步骤都需要网络。3. 系统烧录与首次启动配置这是将“镜像”变为“系统”的关键一步步骤虽不复杂但细节决定成败。3.1 使用BalenaEtcher烧录镜像将新的SD卡通过读卡器插入你的电脑。打开BalenaEtcher点击“Flash from file”选择你下载好的.img镜像文件。点击“Select target”确保选中了你的SD卡设备仔细核对容量和盘符切勿选成本地硬盘。点击“Flash”开始烧录。这个过程会持续10-20分钟取决于你的SD卡和电脑速度。Etcher在烧录完成后会自动进行校验确保数据无误。注意事项烧录过程会完全格式化SD卡原有数据将全部丢失。烧录完成后Windows系统可能会弹出提示“需要格式化磁盘才能使用”务必点击“取消”这是因为Windows无法识别SD卡内的Linux分区这是正常现象。3.2 首次启动与基础设置将烧录好的SD卡插入Jetson Nano的卡槽连接显示器、键盘鼠标、网线最后接通电源。你会看到NVIDIA的Logo然后进入系统初始化设置界面。语言和时区选择中文或英文以及你所在的时区。用户名、计算机名和密码创建一个账户。建议密码不要设置得过于简单。选择APP分区大小这是JetPack安装器的一个关键步骤。它会询问你为系统分配多少SD卡空间。这里强烈建议选择“最大”即将SD卡的所有剩余空间都分配给系统。如果你选择“最小”后续可能很快会遇到磁盘空间不足的问题而扩容操作对新手并不友好。系统更新初始化完成后系统会引导你进行更新。由于初始镜像可能不是最新建议连接网络后在设置中完成系统更新和所有可用的升级包。这可能需要较长时间请耐心等待。首次启动并进入Ubuntu桌面后我建议先做两件事一是打开“软件和更新”将“下载自”服务器更改为国内的镜像源如阿里云、清华源这能极大提升后续安装软件的速度二是打开终端执行sudo apt update更新软件列表。4. 核心系统配置与优化一个刚装好的纯净系统就像毛坯房我们需要进行必要的“装修”和“加固”让它更适合开发工作。4.1 交换空间Swap扩容Jetson Nano的物理内存只有4GB或2GB在运行稍大一点的模型或编译软件时很容易内存不足。系统默认的交换空间2GB通常不够用。将其扩容到4-6GB能有效防止因内存耗尽导致的卡死。# 1. 关闭现有的交换空间 sudo swapoff /swapfile # 2. 删除旧的交换文件备份原文件 sudo cp /swapfile /swapfile.bak sudo rm /swapfile # 3. 创建新的4GB交换文件count4096 表示 4096个块 * 1M 4GB sudo dd if/dev/zero of/swapfile bs1M count4096 # 4. 设置正确的权限 sudo chmod 600 /swapfile # 5. 将其格式化为交换分区 sudo mkswap /swapfile # 6. 启用新的交换文件 sudo swapon /swapfile # 7. 让配置永久生效编辑 /etc/fstab 文件 sudo nano /etc/fstab # 在文件末尾添加或修改如下一行 /swapfile swap swap defaults 0 0完成后使用free -h命令检查应该能看到Swap一项的大小已变为4GB左右。4.2 电源模式设置Jetson Nano有两种电源模式5W低功耗和10W高性能。默认可能是5W模式这会限制CPU和GPU的性能。# 查看当前模式 sudo nvpmodel -q # 设置为10W高性能模式模式ID为0 sudo nvpmodel -m 0 # 同时为了在10W模式下获得最佳性能需要开启所有CPU核心的最大频率 sudo jetson_clocks你可以将sudo jetson_clocks命令添加到开机启动脚本中但注意这会增加功耗和发热。对于持续高负载任务建议配备散热风扇。4.3 安装基础开发工具接下来安装一些必不可少的软件包和工具链。# 更新源列表 sudo apt update sudo apt upgrade -y # 安装常用工具和编译环境 sudo apt install -y curl wget git vim htop net-tools build-essential cmake unzip # 安装Python3开发环境系统已预装Python3但需要pip和dev包 sudo apt install -y python3-pip python3-dev python3-venv # 升级pip到最新版并设置清华源以加速 pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple # 创建pip配置文件永久使用国内源 mkdir -p ~/.pip echo [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn ~/.pip/pip.conf5. 深度学习环境部署CUDA、cuDNN与AI框架Jetson Nano的核心价值在于其GPU加速的AI推理能力。JetPack已经为我们安装了CUDA和cuDNN但我们需要确认并配置环境。5.1 验证CUDA与cuDNN安装# 查看CUDA版本 nvcc --version # 或 cat /usr/local/cuda/version.txt # 查看cuDNN版本 cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2对于JetPack 4.6.1通常对应的是CUDA 10.2和cuDNN 8.x。这些信息在你后续安装PyTorch或TensorFlow的特定版本时至关重要。5.2 安装PyTorch for Jetson这是最关键也最容易出错的一步。绝对不能直接用pip install torch必须安装NVIDIA官方为特定JetPack版本预编译的wheel包。确定版本访问PyTorch for Jetson的官方GitHub页面找到与你JetPack版本对应的PyTorch版本。例如JetPack 4.6.1通常对应PyTorch v1.10.0。下载安装在终端中执行官方提供的wget和pip3 install命令。例如# 示例命令具体URL请以官方发布为准 wget https://nvidia.box.com/shared/static/xxx.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl sudo apt-get install -y libopenblas-base libopenmpi-dev pip3 install Cython pip3 install numpy torch-1.10.0-cp36-cp36m-linux_aarch64.whl验证安装python3 import torch print(torch.__version__) print(CUDA available:, torch.cuda.is_available()) print(CUDA device:, torch.cuda.get_device_name(0))如果输出正确版本号并显示CUDA可用则安装成功。5.3 安装TorchVisionPyTorch和TorchVision版本必须严格匹配。同样需要安装为Jetson预编译的版本。# 示例安装与PyTorch 1.10.0匹配的torchvision 0.11.0 sudo apt install -y libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev git clone --branch v0.11.0 https://github.com/pytorch/vision torchvision cd torchvision export BUILD_VERSION0.11.0 python3 setup.py install --user cd ../5.4 安装其他常用Python库# 安装一些通用的数据科学和工具库 pip3 install matplotlib pandas scipy scikit-learn opencv-python-headless pillow tqdm # 注意opencv-python完整版在ARM架构上编译极其耗时且易出错。 # 系统通常预装了OpenCV可以通过 cv2.__version__ 查看。 # 如果需要特定版本建议使用 sudo apt install python3-opencv 安装预编译版。6. 常见问题排查与性能调优实录即使按照步骤操作你也可能会遇到一些问题。这里记录了几个最常见的情况和解决方案。6.1 系统启动失败或卡在Logo界面可能原因1电源不足。这是最常见的原因。请立即检查是否使用了5V/4A的电源并确保Micro USB供电线质量良好如果使用该模式。强烈建议使用DC电源接口。可能原因2SD卡速度太慢或损坏。使用前文推荐的A2 V30规格的卡。可以尝试重新烧录镜像或更换一张SD卡测试。可能原因3镜像烧录不完整。确保使用BalenaEtcher并完成了校验步骤。6.2pip安装包时速度极慢或超时解决方案已经在前文通过配置~/.pip/pip.conf文件使用了国内镜像源。如果问题依旧可以临时使用-i参数指定源pip3 install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple扩展技巧对于通过apt安装的软件同样可以修改Ubuntu的软件源为国内镜像。编辑/etc/apt/sources.list文件将其中的ports.ubuntu.com替换为mirrors.tuna.tsinghua.edu.cn。6.3 运行Python AI程序时内存/交换空间耗尽系统卡死现象程序运行一段时间后终端无响应系统操作极其卡顿甚至ssh断开。排查在另一个ssh会话中如果还能连接运行htop观察内存和Swap使用率。如果两者都接近100%即是此问题。解决确保已按照4.1节扩容了交换空间。在代码中优化数据加载使用生成器Generator避免一次性将全部数据加载进内存。减小模型批量大小batch size。这是最直接有效的方法虽然会降低吞吐量但能保证程序稳定运行。考虑使用torch.cuda.empty_cache()定期清理GPU缓存。6.4 安装特定Python包时编译失败缺少头文件或库典型错误fatal error: Python.h: No such file or directory或error: command aarch64-linux-gnu-gcc failed。解决方案这通常是因为缺少编译所需的开发包。安装python3-dev和build-essential通常能解决大部分问题。对于更复杂的包错误信息会提示缺少什么例如libjpeg开发包缺失则安装libjpeg-dev。养成根据错误信息安装对应-dev包的习惯。6.5 Jetson Nano发热严重与散热建议在10W模式下持续运行Jetson Nano的发热量不容小觑。过热会触发温控降频导致性能下降。被动散热至少为SoC芯片贴上散热片。主动散热强烈推荐购买一个兼容的散热风扇模块通常通过GPIO引脚供电。可以设置风扇常转或者通过编写脚本根据温度动态控制风扇启停。监控温度使用tegrastats命令可以实时查看CPU、GPU温度以及频率、功耗等信息。# 每1000毫秒刷新一次 tegrastats --interval 1000完成以上所有步骤后你的Jetson Nano就已经拥有了一个稳定、优化且功能齐全的深度学习开发环境。从系统底层到AI框架都为你后续的项目开发、模型部署打好了坚实的基础。这套配置流程是我经过多次实践验证的稳定组合避开了一些新版本兼容性的“雷区”专注于出活儿和稳定。当然每个人的具体需求可能不同你可以在此基础上继续安装Docker、ROS机器人操作系统或其他专业库。记住在嵌入式开发中一个干净、稳定且文档记录清晰的基础系统是高效探索和创造的前提。