Skip to content

Commit 0a34b03

Browse files
committed
do nvidia myself because upstream nvidia has been broken for days
1 parent 04f1c39 commit 0a34b03

File tree

2 files changed

+74
-1
lines changed

2 files changed

+74
-1
lines changed

Containerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@ COPY build_files /build
44
COPY system_files /files
55
COPY cosign.pub /files/etc/pki/containers/zirc-addons.pub
66

7-
FROM ghcr.io/zirconium-dev/zirconium-nvidia:latest
7+
FROM ghcr.io/zirconium-dev/zirconium:latest
88

99
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
1010
--mount=type=tmpfs,dst=/var \
1111
--mount=type=tmpfs,dst=/tmp \
1212
/ctx/build/01-packages.sh
1313

14+
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
15+
/ctx/build/02-nvidia.sh
16+
1417
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
1518
/ctx/build/99-cleanup.sh
1619

build_files/02-nvidia.sh

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#!/usr/bin/env bash
2+
3+
set -xeuo pipefail
4+
uname -r
5+
KERNEL_VERSION="$(find "/usr/lib/modules" -maxdepth 1 -type d ! -path "/usr/lib/modules" -exec basename '{}' ';' | sort | tail -n 1)"
6+
7+
dnf config-manager addrepo --from-repofile=https://negativo17.org/repos/fedora-nvidia.repo
8+
dnf config-manager setopt fedora-nvidia.enabled=0
9+
sed -i '/^enabled=/a\priority=90' /etc/yum.repos.d/fedora-nvidia.repo
10+
11+
dnf -y install \
12+
gcc-c++ \
13+
kernel-devel-matched
14+
15+
dnf -y install --enablerepo=fedora-nvidia akmod-nvidia
16+
mkdir -p /var/tmp # for akmods
17+
chmod 1777 /var/tmp
18+
19+
akmods --force --kernels "${KERNEL_VERSION}" --kmod "nvidia"
20+
cat /var/cache/akmods/nvidia/*.failed.log || true
21+
22+
dnf -y install --enablerepo=fedora-nvidia \
23+
nvidia-driver-cuda libnvidia-fbc libva-nvidia-driver nvidia-driver nvidia-modprobe nvidia-persistenced nvidia-settings
24+
25+
dnf config-manager addrepo --from-repofile=https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
26+
dnf config-manager setopt nvidia-container-toolkit.enabled=0
27+
dnf config-manager setopt nvidia-container-toolkit.gpgcheck=1
28+
29+
dnf -y install --enablerepo=nvidia-container-toolkit \
30+
nvidia-container-toolkit
31+
32+
curl --retry 3 -L https://raw.githubusercontent.com/NVIDIA/dgx-selinux/master/bin/RHEL9/nvidia-container.pp -o nvidia-container.pp
33+
semodule -i nvidia-container.pp
34+
rm -f nvidia-container.pp
35+
36+
tee /usr/lib/modprobe.d/00-nouveau-blacklist.conf <<'EOF'
37+
blacklist nouveau
38+
options nouveau modeset=0
39+
EOF
40+
41+
tee /usr/lib/bootc/kargs.d/00-nvidia.toml <<'EOF'
42+
kargs = ["rd.driver.blacklist=nouveau", "modprobe.blacklist=nouveau", "nvidia-drm.modeset=1"]
43+
EOF
44+
45+
# Universal Blue specific Initramfs fixes
46+
mv /etc/modprobe.d/nvidia-modeset.conf /usr/lib/modprobe.d/nvidia-modeset.conf
47+
# we must force driver load to fix black screen on boot for nvidia desktops
48+
sed -i 's/omit_drivers/force_drivers/g' /usr/lib/dracut/dracut.conf.d/99-nvidia.conf
49+
# as we need forced load, also must pre-load intel/amd iGPU else chromium web browsers fail to use hardware acceleration
50+
sed -i 's/ nvidia / i915 amdgpu nvidia /g' /usr/lib/dracut/dracut.conf.d/99-nvidia.conf
51+
52+
tee /usr/lib/systemd/system/nvctk-cdi.service <<'EOF'
53+
[Unit]
54+
Description=nvidia container toolkit CDI auto-generation
55+
ConditionFileIsExecutable=/usr/bin/nvidia-ctk
56+
After=local-fs.target
57+
58+
[Service]
59+
Type=oneshot
60+
ExecStart=/usr/bin/nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
61+
62+
[Install]
63+
WantedBy=multi-user.target
64+
EOF
65+
66+
systemctl enable nvctk-cdi.service
67+
systemctl disable akmods-keygen@akmods-keygen.service
68+
systemctl mask akmods-keygen@akmods-keygen.service
69+
systemctl disable akmods-keygen.target
70+
systemctl mask akmods-keygen.target

0 commit comments

Comments
 (0)