展示 HN: NixOS-DGX-Spark – 在 DGX Spark 上使用 Nix 和 NixOS
使用 Nix 在 DGX OS 上尝试 DGX Spark 剧本,或在您的 DGX Spark 上安装 NixOS,以获得完整的 Nix 体验。该存储库提供 USB 镜像和带有 DGX Spark 系统设置的 NixOS 模块。这在 NVIDIA DGX Spark 本身和 Asus Ascent GX10 上均有效。请查看我在 Planet Nix 上的 5 分钟闪电演讲以获取介绍:https://youtu.be/AvK_gi_snJE?si=MPKv3iiuS9B5elIE 在 DGX OS(Ubuntu)上使用 Nix 您可以在 NVIDIA DGX OS(Ubuntu)上使用此代码库中的开发 shell 和剧本,而无需安装 NixOS。 安装 使用官方安装程序安装 Nix:sh <( curl -L https://nixos.org/nix/install ) --daemon 或者,您可以使用 Determinate Nix Installer: curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install 通过将以下内容添加到 /etc/nix/nix.conf 来启用 flakes 和 nix-command: experimental-features = nix-command flakes 启用 graham33 Cachix 缓存—见下面的缓存。 在非 NixOS 上运行(例如 DGX OS) 在非 NixOS 系统上,Nix 构建的 CUDA 应用程序需要 nix-gl-host 来查找主机 GPU 驱动程序。剧本开发 shell 会自动处理此问题——基于容器的剧本不需要它,而本地 Nix 剧本会用 nixglhost 包装其命令,因此不需要手动干预。对于其他开发 shell(例如 cuda),nixglhost 可用,可以手动用来前缀命令: nix develop . # cuda nixglhost deviceQuery 在 DGX Spark 上使用 NixOS 警告 仅 DGX OS 可以从出厂固件启动。您需要在安装 NixOS 之前更新固件。 USB 启动镜像 构建 USB 镜像: nix build . # usb-image sudo dd if= $( echo result/iso/ * .iso ) of=/dev/your_usb_disk_device bs=1M status=progress sync 该镜像包含两个内核选项,可从 GRUB 启动菜单中选择: NixOS(默认) - NVIDIA 的专用内核,支持 DGX Spark 的完整 GPU 和正常工作以太网 NixOS(标准内核) - 标准 NixOS 6.17 内核(以太网存在问题) 启动 在 DGX Spark BIOS 中禁用安全启动并从 USB 驱动器启动。然后,您可以按照 NixOS 手册中的安装说明进行操作:https://nixos.org/manual/nixos/stable/#sec-installation-manual 使用 DGX Spark 模块 此模块提供可配置的 DGX Spark 硬件支持,并提供内核选择选项。 模块配置选项 hardware . dgx-spark = { enable = true ; # 启用 DGX Spark 硬件支持 useNvidiaKernel = true ; # 使用 NVIDIA 内核(默认:true) }; 使用 NVIDIA 内核 hardware . dgx-spark . enable = true ; # 默认使用 NVIDIA 内核 NVIDIA 内核是针对 NVIDIA DGX Spark 系统优化的自定义构建。内核配置是从 NVIDIA 的 Debian 注释中生成的,并与 NixOS 默认值进行比较,以生成最小的、可维护的配置。该模块还启用 DGX Dashboard Web 界面,提供 GPU 监控和系统监控,地址为 http://localhost:11000。 使用标准 NixOS 内核(在网络方面存在一些问题) hardware . dgx-spark = { enable = true ; useNvidiaKernel = false ; # 使用标准 NixOS 6.17 内核 }; 内核配置管理 内核配置是从 NVIDIA 的 Debian 注释生成并存储在 kernel-configs/nvidia-dgx-spark-<version>.nix 中。此简洁的配置仅包含与 NixOS 默认值不同的选项,从而减少约 82% 的冗长。要重新生成内核配置: nix run . # generate-kernel-config 这将: - 从 GitHub 获取 NVIDIA 内核源 - 构建 NixOS 基线内核配置 - 将 NVIDIA 的注释与 NixOS 默认值进行比较 - 生成仅包含差异的简洁配置文件 当需要重新生成时: - NVIDIA 内核版本更改(更新 kernel-configs/nvidia-kernel-source.nix) - NixOS common-config 更改(nixpkgs 更新) 您还可以使用本地内核源进行开发: nix run . # generate-kernel-config -- --kernel-source /path/to/NV-Kernels 在其他项目中导入 其他项目可以导入此 flake 并使用 DGX Spark 模块: { inputs . dgx-spark . url = "github:graham33/nixos-dgx-spark" ; outputs = { nixpkgs , dgx-spark , ... } : { nixosConfigurations . mySystem = nixpkgs . lib . nixosSystem { modules = [ dgx-spark . nixosModules . dgx-spark { # 启用 DGX Spark 支持 hardware . dgx-spark . enable = true ; # 可选择使用标准内核:useNvidiaKernel = false; } # 您的其他模块 ] ; } ; } ; } 快速入门 NixOS 模板 要获取专门为 DGX Spark 系统设计的完整 NixOS 配置模板,您可以使用该模板: # 为您的 NixOS 配置创建一个新目录 mkdir my-dgx-spark-config cd my-dgx-spark-config # 用 DGX Spark 模板初始化 nix flake init -t github:graham33/nixos-dgx-spark#dgx-spark 这将创建一个完整的 NixOS 配置,包含: - flake.nix - 导入 DGX Spark 模块的 Flake 配置 - configuration.nix - 针对 DGX Spark 硬件优化的主系统配置 - hardware-configuration.nix - 硬件配置模板 自定义
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡