7272
7373 echo "Kernel headers packaged for ${KVER}:"
7474 du -sh kernel-headers-x86_64.tar.gz
75- - name : Clone NVIDIA open-gpu-kernel-modules
76- run : git clone --depth 1 --branch 570.86.16 https://github.com/NVIDIA/open-gpu-kernel-modules.git
77- - name : Build NVIDIA modules (x86-64)
78- run : |
79- cd open-gpu-kernel-modules
80- make modules KERNEL_UNAME=$(cd .. && make -s kernelrelease) SYSSRC=$(pwd)/.. -j $(nproc)
81- - name : Download NVIDIA driver for firmware
82- run : |
83- DRIVER_VERSION=570.86.16
84- wget -q https://download.nvidia.com/XFree86/Linux-x86_64/${DRIVER_VERSION}/NVIDIA-Linux-x86_64-${DRIVER_VERSION}.run
85- chmod +x NVIDIA-Linux-x86_64-${DRIVER_VERSION}.run
86- ./NVIDIA-Linux-x86_64-${DRIVER_VERSION}.run --extract-only --target nvidia-driver
87- - name : Package NVIDIA modules (x86-64)
88- run : |
89- KVER=$(make -s kernelrelease)
90- DRIVER_VERSION=570.86.16
91- mkdir -p nvidia-modules/lib/modules/$KVER/kernel/drivers/gpu
92- mkdir -p nvidia-modules/lib/firmware/nvidia/${DRIVER_VERSION}
93- cp open-gpu-kernel-modules/kernel-open/*.ko nvidia-modules/lib/modules/$KVER/kernel/drivers/gpu/
94- cp nvidia-driver/firmware/*.bin nvidia-modules/lib/firmware/nvidia/${DRIVER_VERSION}/
95- tar czf nvidia-modules-x86_64.tar.gz -C nvidia-modules .
96- # ============================================================
97- # NVIDIA DRIVER USERSPACE LIBRARIES
98- # ============================================================
99- # These libraries are injected into containers at VM boot time by hypeman,
100- # eliminating the need for containers to bundle matching NVIDIA drivers.
101- #
102- # When upgrading the driver version:
103- # 1. Check NVIDIA release notes: https://download.nvidia.com/XFree86/Linux-x86_64/
104- # 2. Ensure compatibility with the kernel version being built
105- # 3. Update DRIVER_VERSION in ALL places in this file (search for 570.86.16)
106- # 4. Update NvidiaDriverVersion in hypeman/lib/system/versions.go
107- # 5. Test GPU passthrough thoroughly before deploying
108- # ============================================================
109- - name : Package NVIDIA driver libraries (x86-64)
110- run : |
111- DRIVER_VERSION=570.86.16
112-
113- mkdir -p nvidia-driver-libs/usr/lib/nvidia
114- mkdir -p nvidia-driver-libs/usr/bin
115-
116- # Essential libraries for CUDA inference (minimal set to keep initrd small)
117- # libcuda.so - CUDA driver API (required for all GPU compute) ~68MB
118- cp nvidia-driver/libcuda.so.${DRIVER_VERSION} nvidia-driver-libs/usr/lib/nvidia/
119- # libnvidia-ml.so - NVML for nvidia-smi and GPU monitoring ~2MB
120- cp nvidia-driver/libnvidia-ml.so.${DRIVER_VERSION} nvidia-driver-libs/usr/lib/nvidia/
121- # libnvidia-ptxjitcompiler.so - PTX JIT compilation ~37MB
122- cp nvidia-driver/libnvidia-ptxjitcompiler.so.${DRIVER_VERSION} nvidia-driver-libs/usr/lib/nvidia/
123-
124- # Small utility libraries
125- cp nvidia-driver/libnvidia-allocator.so.${DRIVER_VERSION} nvidia-driver-libs/usr/lib/nvidia/
126- cp nvidia-driver/libnvidia-cfg.so.${DRIVER_VERSION} nvidia-driver-libs/usr/lib/nvidia/
127-
128- # Note: The following large libraries are NOT included to keep initrd small:
129- # - libnvidia-nvvm.so (~79MB) - Only needed for CUDA runtime compilation
130- # - libnvidia-gpucomp.so (~61MB) - Only needed for some compute workloads
131- # - libnvidia-opencl.so (~63MB) - Only needed for OpenCL (not CUDA)
132- # - libnvcuvid.so (~16MB) - Only needed for video decoding
133- # - libnvidia-encode.so - Only needed for video encoding
134- # Containers requiring these can install them directly.
135-
136- # Binaries
137- cp nvidia-driver/nvidia-smi nvidia-driver-libs/usr/bin/
138- cp nvidia-driver/nvidia-modprobe nvidia-driver-libs/usr/bin/
139-
140- # Version file for runtime verification
141- echo "${DRIVER_VERSION}" > nvidia-driver-libs/usr/lib/nvidia/version
142-
143- tar czf nvidia-driver-libs-x86_64.tar.gz -C nvidia-driver-libs .
144-
145- echo "Driver libraries packaged:"
146- ls -lah nvidia-driver-libs/usr/lib/nvidia/
147- ls -lah nvidia-driver-libs/usr/bin/
14875 - name : Create release
14976 id : create_release
15077 uses : actions/create-release@v1
@@ -172,15 +99,6 @@ jobs:
17299 asset_path : vmlinux
173100 asset_name : vmlinux-x86_64
174101 asset_content_type : application/octet-stream
175- - name : Upload NVIDIA modules for x86_64
176- uses : actions/upload-release-asset@v1
177- env :
178- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
179- with :
180- upload_url : ${{ steps.create_release.outputs.upload_url }}
181- asset_path : nvidia-modules-x86_64.tar.gz
182- asset_name : nvidia-modules-x86_64.tar.gz
183- asset_content_type : application/gzip
184102 - name : Upload kernel headers for x86_64
185103 uses : actions/upload-release-asset@v1
186104 env :
@@ -199,15 +117,6 @@ jobs:
199117 asset_path : kernel-headers-aarch64.tar.gz
200118 asset_name : kernel-headers-aarch64.tar.gz
201119 asset_content_type : application/gzip
202- - name : Upload NVIDIA driver libraries for x86_64
203- uses : actions/upload-release-asset@v1
204- env :
205- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
206- with :
207- upload_url : ${{ steps.create_release.outputs.upload_url }}
208- asset_path : nvidia-driver-libs-x86_64.tar.gz
209- asset_name : nvidia-driver-libs-x86_64.tar.gz
210- asset_content_type : application/gzip
211120 - name : Upload Image.gz for aarch64
212121 uses : actions/upload-release-asset@v1
213122 env :
0 commit comments