无显示器环境下的Jetson Nano镜像烧录实战指南
在边缘计算和嵌入式AI开发领域,Jetson Nano凭借其强大的GPU算力和紧凑的尺寸,成为众多开发者的首选平台。然而,初次接触这块开发板时,镜像烧录过程往往成为第一道门槛——特别是当手边没有多余的显示器时。传统教程通常假设用户拥有完整的显示外设,这在实际开发场景中并不总是成立。本文将彻底解决这个痛点,详细介绍如何仅通过一台电脑和USB连接,在虚拟机环境中完成全套烧录流程。
1. 准备工作与环境配置
1.1 硬件与软件需求清单
在开始之前,请确保准备好以下物品:
- Jetson Nano开发板(需带有电源适配器)
- 至少16GB容量的U盘(建议USB3.0接口)
- Micro USB数据线(用于连接开发板与主机)
- 已安装VMware Workstation或VirtualBox的电脑
关键工具下载:
- Jetson Nano官方镜像
- Ubuntu 18.04 LTS镜像
- VMware Workstation Pro
提示:虽然官方推荐Ubuntu 18.04,但实测Ubuntu 20.04也能正常工作,只是需要额外安装部分依赖库。
1.2 虚拟机基础配置
创建一个新的Ubuntu虚拟机时,建议分配至少4GB内存和50GB存储空间。网络连接模式选择"桥接模式"(Bridged)以获得更稳定的网络性能。安装完成后,首先更新系统软件包:
sudo apt update && sudo apt upgrade -y安装必要的工具链:
sudo apt install -y exfat-fuse exfat-utils gparted2. 镜像获取与处理
2.1 官方镜像下载技巧
NVIDIA官方提供了多个版本的Jetson Nano镜像,对于深度学习开发者,推荐选择包含完整CUDA和cuDNN支持的版本。下载时注意区分:
- Jetson Nano Developer Kit SD Card Image:标准版
- Jetson Nano Developer Kit for JetPack:包含完整JetPack工具链
使用wget命令直接下载可避免浏览器中断问题:
wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz22.2 U盘格式化与镜像写入
将U盘插入主机后,首先需要在虚拟机设置中确保USB控制器已启用。然后在Ubuntu虚拟机中执行:
lsblk确认U盘设备标识(通常为/dev/sdb)
使用GParted图形工具进行格式化:
- 选择U盘对应的设备
- 删除所有现有分区
- 创建新的FAT32分区表
- 应用更改
写入镜像的命令示例:
sudo dd if=jetson-nano-sd-card-image.img of=/dev/sdb bs=4M status=progress3. 虚拟机与Jetson Nano的连接配置
3.1 USB设备直通设置
这是整个流程中最关键的一步。在VMware中:
- 点击"虚拟机"→"可移动设备"
- 选择Jetson Nano对应的USB设备
- 点击"连接"将其分配给虚拟机
验证连接状态:
lsusb应能看到NVIDIA Corp设备信息。
3.2 网络共享配置
为方便后续软件安装,建议配置网络共享:
sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE4. 无显示器烧录全流程
4.1 进入恢复模式
- 按住Jetson Nano上的恢复按钮(靠近USB接口)
- 同时按下电源按钮
- 保持恢复按钮按压约2秒后释放
在虚拟机终端中检查设备状态:
dmesg | grep NVIDIA4.2 使用SDK Manager完成烧录
虽然可以通过命令行完成全部操作,但NVIDIA提供的SDK Manager图形工具大大简化了流程:
- 安装SDK Manager:
sudo apt install ./sdkmanager_[version].deb- 启动并配置:
sdkmanager在界面中选择:
- Target Hardware: Jetson Nano
- Target Operating System: Linux JetPack
- Host Machine: 保持默认
- 按照向导完成剩余步骤,包括CUDA、cuDNN等组件的选择安装。
4.3 常见问题排查
问题1:虚拟机无法识别Jetson Nano
- 解决方案:检查USB控制器设置是否为USB3.0,尝试更换USB端口
问题2:烧录过程中断
- 解决方案:确保电源供应稳定,建议使用官方推荐电源适配器
问题3:网络连接失败
sudo dhclient eth05. 烧录后配置与验证
5.1 首次启动设置
通过SSH连接Jetson Nano(默认IP通常为192.168.55.1):
ssh jetson@192.168.55.1密码为"nvidia"
5.2 基础环境检查
运行以下命令验证关键组件:
nvcc --version # 检查CUDA python3 -c "import tensorflow as tf; print(tf.__version__)" # 检查TensorFlow jtop # 系统监控(需先安装:sudo pip3 install jetson-stats)5.3 性能优化设置
启用最大性能模式:
sudo nvpmodel -m 0 sudo jetson_clocks配置交换空间避免内存不足:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile6. 进阶技巧与自动化脚本
6.1 一键烧录脚本
创建自动化脚本可大幅提高效率,以下是一个基础示例:
#!/bin/bash # auto_flash.sh DEVICE="/dev/sdb" IMAGE="jetson-nano.img" echo "[INFO] 开始写入镜像到 $DEVICE" sudo dd if=$IMAGE of=$DEVICE bs=4M status=progress sync echo "[INFO] 等待设备重新连接..." sleep 10 echo "[INFO] 配置启动分区" sudo mkdir -p /mnt/jetson sudo mount ${DEVICE}1 /mnt/jetson sudo touch /mnt/jetson/ssh sudo umount /mnt/jetson echo "[SUCCESS] 烧录完成!"6.2 远程开发环境配置
配置VS Code远程开发:
- 安装Remote-SSH扩展
- 添加Jetson Nano为远程主机
- 安装Python、C++等必要扩展
6.3 容器化部署方案
使用Docker简化环境管理:
sudo apt install docker.io sudo docker run --runtime nvidia -it nvcr.io/nvidia/l4t-base:r32.7.1在实际项目部署中,我们通常会遇到需要多次烧录测试的情况。这时候可以制作自定义镜像保留所有环境配置:
sudo ./flash.sh -r -k APP -G my_backup.img jetson-nano-qspi-sd mmcblk0p1