1. 项目概述为什么需要一份“从零开始”的配置指南如果你刚拿到一块Jetson Nano开发板或者因为系统混乱、环境崩溃而不得不重装那么恭喜你你正处在一个最需要清晰指引的十字路口。Jetson Nano作为一款强大的边缘AI计算设备其官方镜像虽然开箱即用但距离一个高效、稳定、适合长期开发的“工作站”环境还有相当一段距离。网络上教程虽多但往往零散、过时或者默认你已经具备某些前置知识导致新手在配置过程中频繁踩坑从换源、装驱动到配置环境每一步都可能成为拦路虎。这份指南的目的就是扮演你手边那位有经验的同事。我不会只告诉你“输入这行命令”而是会详细解释“为什么是这行命令”、“如果出错了可能是什么原因”、“还有没有更好的选择”。我们将从一张全新的SD卡开始穿越系统初始化、基础环境搭建、深度学习框架部署、性能优化直至常见问题排查构建一个坚实可靠的开发基础。无论你是学生、研究者还是嵌入式开发者这份详尽的流水账式记录都能让你在Jetson Nano上少走弯路把精力集中在更有创造性的AI应用开发上。2. 核心思路与准备工作磨刀不误砍柴工在动手刷机之前理清整个流程的脉络和准备好必要的“粮草”至关重要。Jetson Nano的配置不是一个线性任务而是一个系统工程涉及硬件、软件、网络多个层面。2.1 硬件与镜像选择奠定稳定的基石工欲善其事必先利其器。对于Jetson Nano这个“器”首先就是存储介质和系统镜像。存储卡的选择与处理Jetson Nano依赖SD卡作为系统盘其读写速度直接决定了系统响应、软件安装和模型加载的快慢。强烈建议使用UHS-I Speed Class 3 (U3)或更高规格的MicroSD卡容量至少32GB推荐64GB或以上。品牌上SanDisk Extreme、Samsung EVO Plus等都是经过社区验证的可靠选择。一个常见的误区是认为容量越大越好但对于Jetson Nano过大的容量如256GB以上在初次烧录和系统初始化时可能会带来不必要的兼容性问题64GB是一个甜点容量。系统镜像版本抉择NVIDIA为Jetson Nano提供多个版本的JetPack SDK。JetPack是一个捆绑了操作系统Ubuntu、CUDA、cuDNN、TensorRT以及各种计算机视觉库的完整SDK。截至当前JetPack 4.6.1仍然是Jetson Nano最稳定、兼容性最广的长期支持版本。虽然已有更新的JetPack 5.x系列基于Ubuntu 20.04但其对Jetson Nano的官方支持状态和部分第三方库的兼容性仍需时间检验。对于“从零开始”和追求稳定性的用户我强烈建议从JetPack 4.6.1开始。你可以在NVIDIA官方网站的Jetson下载中心找到它文件通常是一个名为jetson-nano-sd-card-image.zip的压缩包。烧录工具推荐在Windows或macOS上BalenaEtcher是首选。它开源、免费、界面简洁且能自动验证烧录结果极大降低了烧录失败导致SD卡不可用的风险。避免使用某些老旧或功能复杂的工具它们可能无法正确处理Jetson Nano镜像的特定分区结构。注意在烧录镜像前请务必使用SD卡协会官方的格式化工具SD Memory Card Formatter对SD卡进行一次完全格式化以清除任何可能残留的分区表错误确保烧录过程纯净。2.2 初次启动与基础系统配置将烧录好的SD卡插入Jetson Nano连接显示器、键盘鼠标最后接通电源对于B01版是连接桶形电源适配器。第一次启动会进行系统扩展耗时较长请耐心等待。语言、时区与用户创建进入Ubuntu系统设置界面后建议将系统语言设置为英语English。这并非不爱国而是在后续终端操作、查阅英文错误日志和社区资料时能避免因路径、文件名包含中文字符而引发的各种诡异问题。时区选择Shanghai即可。创建的用户名也尽量使用英文例如nano或jetson。网络连接优先使用网线进行首次系统更新和大量软件安装。无线网络Wi-Fi可以在系统配置好后设置但在执行apt update/upgrade这类需要稳定高速连接的任务时有线网络能避免中途断连导致的安装失败。首次更新与升级系统启动完成后打开终端CtrlAltT执行以下命令sudo apt update sudo apt upgrade -y这个过程会更新软件源列表并升级所有可更新的软件包耗时可能较长取决于网络速度。这是确保系统安全性和稳定性的第一步。3. 核心环境配置详解打造高效开发阵地系统基础打好后接下来是针对Jetson平台和AI开发的特化配置。这一步是提升开发体验的关键。3.1 软件源替换与系统优化默认的Ubuntu软件源服务器在国外国内访问速度慢且不稳定。更换为国内镜像源是必做操作。备份与替换源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup sudo sed -i s/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g /etc/apt/sources.list这里以清华大学开源软件镜像站为例。你也可以替换为阿里云(mirrors.aliyun.com)或中科大(mirrors.ustc.edu.cn)的源。执行后再次运行sudo apt update测试速度。扩大交换空间SwapJetson Nano内存仅4GB在编译大型软件或运行稍复杂的模型时极易爆内存。增加交换空间相当于增加了虚拟内存。# 禁用默认的zram交换压缩内存 sudo systemctl disable nvzramconfig # 创建一个4GB的交换文件 sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效 echo /swapfile swap swap defaults 0 0 | sudo tee -a /etc/fstab重启后使用free -h命令检查应能看到约4GB的交换空间。注意交换文件在SD卡上频繁读写可能影响SD卡寿命但这对于开发调试阶段的稳定性是必要的权衡。3.2 Jetson专属工具与状态监控NVIDIA提供了一些专属工具来管理Jetson设备。安装jetson-stats这是一个社区开发的强大工具包主要包含jtop可以实时监控CPU、GPU、内存使用率、温度、功耗以及JetPack版本信息。sudo -H pip3 install -U jetson-stats安装后重启系统在终端输入sudo jtop即可启动监控界面。按4可以进入GPU监控详细页面这对于调试AI应用时观察GPU利用率至关重要。设置性能模式Jetson Nano有几种功耗模式。对于开发我们通常希望它全力运行。sudo nvpmodel -m 0模式0是MAXN模式所有核心CPU和GPU运行在最高频率。你也可以使用sudo jetson_clocks命令来一次性锁定所有时钟到最高频率但这在持续高负载下可能导致过热建议在需要性能基准测试时使用日常开发用nvpmodel -m 0即可。3.3 Python环境与包管理策略JetPack系统自带Python 3.6和pip3。但系统Python环境/usr/bin/python3不建议直接安装用户库以免破坏系统依赖。使用Python虚拟环境为每个项目创建独立的虚拟环境是最佳实践。我们使用venv模块。# 安装venv通常已安装 sudo apt install python3-venv -y # 在用户主目录下创建一个通用的虚拟环境例如名为‘venv’ cd ~ python3 -m venv venv # 激活虚拟环境 source ~/venv/bin/activate激活后终端提示符前会出现(venv)字样。之后所有pip install操作都只影响这个环境。退出虚拟环境用deactivate命令。配置pip国内源在虚拟环境中同样需要为pip换源以加速下载。# 创建pip配置目录 mkdir -p ~/.pip # 编辑pip配置文件 cat ~/.pip/pip.conf EOF [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host pypi.tuna.tsinghua.edu.cn EOF这样在虚拟环境中安装任何Python包都会从清华源拉取。4. 深度学习框架部署PyTorch与TensorFlow的安装实战这是AI开发的核心环节。在Jetson Nano的ARM架构上安装深度学习框架不能简单地pip install torch需要安装NVIDIA官方提供的、与特定JetPack版本CUDA匹配的预编译轮子wheel。4.1 PyTorch安装推荐路径PyTorch在Jetson社区支持非常好。访问NVIDIA官方论坛或PyTorch for Jetson的GitHub页面找到对应JetPack 4.6.1的预编译包。例如对于PyTorch 1.10.0命令可能如下# 确保在虚拟环境中 source ~/venv/bin/activate # 安装依赖 sudo apt install python3-pip libopenblas-base libopenmpi-dev # 下载并安装预编译的PyTorch wheel wget https://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl # 安装TorchVision版本需与PyTorch匹配 sudo apt install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev pip3 install --no-deps torchvision0.11.0安装完成后在Python中运行import torch; print(torch.__version__); print(torch.cuda.is_available())应能正确输出版本并返回True表明CUDA可用。实操心得安装TorchVision时使用--no-deps选项非常重要。因为它会尝试编译而Jetson Nano的编译资源有限此选项让它复用系统已安装的依赖如Pillow避免漫长的编译过程成功率更高。4.2 TensorFlow安装TensorFlow的安装相对更“标准化”一些NVIDIA提供了专门的tensorflow包。但请注意Jetson平台上的TensorFlow版本通常落后于主流版本。# 仍在虚拟环境中 # 安装依赖 sudo apt install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran # 安装TensorFlow以JetPack 4.6.1常对应的TF 2.5为例 pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v461 tensorflow这个命令会从NVIDIA的特定仓库安装为Jetson优化的TensorFlow版本。安装后同样使用import tensorflow as tf; print(tf.__version__); print(tf.test.is_gpu_available())验证。注意在同一虚拟环境中不建议同时安装PyTorch和TensorFlow的完整版因为它们可能对某些底层库如numpy的版本有冲突。建议为不同的项目创建不同的虚拟环境。4.3 验证CUDA与cuDNN深度学习框架依赖底层的CUDA和cuDNN。JetPack已预装但验证一下是好习惯。# 查看CUDA版本 nvcc --version # 查看cuDNN版本 cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2对于JetPack 4.6.1CUDA版本通常是10.2cuDNN是8.x。确保框架安装时指定的版本与之匹配。5. 必备工具链与开发环境搭建一个顺手的开发环境能极大提升效率。5.1 编辑器与IDEVisual Studio Code微软的VSCode是当前最流行的选择资源消耗相对较低。# 下载.deb安装包请从官网查看最新aarch64版本链接 wget -O code.deb https://update.code.visualstudio.com/latest/linux-deb-arm64/stable # 安装 sudo dpkg -i code.deb sudo apt install -f # 修复可能的依赖问题安装后可以安装Python、Pylance、Jupyter等扩展配置远程SSH开发也非常方便。Jupyter Lab对于交互式数据分析和模型调试Jupyter Lab不可或缺。pip3 install jupyterlab # 生成配置文件 jupyter lab --generate-config # 设置密码 jupyter lab password # 允许远程访问可选在config文件里修改 # c.ServerApp.ip ‘*‘ # c.ServerApp.open_browser False启动后可以通过浏览器访问进行开发。5.2 版本控制与系统工具Gitsudo apt install git git config --global user.name Your Name git config --global user.email your.emailexample.com常用系统工具sudo apt install htop tmux curl wget vim net-toolshtop比top更友好的进程监控器。tmux终端复用器在SSH会话中运行长时间任务时即使断开连接任务也不会终止。net-tools包含ifconfig等老牌网络工具。6. 性能调优与稳定性加固配置好后还需要微调以确保长期稳定运行。6.1 电源管理与散热Jetson Nano的默认10W模式可能无法满足持续高负载。如果你使用了附带跳线帽的“5V4A”模式即最大20W模式务必确保电源适配器能提供至少4A的电流并且加装主动散热风扇。过热会导致CPU/GPU降频性能急剧下降。你可以通过jtop实时观察温度确保核心温度在70°C以下为宜。6.2 内存与存储优化清理APT缓存定期清理下载的软件包可以释放SD卡空间。sudo apt clean sudo apt autoremove -y禁用不必要的服务例如如果你不用蓝牙可以禁用它以节省资源。sudo systemctl disable bluetooth.service6.3 设置静态IP适用于有线连接在实验室或固定办公位为Jetson Nano设置静态IP便于远程访问SSH VNC Jupyter。 编辑网络配置文件sudo vim /etc/netplan/01-netcfg.yaml参照以下格式修改请根据你的网络环境调整network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114]应用配置sudo netplan apply。7. 常见问题与排查技巧实录即使按照步骤操作也可能会遇到问题。这里记录了一些典型坑位和解决方法。7.1 安装软件时提示“无法定位软件包”或“依赖关系不满足”原因与排查软件源未更新首先运行sudo apt update刷新列表。软件源错误或不可达检查/etc/apt/sources.list文件中的镜像地址是否正确尝试ping一下该域名看是否通。架构不匹配Jetson Nano是aarch64(ARM64)架构确保你尝试安装的.deb包或软件源包含该架构的版本。有些软件只提供x86_64版本。JetPack版本不匹配某些库如深度学习框架对特定JetPack版本有严格要求。确认你下载的安装包是针对JetPack 4.6.1的。解决步骤始终从官方或可信的、明确标注支持Jetson ARM64的源获取软件。对于深度学习框架严格使用NVIDIA官方论坛或Git仓库提供的安装指令和预编译包链接。7.2pip install编译失败报错“内存不足”或“杀死了进程”原因在Jetson Nano上从源码编译大型Python包如SciPy是内存杀手。4GB内存很容易在编译过程中耗尽。解决方案使用预编译轮子这是首选方案。积极寻找为aarch64或Jetson预编译的.whl文件。大幅增加交换空间如前所述将交换文件增加到6GB甚至8GB为编译提供缓冲。使用编译优化如果必须编译尝试在pip install时添加--no-cache-dir和--no-binary选项进行控制并设置临时目录到交换空间。最根本的方法换用更轻量的替代库或者考虑在x86机器上交叉编译。7.3 运行AI模型时GPU利用率很低或报CUDA错误原因与排查框架CUDA支持未正确启用在Python中验证torch.cuda.is_available()或tf.test.is_gpu_available()。模型或操作不支持GPU有些模型层或操作可能只在CPU上实现。TensorRT未使用在Jetson上获得最佳性能通常需要将训练好的模型如ONNX格式通过TensorRT进行优化和加速。直接运行原生PyTorch/TensorFlow模型可能无法充分发挥GPU能力。功耗模式限制确保运行在sudo nvpmodel -m 0模式下。过热降频监控jtop中的温度和当前频率如果温度过高频率会下降导致性能骤降。解决步骤编写一个最小的GPU测试脚本确认基础CUDA功能正常。学习并使用NVIDIA的TensorRT工具链来部署模型这是释放Jetson潜力的关键。加强物理散热确保风扇正常工作。7.4 系统卡顿终端响应缓慢原因SD卡读写速度慢低规格的SD卡是系统卡顿的元凶。交换空间被频繁使用使用free -h和sudo iotop查看如果swap使用率持续很高说明物理内存严重不足系统在频繁进行内存和SD卡之间的数据交换这会拖慢一切。解决方案投资一张高速U3 V30的SD卡或考虑使用USB 3.0 SSD作为系统盘需要修改bootloader有一定难度。优化你的应用程序减少内存占用。关闭不必要的图形界面使用纯命令行模式。再次检查是否有内存泄漏的进程。7.5 远程连接SSH/VNC失败SSH连接失败检查IP地址是否正确在Jetson Nano上运行ifconfig或ip a查看。检查SSH服务是否开启sudo systemctl status sshd。检查防火墙如果启用sudo ufw status。确保客户端和Jetson在同一局域网段。VNC黑屏或无法连接Jetson Nano默认使用LightDM显示管理器安装x11vnc并配置自启动相对稳定。一个实测可用的快速方法是sudo apt install x11vnc -y x11vnc -storepasswd # 设置密码 sudo x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/你的用户名/.vnc/passwd -rfbport 5900 -shared然后使用VNC客户端连接Jetson IP:5900。更稳定的方法是将其配置为系统服务。配置过程就像搭积木每一步都为下一步提供支撑。从一张白纸般的SD卡到一个可以流畅运行深度学习模型的AI边缘计算节点中间每一个环节的扎实与否都决定了后续开发是事半功倍还是举步维艰。这份指南里的每一个命令和选项都是经过多次重装验证过的路径。当然实际环境中你可能还会遇到更多具体的问题这时善用搜索引擎结合jtop监控和系统日志dmesg,journalctl进行排查是工程师的必备技能。记住在Jetson Nano上工作耐心和对资源的精细管理与你的代码能力同等重要。