Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: merge akmods and main #250

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ jobs:

build-nvidia:
runs-on: ubuntu-24.04
needs: build-base
# needs: build-base
if: ${{ !cancelled() }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -210,8 +210,7 @@ jobs:
FEDORA_VERSION=${{ env.FEDORA_VERSION }}
FEDORA_EDITION=${{ matrix.fedora-edition }}
BASE_TAG=${{ steps.generate-base-image-tag.outputs.base-tag }}
${{ matrix.nvidia-type == 'open' && format('NVIDIA_AKMODS_IMAGE={0}', 'ghcr.io/rsturla/akmods/nvidia-open') || '' }}
NVIDIA_AKMODS_TAG=${{ matrix.fedora-version }}
COREOS_KERNEL=${{ env.COREOS_KERNEL }}

- name: Rechunk
id: rechunk
Expand Down
4 changes: 1 addition & 3 deletions Containerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,4 @@ COPY scripts/ /tmp/scripts

RUN chmod +x /tmp/scripts/*.sh /tmp/scripts/_${FEDORA_EDITION}/*.sh && \
/tmp/scripts/setup.sh --base ${FEDORA_EDITION} && \
/tmp/scripts/cleanup.sh --base ${FEDORA_EDITION} \
&& \
bootc container lint
/tmp/scripts/cleanup.sh --base ${FEDORA_EDITION}
32 changes: 22 additions & 10 deletions Containerfile.nvidia
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,27 @@ ARG FEDORA_EDITION=base

ARG BASE_IMAGE=ghcr.io/rsturla/eternal-linux/main/${FEDORA_EDITION}
ARG BASE_TAG=${FEDORA_VERSION}
ARG BASE_IMAGE_FULL=${BASE_IMAGE}:${BASE_TAG}
ARG BASE_IMAGE_FULL=${BASE_IMAGE}:41
ARG COREOS_KERNEL="N/A"

ARG NVIDIA_AKMODS_IMAGE=ghcr.io/rsturla/akmods/nvidia
ARG NVIDIA_AKMODS_TAG=${FEDORA_VERSION}
FROM ${BASE_IMAGE_FULL} AS builder

ARG FEDORA_VERSION
ARG FEDORA_KERNEL_FLAVOR
ARG COREOS_KERNEL

COPY kmods/_certs /tmp/certs
COPY kmods/nvidia-open/scripts /tmp/scripts
COPY kmods/nvidia-open/*.spec /tmp/rpm-specs/
COPY kmods/nvidia-open/build-files /tmp/files

RUN chmod +x /tmp/scripts/*.sh && \
/tmp/scripts/001-install-build-deps.sh && \
/tmp/scripts/002-build.sh && \
/tmp/scripts/999-final.sh

RUN rpm -ql /rpms/*.rpm

FROM ${NVIDIA_AKMODS_IMAGE}:${NVIDIA_AKMODS_TAG} as akmods-nvidia


FROM ${BASE_IMAGE_FULL} as base-nvidia
Expand All @@ -19,9 +33,9 @@ ARG FEDORA_VERSION
COPY files/_nvidia /
COPY scripts /tmp/scripts

COPY --from=akmods-nvidia /rpms /tmp/akmods/rpms
COPY --from=akmods-nvidia /info /tmp/akmods/info
COPY --from=akmods-nvidia /scripts /tmp/akmods/scripts
COPY --from=builder /rpms /tmp/akmods/rpms
COPY --from=builder /info /tmp/akmods/info
COPY --from=builder /scripts /tmp/akmods/scripts

RUN chmod +x /tmp/akmods/scripts/*.sh && \
chmod +x /tmp/scripts/*.sh \
Expand All @@ -32,6 +46,4 @@ RUN chmod +x /tmp/akmods/scripts/*.sh && \
&& \
./tmp/scripts/cleanup.sh \
&& \
echo "import '/usr/share/eternal/nvidia.just'" >> /usr/share/eternal/justfile \
&& \
bootc container lint
echo "import '/usr/share/eternal/nvidia.just'" >> /usr/share/eternal/justfile
52 changes: 52 additions & 0 deletions kmods/_certs/private_key.priv.local
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
GbjJ7AvBrwyc6DwvxcfFS0nIZd1TWCM=
-----END PRIVATE KEY-----
Binary file added kmods/_certs/public_key.der
Binary file not shown.
Binary file added kmods/_certs/public_key.der.local
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
enable eternal-nvctk-cdi.service
11 changes: 11 additions & 0 deletions kmods/nvidia-open/build-files/eternal-nvctk-cdi.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[Unit]
Description=Eternal Linux Nvidia container toolkit CDI auto-generate
ConditionFileIsExecutable=/usr/bin/nvidia-ctk
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

[Install]
WantedBy=multi-user.target
64 changes: 64 additions & 0 deletions kmods/nvidia-open/nvidia-open.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
Name: nvidia-addons
Version: 0.4
Release: 1%{?dist}
Summary: Additional files for nvidia driver support

License: MIT
URL: https://github.com/rsturla/eternal-linux/akmods/nvidia

BuildArch: noarch
Supplements: mokutil policycoreutils

Source0: negativo17-fedora-nvidia.repo
Source1: public_key.der
Source2: nvidia-container-toolkit.repo
Source3: nvidia-container.pp
Source4: eternal-nvctk-cdi.service
Source5: 01-eternal-nvctk-cdi.preset

%description
Adds various runtime files for nvidia support. These include a key for importing with mokutil to enable secure boot for nvidia kernel modules

%prep
%setup -q -c -T


%build
install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/pki/akmods/certs/eternal-akmods.der
install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
install -Dm0644 %{SOURCE3} %{buildroot}%{_datadir}/eternal-linux/%{_datadir}/selinux/packages/nvidia-container.pp
install -Dm0644 %{SOURCE4} %{buildroot}%{_datadir}/eternal-linux/%{_unitdir}/eternal-nvctk-cdi.service
install -Dm0644 %{SOURCE5} %{buildroot}%{_presetdir}/01-eternal-nvctk-cdi.preset

sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo

install -Dm0644 %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo %{buildroot}%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
install -Dm0644 %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/pki/akmods/certs/eternal-akmods.der %{buildroot}%{_sysconfdir}/pki/akmods/certs/eternal-akmods.der
install -Dm0644 %{buildroot}%{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo %{buildroot}%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
install -Dm0644 %{buildroot}%{_datadir}/eternal-linux/%{_datadir}/selinux/packages/nvidia-container.pp %{buildroot}%{_datadir}/selinux/packages/nvidia-container.pp
install -Dm0644 %{buildroot}%{_datadir}/eternal-linux/%{_unitdir}/eternal-nvctk-cdi.service %{buildroot}%{_unitdir}/eternal-nvctk-cdi.service

%files
%attr(0644,root,root) %{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
%attr(0644,root,root) %{_datadir}/eternal-linux/%{_sysconfdir}/pki/akmods/certs/eternal-akmods.der
%attr(0644,root,root) %{_datadir}/eternal-linux/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
%attr(0644,root,root) %{_datadir}/eternal-linux/%{_datadir}/selinux/packages/nvidia-container.pp
%attr(0644,root,root) %{_datadir}/eternal-linux/%{_unitdir}/eternal-nvctk-cdi.service
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
%attr(0644,root,root) %{_sysconfdir}/pki/akmods/certs/eternal-akmods.der
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
%attr(0644,root,root) %{_datadir}/selinux/packages/nvidia-container.pp
%attr(0644,root,root) %{_unitdir}/eternal-nvctk-cdi.service
%attr(0644,root,root) %{_presetdir}/01-eternal-nvctk-cdi.preset

%changelog
* Fri Jun 21 2024 Robert Sturla <[email protected]>
- switch to Negativo17

* Mon Dec 11 2023 Robert Sturla <[email protected]>
- add eternal-nvctk-cdi service to autogenerate Nvidia CDI device files

* Sat May 27 2023 Robert Sturla <[email protected]>
- Initial build
22 changes: 22 additions & 0 deletions kmods/nvidia-open/scripts/000-replace-kernel.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash

set -euox pipefail

COREOS_KERNEL=${COREOS_KERNEL}

if [[ "$COREOS_KERNEL" == "N/A" ]]; then
exit 0
fi

KERNEL_VERSION=$COREOS_KERNEL
KERNEL_MAJOR_MINOR_PATCH=$(echo $KERNEL_VERSION | cut -d '-' -f 1)
KERNEL_RELEASE=$(echo $KERNEL_VERSION | cut -d '-' -f 2 | rev | cut -d '.' -f 2- | rev)
ARCH=$(uname -m)

dnf remove -y kernel{,-core,-modules,-modules-core,-modules-extra}
dnf install -y \
https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/$ARCH/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.$ARCH.rpm \
https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/$ARCH/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.$ARCH.rpm \
https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/$ARCH/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.$ARCH.rpm \
https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/$ARCH/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.$ARCH.rpm \
https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/$ARCH/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.$ARCH.rpm
47 changes: 47 additions & 0 deletions kmods/nvidia-open/scripts/001-install-build-deps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env bash

set -oeux pipefail

### PREPARE REPOS
ARCH="$(rpm -E '%_arch')"
RELEASE="$(rpm -E '%fedora')"

dnf install -y fedora-repos-archive
curl -L https://negativo17.org/repos/fedora-nvidia.repo \
-o /etc/yum.repos.d/negativo17-fedora-nvidia.repo

sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/fedora-cisco-openh264.repo
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/fedora-updates-archive.repo

# enable RPMs with alternatives to create them in this image build
mkdir -p /var/lib/alternatives

dnf install -y \
akmods \
mock \
ruby-devel \
dnf-plugins-core \
rpmrebuild \
sbsigntools \
openssl \
gcc \
make \
rubygems \
rpm-build

gem install fpm --no-user-install --clear-sources

if [[ ! -s "/tmp/certs/private_key.priv" ]]; then
echo "WARNING: Using test signing key. Run './generate-akmods-key' for production builds."
cp /tmp/certs/private_key.priv{.local,}
cp /tmp/certs/public_key.der{.local,}
fi

install -Dm644 /tmp/certs/public_key.der /etc/pki/akmods/certs/public_key.der
install -Dm644 /tmp/certs/private_key.priv /etc/pki/akmods/private/private_key.priv

# protect against incorrect permissions in tmp dirs which can break akmods builds
chmod 1777 /tmp /var/tmp

# create directories for later copying resulting artifacts
mkdir -p /var/cache/rpms
63 changes: 63 additions & 0 deletions kmods/nvidia-open/scripts/002-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/bin/sh

set -oeux pipefail

RELEASE="$(rpm -E '%fedora.%_arch')"

# Build NVIDIA drivers
dnf install -y \
akmod-nvidia*.fc${RELEASE}

KERNEL_VERSION="$(rpm -q kernel-core --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')"
NVIDIA_AKMOD_VERSION="$(basename "$(rpm -q "akmod-nvidia" --queryformat '%{VERSION}-%{RELEASE}')" ".fc${RELEASE%%.*}")"

# Build the open source kernel module
sed -i "s/^MODULE_VARIANT=.*/MODULE_VARIANT=kernel-open/" /etc/nvidia/kernel.conf

akmods --force --kernels "${KERNEL_VERSION}" --kmod "nvidia"

modinfo /usr/lib/modules/${KERNEL_VERSION}/extra/nvidia/nvidia{,-drm,-modeset,-peermem,-uvm}.ko.xz > /dev/null || \
(cat /var/cache/akmods/nvidia/${NVIDIA_AKMOD_VERSION}-for-${KERNEL_VERSION}.failed.log && exit 1)

# View license information
modinfo -l /usr/lib/modules/${KERNEL_VERSION}/extra/nvidia/nvidia{,-drm,-modeset,-peermem,-uvm}.ko.xz

# Build nvidia-addons
ADDONS_DIR="/tmp/rpm-specs/nvidia-addons"
mkdir -p ${ADDONS_DIR}/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS,tmp}
curl -Lo ${ADDONS_DIR}/rpmbuild/SOURCES/nvidia-container-toolkit.repo https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
curl -Lo ${ADDONS_DIR}/rpmbuild/SOURCES/nvidia-container.pp https://raw.githubusercontent.com/NVIDIA/dgx-selinux/master/bin/RHEL9/nvidia-container.pp
cp /etc/yum.repos.d/negativo17-fedora-nvidia.repo ${ADDONS_DIR}/rpmbuild/SOURCES/negativo17-fedora-nvidia.repo
mv /tmp/files/* ${ADDONS_DIR}/rpmbuild/SOURCES/

sed -i "s@gpgcheck=0@gpgcheck=1@" ${ADDONS_DIR}/rpmbuild/SOURCES/nvidia-container-toolkit.repo

install -D /etc/pki/akmods/certs/public_key.der ${ADDONS_DIR}/rpmbuild/SOURCES/public_key.der

rpmbuild -ba \
--define "_topdir ${ADDONS_DIR}/rpmbuild" \
--define '%_tmppath %{_topdir}/tmp' \
${ADDONS_DIR}/../nvidia-addons.spec

mkdir -p /var/cache/rpms

for rpm in $(find /var/cache/akmods/ -type f -name \*.rpm); do
cp "${rpm}" /var/cache/rpms/;
done

for rpm in $(find ${ADDONS_DIR}/rpmbuild/RPMS/"$(uname -m)"/ -type f -name \*.rpm); do
cp "${rpm}" /var/cache/rpms/;
done

for rpm in $(find ${ADDONS_DIR}/rpmbuild/RPMS/noarch/ -type f -name \*.rpm); do
cp "${rpm}" /var/cache/rpms/;
done

find /var/cache/rpms

# Create a file with the variables needed for the next steps
cat <<EOF > /var/cache/akmods/nvidia-vars
KERNEL_VERSION=${KERNEL_VERSION}
RELEASE=${RELEASE}
NVIDIA_AKMOD_VERSION=${NVIDIA_AKMOD_VERSION}
EOF
28 changes: 28 additions & 0 deletions kmods/nvidia-open/scripts/999-final.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env bash

set -oeux pipefail

mkdir -p /rpms
for rpm in $(find /var/cache/rpms -name '*.rpm'); do
echo "Copying $rpm..."
cp -a $rpm /rpms
done

kernel_version=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel-core | head -n 1)

sed -i -e 's/args = \["rpmbuild", "-bb"\]/args = \["rpmbuild", "-bb", "--buildroot", "#{build_path}\/BUILD"\]/g' /usr/local/share/gems/gems/fpm-*/lib/fpm/package/rpm.rb;

for rpm in $(find /rpms -type f -name \*.rpm); do
basename="$(basename ${rpm})"
# Remove kernel version from the RPM name (e.g. kmod-nvidia-6.11.3-300.fc41.x86_64-3:560.35.03-2.fc41.x86_64 -> kmod-nvidia-3:560.35.03-2.fc41.x86_64)
name=$(echo ${basename} | sed -r "s/(-${kernel_version})//g")

if [[ "$basename" == *"$kernel_version"* ]]; then
echo "Processing $rpm with kernel version $kernel_version..."
fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm};
else
echo "Skipping $rpm as it does not contain kernel version $kernel_version..."
fi
done

ls -l /rpms
Loading