Skip to content

Commit 7a5bdce

Browse files
authored
feat: cut over nvidia akmod signing key (#109)
This is the final PR for #100 . It should be merged at June 17, 2023 0000 UTC, as near as possible. Changes: - switches to new MOK/SecureBoot signing key for nvidia (already used by other akmods) - stops providing MOK public keys in ublue-os-nvidia-addons - updates messaging in README
1 parent 029369f commit 7a5bdce

File tree

6 files changed

+15
-26
lines changed

6 files changed

+15
-26
lines changed

.github/workflows/build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ jobs:
8383
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
8484
echo "Using test signing key"
8585
else
86-
echo "${{ secrets.AKMOD_PRIVKEY }}" > certs/private_key.priv
86+
echo "${{ secrets.AKMOD_PRIVKEY_20230518 }}" > certs/private_key.priv
8787
fi
8888
# DEBUG: get character count of key
8989
wc -c certs/private_key.priv

README.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,18 @@ rpm-ostree kargs \
7474
And then reboot one more time!
7575

7676
### 3. Enable Secure Boot support
77-
**IMPORTANT NOTE:** On June 17, 00:00 UTC, we will make a change to the key which is used to sign nvidia kernel modules. The new key is being made available May 17. The new key is `akmods-ublue.der` / `public_key.der.new` in the code blocks below. Until this document is updated to remove the old key, please import BOTH keys! This will ensure your SecureBoot system boots as expected after the cutover on June 17.
77+
**IMPORTANT NOTE:** On June 17, 00:00 UTC, we changed the key used to sign nvidia kernel modules. If your nvidia kernel modules are not loading, you need to import the new key.
7878

7979
[Secure Boot](https://rpmfusion.org/Howto/Secure%20Boot) support for the nvidia kernel modules can be enabled by enrolling the signing key:
8080

8181
```
82-
sudo mokutil --import /etc/pki/akmods/certs/akmods-nvidia.der
8382
sudo mokutil --import /etc/pki/akmods/certs/akmods-ublue.der
8483
```
8584

8685
Alternatively, the key can be enrolled from within this repo:
8786

8887
```
8988
sudo mokutil --import ./certs/public_key.der
90-
sudo mokutil --import ./certs/public_key.der.new
9189
```
9290

9391
## Rolling back and rebasing

build.sh

-2
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ modinfo /usr/lib/modules/${KERNEL_VERSION}/extra/${NVIDIA_PACKAGE_NAME}/nvidia{,
4545
sed -i "s@gpgcheck=0@gpgcheck=1@" /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container-runtime.repo
4646

4747
install -D /etc/pki/akmods/certs/public_key.der /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/public_key.der
48-
# copy new public key to facilitate user imports before switching
49-
install -Dm644 /tmp/certs/public_key.der.new /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/public_key.der.new
5048

5149
rpmbuild -ba \
5250
--define '_topdir /tmp/ublue-os-nvidia-addons/rpmbuild' \

certs/public_key.der

-22 Bytes
Binary file not shown.

certs/public_key.der.new

-1.49 KB
Binary file not shown.

ublue-os-nvidia-addons.spec

+13-20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Name: ublue-os-nvidia-addons
2-
Version: 0.6
2+
Version: 0.7
33
Release: 1%{?dist}
44
Summary: Additional files for nvidia driver support
55

@@ -9,61 +9,54 @@ URL: https://github.com/ublue-os/nvidia
99
BuildArch: noarch
1010
Supplements: mokutil policycoreutils
1111

12-
Source0: public_key.der
13-
Source1: nvidia-container-runtime.repo
14-
Source2: lukenukem-asus-linux.repo
15-
Source3: jhyub-supergfxctl-plasmoid.repo
16-
Source4: config-rootless.toml
17-
Source5: nvidia-container.pp
18-
Source6: environment
19-
Source7: public_key.der.new
12+
Source0: nvidia-container-runtime.repo
13+
Source1: lukenukem-asus-linux.repo
14+
Source2: jhyub-supergfxctl-plasmoid.repo
15+
Source3: config-rootless.toml
16+
Source4: nvidia-container.pp
17+
Source5: environment
2018

2119
%description
22-
Adds various runtime files for nvidia support. These include a key for importing with mokutil to enable secure boot for nvidia kernel modules
20+
Adds various runtime files for nvidia support.
2321

2422
%prep
2523
%setup -q -c -T
2624

2725

2826
%build
2927
# Have different name for *.der in case kmodgenca is needed for creating more keys
30-
install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der
31-
install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo
32-
install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo
28+
install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo
29+
install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo
3330
install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo
3431
install -Dm0644 %{SOURCE3} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml
3532
install -Dm0644 %{SOURCE4} %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
3633
install -Dm0644 %{SOURCE5} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/sway/environment
37-
install -Dm0644 %{SOURCE6} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
3834

3935
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/{lukenukem-asus-linux,jhyub-supergfxctl-plasmoid,nvidia-container-runtime}.repo
4036

41-
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der %{buildroot}%{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der
42-
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %{buildroot}%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
4337
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo %{buildroot}%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo
4438
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo %{buildroot}%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo
4539
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo %{buildroot}%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo
4640
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml %{buildroot}%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml
4741
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp %{buildroot}%{_datadir}/selinux/packages/nvidia-container.pp
4842

4943
%files
50-
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der
51-
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
5244
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo
5345
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo
5446
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo
5547
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml
5648
%attr(0644,root,root) %{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
5749
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/sway/environment
58-
%attr(0644,root,root) %{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der
59-
%attr(0644,root,root) %{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
6050
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo
6151
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo
6252
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo
6353
%attr(0644,root,root) %{_sysconfdir}/nvidia-container-runtime/config-rootless.toml
6454
%attr(0644,root,root) %{_datadir}/selinux/packages/nvidia-container.pp
6555

6656
%changelog
57+
* Sat Jun 17 2023 Benjamin Sherman <benjamin@holyarmy.org> - 0.7
58+
- Remove MOK keys; now provided by ublue-os-akmods-addons
59+
6760
* Sat Jun 17 2023 RJ Trujillo <eyecantcu@pm.me> - 0.6
6861
- Add supergfxctl-plasmoid COPR
6962

0 commit comments

Comments
 (0)