The open modules load GSP firmware (nvidia/<ver>/gsp_*.bin) early from the initramfs. On a fresh install the initramfs is regenerated before that firmware is on disk, so the first boot fails with "gsp_*.bin failed with error -2" until a manual "dracut -f". Add a %posttrans that rebuilds the initramfs after every payload in the transaction has landed, guaranteeing the firmware is captured. Gate it to the initial install with a %ghost stamp file, since $1 cannot distinguish install from upgrade in %posttrans.
233 lines
8.1 KiB
RPMSpec
233 lines
8.1 KiB
RPMSpec
# Backport missing architecture macros
|
|
%{!?x86_64: %global x86_64 x86_64 amd64 em64t}
|
|
%{!?arm64: %global arm64 aarch64}
|
|
|
|
# Because Red Hat broke this macro by not including kernel-rpm-macros in the base buildroot
|
|
%{!?kernel_module_package_buildreqs:%global kernel_module_package_buildreqs kernel-devel kernel-abi-stablelists redhat-rpm-config kernel-rpm-macros elfutils-libelf-devel kmod}
|
|
|
|
# Don't enable auto set build flags
|
|
# We get flags from the kernel
|
|
%undefine _auto_set_build_flags
|
|
|
|
# Kernel package flavors
|
|
## TODO: Fix kernel packaging macros to handle debug kernel flavor builds
|
|
%dnl %global kernel_extra_flavor_devel_packages kernel-debug-devel
|
|
%ifarch %{arm64}
|
|
%dnl %global kernel_extra_flavor_devel_packages %{?kernel_extra_flavor_devel_packages} kernel-64k-devel kernel-64k-debug-devel
|
|
%global kernel_extra_flavor_devel_packages %{?kernel_extra_flavor_devel_packages} kernel-64k-devel
|
|
%endif
|
|
|
|
%global kmodname nvidia-open
|
|
|
|
|
|
Name: %{kmodname}-kmod
|
|
Version: 610.43.02
|
|
Release: 6%{?dist}
|
|
Summary: Kernel module (kmod) for NVIDIA GPU hardware
|
|
|
|
License: GPL-2.0-only and MIT
|
|
URL: https://github.com/NVIDIA/open-gpu-kernel-modules
|
|
Source0: %{url}/archive/%{version}/open-gpu-kernel-modules-%{version}.tar.gz
|
|
|
|
# For kmodtool
|
|
Source10: kmod-%{kmodname}.spec.preamble
|
|
|
|
# For locally fixed macros to handle kernel flavors properly
|
|
Source20: kmp-local-override.macros
|
|
Source21: kmodtool-local-override
|
|
|
|
# kernel module package macros were split out sometime after EL7...
|
|
BuildRequires: kernel-rpm-macros
|
|
# kmod dependencies
|
|
BuildRequires: %kernel_module_package_buildreqs
|
|
%{?kernel_extra_flavor_devel_packages:BuildRequires: %kernel_extra_flavor_devel_packages}
|
|
BuildRequires: %{_bindir}/envsubst
|
|
BuildRequires: gcc
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: make
|
|
|
|
# Depend on nvidia/negativo17 kmod support packaging
|
|
Requires: nvidia-kmod-common = 3:%{version}
|
|
|
|
# Only supported architectures for the driver
|
|
ExclusiveArch: %{x86_64} %{arm64}
|
|
|
|
# Load override macros
|
|
%{load:%{S:20}}
|
|
|
|
%{?kernel_module_package:%kernel_module_package -s %{S:21} -n %{kmodname} -p %{S:10}}
|
|
|
|
%description
|
|
This package contains the kernel modules for providing
|
|
hardware support for the NVIDIA Turing (GTX 16/RTX 20)
|
|
and newer models of GPU hardware.
|
|
|
|
%files
|
|
%license COPYING
|
|
%doc README.md
|
|
%dir %{_sharedstatedir}/%{name}
|
|
%ghost %{_sharedstatedir}/%{name}/initramfs-rebuilt
|
|
|
|
|
|
%posttrans
|
|
# The open modules need the GSP firmware (shipped by nvidia-kmod-common) inside
|
|
# the initramfs, or early load fails with "gsp_*.bin failed with error -2".
|
|
# Some packages regenerate the initramfs before that firmware is on disk; this
|
|
# scriptlet runs after every payload has been unpacked, so a rebuild here is
|
|
# guaranteed to capture it. Equivalent to the manual "dracut -f".
|
|
#
|
|
# Only required on the initial install. The stamp below is a ghost file (absent
|
|
# from the payload), so it exists only once we create it here; it persists
|
|
# across upgrades (the new package owns it too) and is removed on erase. Net
|
|
# effect: the rebuild runs on a first install and again after a full
|
|
# removal+reinstall, but not on plain upgrades or reinstalls.
|
|
if [ ! -e %{_sharedstatedir}/%{name}/initramfs-rebuilt ]; then
|
|
if [ -x %{_bindir}/dracut ]; then
|
|
%{_bindir}/dracut --force --regenerate-all --quiet || :
|
|
touch %{_sharedstatedir}/%{name}/initramfs-rebuilt
|
|
fi
|
|
fi
|
|
|
|
|
|
%prep
|
|
# let's make sure we don't publish unsigned builds, that would be bad
|
|
%if "%{modsign_os}" != "almalinux-nvidia-signing"
|
|
%{error:modsign_os macro not set to almalinux-nvidia-signing, exiting}
|
|
%endif
|
|
|
|
%autosetup -n open-gpu-kernel-modules-%{version}
|
|
|
|
for flavor in %{flavors_to_build}; do
|
|
cp -a ../open-gpu-kernel-modules-%{version} ../%{name}-%{version}-kmodbuild-$flavor
|
|
mv ../%{name}-%{version}-kmodbuild-$flavor .
|
|
done
|
|
|
|
|
|
%build
|
|
# This module is useless
|
|
export NV_EXCLUDE_KERNEL_MODULES=nvidia-peermem
|
|
for flavor in %{flavors_to_build}; do
|
|
pushd %{name}-%{version}-kmodbuild-$flavor
|
|
export SYSSRC=%{kernel_source $flavor}
|
|
%make_build modules
|
|
popd
|
|
done
|
|
|
|
find . -name "*.ko" -type f -exec chmod u+x '{}' +
|
|
|
|
|
|
%install
|
|
# Set correct install paths
|
|
export INSTALL_MOD_PATH=%{buildroot}
|
|
export INSTALL_MOD_DIR=extra/%{kmodname}
|
|
# This module is useless
|
|
export NV_EXCLUDE_KERNEL_MODULES=nvidia-peermem
|
|
for flavor in %{flavors_to_build}; do
|
|
pushd %{name}-%{version}-kmodbuild-$flavor
|
|
export SYSSRC=%{kernel_source $flavor}
|
|
%{__make} V=1 modules_install
|
|
popd
|
|
done
|
|
|
|
# Own the state directory and pre-create the stamp so the ghost entry is
|
|
# registered correctly. The stamp is a ghost file, so its contents are not
|
|
# shipped; it is (re)created by the posttrans scriptlet on the target system.
|
|
install -d %{buildroot}%{_sharedstatedir}/%{name}
|
|
touch %{buildroot}%{_sharedstatedir}/%{name}/initramfs-rebuilt
|
|
|
|
|
|
%changelog
|
|
* Sun Jul 19 2026 Jonathan Wright <jonathan@almalinux.org> - 610.43.02-6
|
|
- Rebuild the initramfs on initial install so the GSP firmware is included,
|
|
avoiding a manual dracut -f after install
|
|
|
|
* Mon Jul 13 2026 Eduard Abdullin <eabdullin@almalinux.org> - 610.43.02-5
|
|
- Rebuild for new kernel
|
|
|
|
* Mon Jun 22 2026 Eduard Abdullin <eabdullin@almalinux.org> - 610.43.02-4
|
|
- Rebuild for new kernel
|
|
|
|
* Mon Jun 15 2026 Eduard Abdullin <eabdullin@almalinux.org> - 610.43.02-3
|
|
- Rebuild for new kernel
|
|
|
|
* Tue Jun 09 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 610.43.02-2
|
|
- Rebuild for new kernel
|
|
|
|
* Wed May 27 2026 almalinux-bot-nvidia <almalinux-bot-nvidia@almalinux.org> - 610.43.02-1
|
|
- Update to 610.43.02
|
|
|
|
* Mon May 25 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 595.71.05-2
|
|
- Rebuild for new kernel
|
|
|
|
* Tue Apr 28 2026 almalinux-bot-nvidia <almalinux-bot-nvidia@almalinux.org> - 595.71.05-1
|
|
- Update to 595.71.05
|
|
|
|
* Wed Mar 25 2026 almalinux-bot-nvidia <almalinux-bot-nvidia@almalinux.org> - 595.58.03-1
|
|
- Update to 595.58.03
|
|
|
|
* Fri Mar 06 2026 almalinux-bot-nvidia <almalinux-bot-nvidia@almalinux.org> - 595.45.04-1
|
|
- Update to 595.45.04
|
|
|
|
* Thu Feb 26 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 590.48.01-2
|
|
- Rebuild for new kernel
|
|
|
|
* Thu Dec 18 2025 almalinux-bot-nvidia <almalinux-bot-nvidia@almalinux.org> - 590.48.01-1
|
|
- Update to 590.48.01
|
|
|
|
* Thu Dec 18 2025 Eduard Abdullin <eabdullin@almalinux.org> - 590.44.01-2
|
|
- Rebuild for new kernel
|
|
|
|
* Wed Dec 03 2025 almalinux-bot-nvidia <almalinux-bot-nvidia@almalinux.org> - 590.44.01-1
|
|
- Update to 590.44.01
|
|
|
|
* Fri Nov 14 2025 Eduard Abdullin <eabdullin@almalinux.org> - 580.105.08-3
|
|
- Mark modules executable
|
|
|
|
* Thu Nov 13 2025 Eduard Abdullin <eabdullin@almalinux.org> - 580.105.08-2
|
|
- Rebuild for the new kernel version
|
|
|
|
* Thu Nov 06 2025 almalinux-bot-nvidia <almalinux-bot-nvidia@almalinux.org> - 580.105.08-1
|
|
- Update to 580.105.08
|
|
|
|
* Thu Nov 06 2025 Eduard Abdullin <eabdullin@almalinux.org> - 580.95.05-3
|
|
- Rebuild for new kernel
|
|
|
|
* Thu Oct 22 2025 Eduard Abdullin <eabdullin@almalinux.org> - 580.95.05-2
|
|
- Rebuild for new kernel
|
|
|
|
* Thu Oct 02 2025 Eduard Abdullin <eabdullin@almalinux.org> - 580.95.05-1
|
|
- Update to 580.95.05
|
|
|
|
* Thu Oct 02 2025 Eduard Abdullin <eabdullin@almalinux.org> - 580.82.07-3
|
|
- Rebuild for new kernel
|
|
|
|
* Wed Sep 03 2025 Jonathan Wright <jonathan@almalinux.org> - 580.82.07-1
|
|
- Update to 580.82.07
|
|
|
|
* Sun Aug 24 2025 Andrew Lukoshko <alukoshko@almalinux.org> - 580.65.06-3
|
|
- Rebuild for new kernel
|
|
|
|
* Mon Aug 04 2025 Neal Gompa <ngompa@almalinux.org> - 580.65.06-2
|
|
- Drop metapackage and add more Provides for NVIDIA repository compatibility
|
|
|
|
* Mon Aug 04 2025 Neal Gompa <ngompa@almalinux.org> - 580.65.06-1
|
|
- Update to 580.65.06
|
|
- Add nvidia-open metapackage for driver+userspace installation
|
|
|
|
* Fri Jul 04 2025 Jonathan Wright <jonathan@almalinux.org> - 575.64.03-1
|
|
- Add conditional to help prevent shipping unsigned (secure boot) packages
|
|
- update to 575.64.03
|
|
|
|
* Thu Jul 03 2025 Jonathan Wright <jonathan@almalinux.org> - 575.64-2
|
|
- rebuild for packaging error
|
|
|
|
* Fri Jun 27 2025 Jonathan Wright <jonathan@almalinux.org> - 575.64-1
|
|
- update to 575.64
|
|
|
|
* Fri May 30 2025 Jonathan Wright <jonathan@almalinux.org> - 570.153.02-2
|
|
- Update BR envsubst for EL9 compatibility
|
|
- Replace "egrep" with "grep -E" in build macros
|
|
|
|
* Mon May 26 2025 Neal Gompa <ngompa@almalinux.org> - 570.153.02-1
|
|
- Initial package
|