嵌入式开发 Jetson Nano 完全配置指南:从系统安装到开发环境搭建
Jetson Nano 是 NVIDIA 推出的一款面向边缘 AI 应用的小型开发板,它以低功耗、高性能的特点深受创客和开发者喜爱。无论是运行图像识别模型、训练小型神经网络,还是搭建远程开发环境,Jetson Nano 都能胜任。然而,出厂系统默认配置并不一定是最优方案——图形桌面占用大量内存、开发工具需要手动安装、服务自启动需要额外配置。
本文将带你从零开始,一步步完成 Jetson Nano 的完整配置:从优化系统内存、安装 Jupyter Lab(原生和 Docker 两种方式)、部署网页版 VS Code,到设置服务自启动,打造一个高效、稳定的边缘 AI 开发环境。
一、内存优化:切换至命令行模式节省 1.6GB
1.1 问题描述
Jetson Nano B01 和 A02 都配备了 4GB 内存,运行一般程序绰绰有余。但如果你要跑大型应用程序,或者同时运行多个神经网络模型,内存就会捉襟见肘。如果你使用的是 Jetson Nano 2GB 版本,这个问题会更加严重。
解决思路很简单:一是加内存(换用更高配置的开发板),二是减少内存的使用量(关闭不必要的系统服务)。最立竿见影的方法就是切换到命令行(CLI)模式。
下图是开机后的内存使用情况——桌面环境占用了 2.2GB(53.6%),一半以上的内存就这样被消耗掉了。

1.2 找到内存大户
使用以下命令查看内存占用前十的进程:
ps aux --sort -rss | head

你会发现内存占用最大的几个进程分别是:
- Xorg —— X Window 图形服务器,负责渲染桌面
- gnome-shell —— GNOME 桌面环境的主进程
- firefox 或其他浏览器 —— 桌面环境下的网络请求
- 其他桌面相关守护进程 —— 如 systemd-logind、polkit 等
1.3 切换至命令行模式(CLI)
由于我们平时大部分时间都通过 JupyterLab 或 SSH 远程控制 Jetson Nano,图形桌面的实际用途有限。运行以下命令即可切换到命令行模式:
sudo systemctl set-default multi-user.target

重启后生效。注意: 如果你使用 WiFi 远程登录,Jetson Nano 在未登录时不会自动连接 WiFi,你需要插网线或者接键盘显示器进行操作。
重启后查看内存状态:


惊人地发现,内存占用从 2.2GB 降到了只有 0.6GB(14.6%),足足节省了 1.6GB 的内存!
1.4 切换回桌面模式(GUI)
如果偶尔需要使用图形桌面,可以通过以下命令切换回来:
sudo systemctl set-default graphical.target
重启后生效。
二、Jupyter Lab 安装(原生方式)
Jupyter Lab 是 Jetson Nano 上最常用的开发工具,NVIDIA 官方的 Jetbot 入门项目就是以 JupyterLab 作为例程执行环境。原生安装步骤如下:
2.1 安装依赖
sudo apt-get update
sudo apt-get install python3-pip -y
2.2 安装 JupyterLab
pip3 install jupyterlab
安装完成后,可以通过 jupyter lab 命令启动,默认监听 8888 端口。
2.3 配置密码
首次启动时,Jupyter 会生成一个 token,你可以用它登录并设置密码:
jupyter lab --ip=0.0.0.0 --port=8888 --allow-root
在浏览器中打开 http://<你的Jetson-Nano-IP>:8888/lab,输入 token 后即可设置密码。
三、用 Docker 安装 Jupyter Lab
自从 JetPack 4.3 起,NVIDIA 引入了 Cloud-Native 的概念,JetPack 系统镜像自带了 NVIDIA 的 Docker。使用 Docker 的好处是可以快速部署目标环境,减少依赖安装的环节,大大提高生产效率。
3.1 检查 Docker 是否正确安装
docker --version
如果能正常显示版本信息,说明 Docker 已安装。否则请参考 Docker 官方文档 进行安装。
3.2 选择 Jupyter Docker 镜像
Jupyter 团队在 Docker Hub 上提供了多款基础镜像,你可以根据需求选择:
- jupyter/base-notebook —— 最小化安装,适合自定义环境
- jupyter/scipy-notebook —— 预装科学计算库(NumPy、Pandas、Matplotlib 等)
- jupyter/tensorflow-notebook —— 预装 TensorFlow 环境
- jupyter/datascience-notebook —— 预装数据科学工具链
3.3 下载并运行
sudo docker pull jupyter/base-notebook
运行容器:
sudo docker run -p 8888:8888 -v /home/bbot:/home/jovyan/work jupyter/base-notebook
-p 8888:8888:将系统的 8888 端口映射到容器内的 8888 端口-v /home/bbot:/home/jovyan/work:将系统 home 目录映射到容器内的/home/jovyan/work
运行成功后,终端会输出包含 token 的 URL,复制该 URL 到浏览器即可访问 Jupyter Lab。
3.4 开机自动启动 Docker 版 Jupyter
稍微修改启动命令,即可支持开机时自动启动 Jupyter 容器:
sudo docker run --restart=always -d -p 8888:8888 -v /home/bbot:/home/jovyan/work jupyter/base-notebook
--restart=always:无论容器当前状态如何,Docker 启动时容器自动启动-d:容器在后台运行
3.5 通过 Jupyter Lab 登录宿主系统
有时候你需要从 Docker 内连接回宿主系统。由于 base-notebook 没有预装 openssh-client,需要先安装:
sudo apt-get update
sudo apt-get install openssh-client
安装后即可通过 Docker 默认网桥地址登录宿主:
ssh root@172.17.0.1
如果想免密码登录,可以将容器内的公钥添加到宿主:
docker run -it jupyterdirect:0.0.1 cat /home/jovyan/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
四、Docker + Jupyter 一键搭建远程 Notebook 环境
如果你需要一个更完善的远程开发环境——支持密码保护、SSH 一键登录宿主、长期运行不中断——可以通过自定义 Dockerfile 来搭建。
4.1 前置条件
- Jetson Nano 已安装 Docker
- 已拉取
jupyter/minimal-notebook基础镜像 - 有基本的 Linux 命令行操作经验
4.2 编写 Dockerfile
创建如下 Dockerfile:
FROM jupyter/minimal-notebook
USER root
RUN apt-get update
RUN apt-get install -y openssh-client
RUN apt-get -y clean
# 为 jovyan 用户添加 sudo 权限(可选)
RUN usermod -aG sudo jovyan
RUN chmod +w /etc/sudoers
RUN echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN chmod -w /etc/sudoers
USER ${NB_UID}
# 生成 SSH 密钥并配置自动登录宿主
RUN ssh-keygen -q -t rsa -N '' -f /dev/null 2>&1
RUN echo "ssh root@172.17.0.1" >> /home/jovyan/.profile
4.3 构建镜像
在 Dockerfile 所在目录执行:
docker build . -t jupyterdirect:0.0.1
4.4 运行并配置
首次运行:
docker run -p 46020:8888 -v /home/jovyan jupyterdirect:0.0.1
记录下终端输出的 token,在浏览器中打开 http://<服务器IP>:46020/lab,输入 token 登录。
完成 SSH 授权后,改为后台运行模式:
docker run -d --restart=always --privileged -p 46020:8888 -v /home/jovyan jupyterdirect:0.0.1
这样,即使关闭本地电脑,Jetson Nano 上的 Jupyter 会话也不会中断。
五、安装网页版 VS Code
对于经常做开发的用户来说,JupyterLab 的编程功能相对有限。将微软 VS Code 植入 Jetson Nano 进行远程开发,会带来更好的编程体验。
5.1 网页版 VS Code 简介
Visual Studio Code 是微软开发的跨平台免费源代码编辑器,支持语法高亮、代码自动补全、代码重构,并内置命令行工具和 Git 版本控制。VS Code for Web 是在浏览器中运行的轻量级版本,界面与桌面版几乎一致,非常适合远程开发和调试。
5.2 安装步骤
执行以下命令即可完成安装:
wget -N -O vscode-linux-deb.arm64.deb https://update.code.visualstudio.com/latest/linux-deb-arm64/stable
sudo apt install ./vscode-linux-deb.arm64.deb
5.3 运行
安装完成后,在终端运行:
code-oss
5.4 安装 Python 插件
由于我们通常使用 VS Code 做 Python 开发,建议安装 Python 相关插件:
# 安装 Python 工具包
sudo apt-get install python3-pip -y
# 安装 Python linter
pip3 install pylint
# 安装 Python formatter
pip3 install black
# 安装 VS Code Python 扩展
code --install-extension ms-python.python --force
六、配置 Jupyter Lab 自启动
当你部署好 Jupyter Lab 后,每次重启都需要手动启动服务,非常不便。通过 systemd 配置自启动,可以让 Jupyter Lab 开机自动运行。这个方法不仅适用于 Jetson Nano,也适用于树莓派、Atomic PI 等单板计算机。
6.1 确定 Jupyter 的安装位置
which jupyter-lab
示例输出:
/home/bbot/.local/bin/jupyter-lab
其中 bbot 是你的主账号名称。
6.2 创建 systemd 服务文件
sudo nano /etc/systemd/system/jupyter.service
填入以下内容(注意修改账号名称和 Jupyter 安装路径):
[Unit]
Description=Jupyter Lab
[Service]
Type=simple
User=bbot
ExecStart=/home/bbot/.local/bin/jupyter-lab --port 8888
WorkingDirectory=/home/bbot/Notebook
[Install]
WantedBy=default.target
6.3 启用并启动服务
sudo systemctl enable jupyter
sudo systemctl start jupyter
6.4 检查服务状态
sudo systemctl status jupyter
如果输出显示 active (running),说明服务正常启动,重启后也能自动运行。
七、总结
本文介绍了 Jetson Nano 从零到一的完整配置流程:
- 内存优化 —— 切换到 CLI 模式,节省 1.6GB 内存,释放更多资源给 AI 推理任务
- Jupyter Lab 原生安装 —— 适合喜欢直接管理系统环境的开发者
- Jupyter Lab Docker 安装 —— 适合追求快速部署、环境隔离的场景
- Docker + Jupyter 远程环境 —— 支持密码保护、SSH 一键登录、长期后台运行
- VS Code 网页版 —— 功能强大的远程代码编辑器,弥补 JupyterLab 的编程短板
- 服务自启动 —— 通过 systemd 让 Jupyter Lab 开机自动运行
这些配置可以根据你的实际需求灵活组合。如果你只是做简单的 AI 推理实验,CLI 模式 + Jupyter Docker 是最轻量的方案;如果你需要完整的远程开发体验,VS Code + Docker Jupyter 自启动则是最佳选择。
折腾愉快!如果你在配置过程中遇到问题,欢迎在评论区交流。