|
| 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