NVIDIA Jetson设备NixOS模块使用教程
项目介绍
jetpack-nixos 是一个为NVIDIA Jetson设备提供的NixOS模块。该项目的主要目的是将NVIDIA的Jetpack SDK组件打包,以便在NixOS上使用。支持的组件包括平台固件刷写脚本、NVIDIA提供的5.10 Linux内核(包含一些开源驱动如nvgpu)、基于EDK2的UEFI固件、ARM Trusted Firmware / OP-TEE等。此外,还提供了用于GPU计算(如CUDA、CuDNN、TensorRT)、多媒体(如硬件加速编码/解码)、图形(如Wayland、GBM、EGL、Vulkan)以及电源/风扇控制(如nvpmodel、nvfancontrol)的额外包。
该项目基于Jetpack 5版本,仅支持Jetpack 5.1及以上版本支持的设备,包括Jetson Orin AGX、Jetson Orin NX、Jetson Xavier AGX和Jetson Xavier NX。Jetson Nano、TX2和TX1设备不支持,因为上游在Jetpack 5中已停止对它们的支持。
项目快速启动
1. 刷写UEFI固件
如果你的设备已经具有包含UEFI的最新固件(Jetpack 5之后),则此步骤可能是可选的。如果不确定,建议刷写固件。
- 将Jetson设备连接到电源,按下“电源”按钮,确保电源灯亮起。
- 进入恢复模式:按住“恢复”按钮,同时按下“重置”按钮。
- 通过USB连接设备,并验证设备是否处于恢复模式:
输出应类似于:lsusb | grep -i NVIDIABus 003 Device 013: ID 0955:7023 NVIDIA Corp. APX - 在x86_64机器上,构建并运行刷写脚本(以root身份):
nix build github:anduril/jetpack-nixos#flash-xavier-agx-devkit sudo /result/bin/flash-xavier-agx-devkit
2. 构建并写入自定义安装ISO
- 构建自定义安装ISO:
nix build github:anduril/jetpack-nixos#iso_minimal - 将ISO写入USB驱动器:
替换sudo dd if=/result/iso/nixos-22.11pre-git-aarch64-linux.iso of=/dev/sdX bs=1M oflag=sync status=progress/dev/sdX为USB驱动器的正确路径。
3. 安装NixOS
- 将USB驱动器插入Jetson设备。
- 按下电源/重置按钮,进入UEFI固件菜单(按ESC键)。
- 在“Boot Manager”中选择正确的USB设备并启动。
- 按照NixOS手册中的UEFI设备安装说明进行安装。
- 在配置中包含以下内容:
imports = [ (builtins.fetchTarball "https://github.com/anduril/jetpack-nixos/archive/master.tar.gz" + "/modules/default.nix") ]; hardware.nvidia-jetpack.enable = true; hardware.nvidia-jetpack.som = "xavier-agx"; # 其他选项包括orin-agx, xavier-nx, xavier-nx-emmc hardware.nvidia-jetpack.carrierBoard = "devkit";
应用案例和最佳实践
1. 图形输出配置
- Linux控制台:在Orin AGX/NX/Nano上,Linux控制台在HDMI/DisplayPort上可能无法工作。在Xavier AGX和Xavier NX上,可以通过添加内核参数来配置控制台输出。
- X11:设置
hardware.nvidia-jetpack.modesetting.enable = false,LightDM+i3和LightDM+Gnome已测试通过。 - Wayland:设置
hardware.nvidia-jetpack.modesetting.enable = true,Weston和sway在Orin设备上已测试通过。
2. 固件更新
Jetpack 5.1及以上版本支持从设备更新固件。可以通过设置hardware.nvidia-jetpack.bootloader.autoUpdate = true来自动更新固件。
典型生态项目
- CUDA:用于GPU计算的并行计算平台。
- TensorRT:用于高性能深度学习推理的SDK。
- Wayland:现代的显示服务器协议。
- GStreamer:用于多媒体处理的流媒体框架。
通过jetpack-nixos模块,这些生态项目可以方便地在NVIDIA Jetson设备上进行配置和使用,极大地简化了开发和部署流程。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



