anduril/jetpack-nixos
NixOS module for NVIDIA Jetson devices
jetpack‑nixos – NVIDIA Jetson용 NixOS 지원 (JetPack)
무엇인가요 – Jetson 개발 키트용으로 NVIDIA JetPack SDK(펌웨어, 커널, CUDA, cuDNN, TensorRT, GStreamer 플러그인, Vulkan 등)를 패키지화한 NixOS 모듈 및 오버레이입니다. JetPack이 제공하는 드라이버와 라이브러리를 동기화한 상태에서 Jetson 장치에서 완전한 NixOS 시스템을 설치하고 실행할 수 있게 해줍니다.
왜 중요한가요 – Jetson 보드는 엣지 AI, 로보틱스, 컴퓨터 비전 워크로드에 인기가 많습니다. 일반적으로 NVIDIA의 Ubuntu 기반 이미지를 사용하고, 펌웨어, 커널, CUDA 버전을 수동으로 관리해야 합니다. jetpack‑nixos는 선언적 NixOS 생태계 내에서 이를 모두 자동화하여 재현 가능한 빌드, 간편한 업그레이드, Nix 제공 패키지와 JetPack 구성 요소를 혼합할 수 있는 기능을 제공합니다.
주요 기능
| 영역 | 리포지토리에서 제공하는 기능 |
|---|---|
| 펌웨어 | EDK2 기반 UEFI 펌웨어, ARM Trusted Firmware, OP‑TEE를 플래시하는 스크립트. |
| 커널 | NVIDIA 제공 JetPack 커널 (또는 bring‑your‑own‑kernel 옵션을 통해 메인라인 커널). |
| GPU 스택 | CUDA, cuDNN, TensorRT, NVIDIA 컨테이너 툴킷. |
| 멀티미디어 | V4L2 가속 인코딩/디코딩, GStreamer 플러그인, Wayland/GBM/EGL/Vulkan 지원. |
| 전원 관리 | nvpmodel, nvfancontrol. |
| 설치 | 플레이크 기반 ISO 빌더 (iso_minimal, iso_minimal_jp5) 및 플래시 유틸리티 (flash‑<device>-devkit). |
| 컨테이너 지원 | Docker/Podman 통합 및 nvidia.com/gpu용 CDI 장치 설명. |
| 업데이트 | UEFI 캡슐 기반 OTA 펌웨어 업데이트, 선택적 서명된 캡슐 인증. |
일반적인 워크플로우
- UEFI 플래시 – x86_64 호스트에서
nix build …#flash‑xavier‑agx‑devkit(또는 적절한 장치)를 실행하고, 생성된 스크립트를 root로 실행합니다. - 설치용 ISO 생성 –
nix build …#iso_minimal(또는 JetPack 5용iso_minimal_jp5)를 실행하고,dd를 사용해 USB 스틱에 기록합니다. - Jetson 부팅 – UEFI 부트 매니저를 사용해 ISO를 시작하고, 표준 NixOS 설치 가이드를 따릅니다.
- JetPack 모듈 활성화 –
configuration.nix에서 다음을 설정합니다:hardware.nvidia-jetpack.enable = true; hardware.nvidia-jetpack.som = "orin-agx"; # 또는 xavier‑agx 등. hardware.nvidia-jetpack.carrierBoard = "devkit"; hardware.graphics.enable = true; # GPU 지원 - (옵션) 컨테이너 –
hardware.nvidia-container-toolkit.enable와 Docker/Podman를 활성화한 후,--device=nvidia.com/gpu=all로 컨테이너를 실행합니다. - 펌웨어 업그레이드 –
nixos-rebuild switch후,hardware.nvidia-jetpack.bootloader.autoUpdate = true를 설정하거나, 수동으로 캡슐을 빌드(nix build .#uefi-capsule-update‑xavier‑nx‑emmc‑devkit)하고 장치에 적용합니다.
누구에게 적합한가요
- Jetson 보드에서 재현 가능한 OS 이미지를 필요로 하는 로보틱스/엣지AI 엔지니어.
- CUDA 가속 ML 프레임워크(PyTorch, TensorFlow, OpenCV)를 Nix 쉘 또는 컨테이너 내에서 실행하고 싶은 연구자.
- 선언적 시스템 정의를 선호하고 Jetson 스택 전체를 버전 관리하고 싶은 DevOps/CI 전문가.
제한 사항 및 주의사항
- JetPack 5–7에서 지원되는 Jetson 장치만 대상입니다 (Orin AGX/NX/Nano, Xavier AGX/NX). Nano/TX1/TX2는 명시적으로 비지원.
- 펌웨어 및 일부 플래시 도구 (
tegrarcm_v2)는 x86_64 호스트에서만 실행 가능. - Xavier AGX는 UEFI 변수를 eMMC 파티션에 저장하므로, Linux에서의 런타임 EFI 변수 변경은 불가능합니다. 부팅 순서는 수동으로 설정해야 합니다.
- 일부 Orin 모델에서는 그래픽 콘솔 출력이 불안정할 수 있습니다. 문제 해결을 위해 시리얼 콘솔을 권장합니다.
- CUDA 바이너리는 비프리웨어입니다.
allowUnfree = true를 활성화하고 Nixpkgs 설정에서cudaSupport = true를 설정해야 합니다. - JetPack 버전을 혼합할 경우, 펌웨어, 커널, rootfs는 모두 동일한 메이저 버전에 속해야 합니다. JetPack 5 펌웨어와 JetPack 6 커널을 혼합할 수 없습니다.
빠른 시작 스크립트 (플레이크 기반)
# flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
jetpack.url = "github:anduril/jetpack-nixos";
jetpack.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, jetpack, ... }:
let
system = "aarch64-linux";
in {
nixosConfigurations.jetson = nixpkgs.lib.nixosSystem {
inherit system;
modules = [ ./configuration.nix jetpack.nixosModules.default ];
};
};
}
# configuration.nix (요약)
{
hardware.nvidia-jetpack.enable = true;
hardware.nvidia-jetpack.som = "orin-agx";
hardware.nvidia-jetpack.carrierBoard = "devkit";
hardware.graphics.enable = true;
hardware.nvidia-container-toolkit.enable = true;
virtualisation.docker.enable = true;
}
더 알아보기
- 리포지토리 README (이 요약의 원천) – 자세한 플래시, ISO 빌드, 커널 오버레이 지침 포함.
- NVIDIA JetPack SDK 문서 – TensorRT 및 전원 모델과 같은 하드웨어 특화 기능에 대한 정보.
- NixOS 매뉴얼 – 일반적인 NixOS 설치 및 플레이크 사용법.
- OpenEmbedded for Tegra (OE4T) – 이 프로젝트가 사용하는 정제된 벤더 커널의 상류 소스.
결론: jetpack‑nixos는 NVIDIA의 JetPack AI 스택과 재현 가능하고 선언적인 NixOS 세계 사이의 간극을 메우며, Jetson 엣지 장치에서 AI 워크로드, 컨테이너, 사용자 정의 커널을 실행하는 것을 현실적으로 가능하게 합니다.
관련
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트