Instalați și semnați module de kernel personalizate pe bootarea securizată SLES 15

Un driver terț pe SUSE Linux Enterprise Server 15 se poate compila corect, dar se poate încărca fără a afișa mesajul „Cheia necesară nu este disponibilă” sau „Cheia a fost respinsă de serviciu”. Când UEFI Secure Boot impune semnăturile modulelor, soluția constă în semnarea modulului kernel personalizat cu un certificat de încredere, înscrierea certificatului respectiv prin gestionarea Machine Owner Key (MOK) și apoi încărcarea modulului normal, fără a dezactiva Secure Boot.

Această procedură presupune un sistem SLES 15 UEFI standard care utilizează shim SUSE, un kernel-defaultkernel, acces de administrator și o sursă de încredere pentru driverul dumneavoastră. Se referă la .komodulele personalizate, nu la semnarea unui kernel de înlocuire sau la modificarea cheilor platformei firmware. Exemplele urmează modelul de administrare SLES 15 SP6/SP7; verificați diferențele dintre pachet și varianta de kernel din pachetul service pack instalat.

1. Verificați mai întâi Secure Boot și kernelul care rulează

Conectați-vă cu acces administrativ și identificați kernelul pe care l-ați bootat efectiv. Un nume de pachet potrivit nu dovedește în sine că un modul se poate încărca în acel kernel.

uname -r
mokutil --sb-state
ls -ld "/lib/modules/$(uname -r)/build"
Terminal care afișează comanda uname -r, starea bootării securizate mokutil și o verificare a directorului de compilare a kernelului care rulează
Verificați versiunea activă a kernelului și starea Secure Boot înainte de a instala sau semna un driver.

Dacă mokutilraportează că Secure Boot este activat, o semnătură nesigură este o explicație probabilă pentru o eroare de încărcare legată de cheie. Dacă este dezactivată, investigați alte cauze înainte de a genera chei; impunerea explicită a semnăturii kernel poate fi, de asemenea, importantă. Verificați jurnalul kernelului după o încărcare eșuată pentru mesajul de respingere real.

sudo journalctl -k -b --no-pager | tail -n 50

Verificați modulul candidat înainte de a-l instala. Înlocuiți numele fișierului exemplu cu numele real; acesta vermagicar trebui să corespundă versiunii kernelului curent și proprietăților de compilare compatibile.

modinfo -F name /path/to/mydriver.ko
modinfo -F vermagic /path/to/mydriver.ko
Terminal care afișează o listă modinfo eșantion pentru un driver de kernel extern și o cale pentru instrumentul de semnare a kernelului
Verificați metadatele modulului, în special vermagic, în loc să presupuneți că vreun fișier .ko se va potrivi cu SLES 15.

2. Folosește un pachet de drivere acceptat sau construiește un modul corespunzător

Mai întâi, solicitați furnizorului de hardware sau software un pachet de module Kernel (KMP) compatibil cu SLES, deja semnat. Acest lucru este preferabil instalării manuale a unui fișier binar: furnizorul poate oferi gestionarea actualizărilor kernelului și un proces documentat de înscriere a certificatelor. O semnătură a furnizorului nu este automat acceptată pe fiecare mașină Secure Boot.

Dacă trebuie să compilați driverul, instalați fișierele de dezvoltare care corespund kernelului dvs. care rulează. Pentru varianta inițială kernel-default, pachetele SLES obișnuite includ pachetul implicit de dezvoltare a kernelului, fișierele de dezvoltare a kernelului și instrumentele de compilare. Disponibilitatea și versiunile repozitoriului depind de înregistrare și de modulele SLES activate.

sudo zypper install gcc make openssl mokutil kernel-devel kernel-default-devel
rpm -q kernel-default-devel kernel-devel
readlink -f "/lib/modules/$(uname -r)/build"
Terminal în stil SLES care afișează o instalare Zypper a cerințelor preliminare de dezvoltare și semnare a kernelului
Instalați pachetele de dezvoltare a kernelului și instrumentele criptografice corespunzătoare înainte de a lucra cu un modul personalizat.

Dacă directorul de compilare lipsește sau pachetul de dezvoltare vizează o altă versiune de kernel, remediați mai întâi nepotrivirea pachet/kernel. Un kernel nou instalat poate necesita o repornire controlată înainte de a construi pe baza acestuia.

Din directorul sursă al driverelor de încredere, utilizați instrucțiunile de compilare ale furnizorului. Pentru modulele convenționale bazate pe kbuild, comanda de mai jos se compilează pe baza kernelului care rulează; nu descarcă și nu creează un driver singură.

cd /path/to/driver-source
make -C "/lib/modules/$(uname -r)/build" M="$PWD" modules
Terminal care afișează comanda kbuild make care compilează un modul kernel extern pentru kernelul SLES care rulează
Folosește arborele de compilare a kernelului și directorul sursă al driverului pentru a produce un fișier .ko corespunzător.

Sari peste compilare dacă ai deja un fișier compatibil .kode la un furnizor de încredere. Nu forța niciodată încărcarea unui modul cu o semnătură greșită vermagic; o semnătură nu poate repara un fișier binar incompatibil.

3. Creați cheia de semnare și semnați modulul instalat

Generați o cheie RSA dedicată și un certificat X.509 într-un director exclusiv pentru utilizatorii rădăcină. Certificatul public va fi înscris; cheia privată trebuie să rămână protejată, deoarece oricine o controlează poate semna module suplimentare în care această mașină poate avea încredere.

sudo -i
umask 077
mkdir -p /root/module-signing
cd /root/module-signing
openssl req -new -x509 -newkey rsa:3072 -sha256 -days 3650 -nodes \
  -subj "/CN=SLES Custom Module Signing/" \
  -keyout MOK.priv -out MOK.pem
openssl x509 -in MOK.pem -outform DER -out MOK.der
chmod 600 MOK.priv
Terminal care afișează o comandă OpenSSL care creează o cheie privată RSA locală și un certificat X.509 pentru semnarea modulelor
Generați o pereche separată de chei pentru semnarea modulelor și păstrați cheia privată limitată la administrator.

-nodescreează o cheie privată necriptată pentru un exemplu simplu; pentru o conductă de semnare în producție, utilizați o cheie criptată protejată corespunzător sau un serviciu de semnare extern în cadrul politicii dvs. de securitate. Valabilitatea de zece ani prezentată aici este ilustrativă, nu o recomandare pentru durata de viață a certificatului organizațional.

Copiați modulul finalizat în directorul de module al kernelului în execuție. Semnați exact fișierul instalat după orice împachetare, eliminare sau alte modificări ale fișierului. Înlocuiți mydriverși calea sa cu numele de bază și locația reală a modulului.

install -D -m 0644 /path/to/mydriver.ko \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
SIGN_FILE="$(readlink -f /lib/modules/$(uname -r)/build)/scripts/sign-file"
test -x "$SIGN_FILE" || echo "Locate the sign-file binary for this kernel"
"$SIGN_FILE" sha256 /root/module-signing/MOK.priv \
  /root/module-signing/MOK.der \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
modinfo -F signer "/lib/modules/$(uname -r)/extra/mydriver.ko"
Terminal care prezintă un exemplu de invocare a fișierului de semnare și o inspecție a semnatarului modinfo pentru un modul kernel
Aplicați semnătura fișierului .ko instalat și verificați câmpul pentru semnatar înainte de a-l încărca.

Dacă sign-filelipsește pe acea cale, localizați instrumentul livrat împreună cu fișierele de compilare a kernelului corespunzătoare, în loc să copiați o versiune fără legătură. Un semnatar afișat înseamnă că fișierul conține metadate de semnătură; nu dovedește că semnatarul a fost înscris. Nu ștergeți și nu modificați niciodată modulul după semnare.

4. Înregistrați certificatul public folosind MOK

Importați certificatul public formatat DER — nu MOK.priv— și setați parola de înscriere unică solicitată de mokutil. Aranjați accesul la consolă înainte de repornire; autorizarea are loc în interfața MokManager la pornire, nu într-un shell SSH.

mokutil --import /root/module-signing/MOK.der
mokutil --list-new
reboot
Meniu de boot albastru în stil MokManager cu opțiunea Înregistrare MOK evidențiată deasupra altor opțiuni pentru Cheia Proprietarului Mașinii
În meniul de pornire UEFI, selectați Înregistrare MOK și confirmați înscrierea certificatului solicitat.

La următoarea pornire, alegeți Înregistrare MOK , urmați instrucțiunile de confirmare, introduceți parola de unică folosință și continuați pornirea. Aspectul meniului depinde de versiunea de firmware și shim. Revenirea la Linux fără confirmarea înregistrării lasă noul certificat nedeclarat de încredere.

După pornire, verificați dacă certificatul specific este înscris:

sudo mokutil --test-key /root/module-signing/MOK.der
sudo mokutil --list-enrolled

5. Încărcați modulul semnat și izolați erorile rămase

Actualizează metadatele dependențelor modulului și încarcă modulul după numele său, nu după calea completă a fișierului. modprobeRezolvă dependențele și respectă configurația standard a modulului.

sudo depmod -a
sudo modprobe mydriver
lsmod | grep -w mydriver
modinfo -F signer mydriver
Terminal care afișează comenzile modprobe, lsmod și kernel-log folosite pentru a verifica un modul semnat
Confirmați că modulul semnat apare în lista de module încărcate și verificați jurnalul kernelului pentru erori.

Dacă încărcarea tot eșuează, alegeți acțiunea corectivă care corespunde dovezilor:

  • Cheie respinsă sau cheia necesară nu este disponibilă: rulați din nou mokutil --test-key; confirmați că fișierul instalat este cel semnat și verificați dacă o actualizare a driverului l-a înlocuit.
  • Format de modul nevalid: comparați modinfo -F vermagiccu uname -r, reconstruiți pentru kernelul activ și verificați arhitectura procesorului.
  • Simbol necunoscut sau dependență lipsă: inspectați journalctl -k -b, modulele necesare ale furnizorului și ABI-ul kernelului; o altă semnătură nu va remedia simbolurile lipsă.

Pentru driverele de stocare sau de rețea critice pentru bootare, testați mai întâi pe un sistem care nu este de producție și asigurați-vă că este disponibilă o consolă de recuperare. Configurați încărcarea automată numai după ce driverul funcționează fiabil; documentele SUSE /etc/modules-load.d/pentru modulele care altfel nu se încarcă la detectarea dispozitivului.

Verificați rezultatul după o repornire

Reporniți încă o dată în fereastra de întreținere dacă încărcarea persistentă este importantă. Confirmați că Secure Boot rămâne activat, cheia publică este înscrisă, modulul este prezent și kernelul nu raportează nicio eroare nouă de verificare sau compatibilitate. Reconstruiți sau reinstalați și semnați versiunea actualizată .kodupă actualizările kernelului sau ale driverelor furnizorului.

mokutil --sb-state
sudo mokutil --test-key /root/module-signing/MOK.der
modinfo -F signer mydriver
lsmod | grep -w mydriver
sudo journalctl -k -b --no-pager | tail -n 30

Documentație principală: SUSE SLES 15 SP6: Chei UEFI și Machine Owner ; SUSE: Gestionarea modulelor kernel ; Kernel Linux: Facilitatea de semnare a modulelor ; Kernel Linux: Construirea de module externe . Ghidul de administrare SLES 15 SP6 a fost actualizat la 17 septembrie 2026; comportamentul comenzilor pentru instalatoarele de drivere terțe și versiunile de kernel neimplicite trebuie confirmat cu administratorii acestora.

Lasă un comentariu

Construiți un profil AutoYaST reutilizabil pentru instalările SLES 15

Construiți un profil AutoYaST reutilizabil pentru instalările SLES 15

Transformați un sistem SLES 15 existent într-un profil AutoYaST revizuit, validați-l și utilizați-l pentru a implementa un server de testare cu mai puțini pași manuali.

Configurarea KVM SLES 15: Pornirea mașinilor virtuale selectate la pornire

Configurarea KVM SLES 15: Pornirea mașinilor virtuale selectate la pornire

Instalați instrumentele SLES 15 KVM și libvirt, activați serviciul gazdă corect și configurați mașinile virtuale selectate pentru a porni după o repornire.

Automatizați copiile de rezervă Nextcloud consistente cu Restic și Cron

Automatizați copiile de rezervă Nextcloud consistente cu Restic și Cron

Fă copii de rezervă ale fișierelor Nextcloud și MariaDB împreună, programează snapshot-uri Restic criptate cu cron și verifică recuperarea fără a risca serverul activ.

Copierea de rezervă și restaurarea unei cutii poștale Zimbra CE utilizând exporturile TGZ

Copierea de rezervă și restaurarea unei cutii poștale Zimbra CE utilizând exporturile TGZ

Exportați o cutie poștală individuală Zimbra Community Edition, validați copia de rezervă TGZ și restaurați elementele lipsă fără a suprascrie e-mailurile existente.

Permiteți utilizatorilor aprobați să creeze Jitsi Rooms cu autentificarea Keycloak

Permiteți utilizatorilor aprobați să creeze Jitsi Rooms cu autentificarea Keycloak

Permiteți doar conturilor aprobate să deschidă săli Jitsi Meet folosind Keycloak și autentificarea prin token, menținând în același timp posibilitatea participării invitaților atunci când este nevoie.

Sincronizați utilizatorii Active Directory cu ONLYOFFICE DocSpace prin LDAP

Sincronizați utilizatorii Active Directory cu ONLYOFFICE DocSpace prin LDAP

Conectați ONLYOFFICE DocSpace la Active Directory sau OpenLDAP, importați utilizatori și grupuri în siguranță, mapați câmpurile contului și programați o sincronizare fiabilă.

Adăugați fonturi pe serverul de documente ONLYOFFICE: Docker vs Linux

Adăugați fonturi pe serverul de documente ONLYOFFICE: Docker vs Linux

Instalați fonturi personalizate în ONLYOFFICE Document Server, comparați montările persistente din Docker cu copii directe, reconstruiți lista de fonturi și verificați rezultatul.

Puneți documentele ONLYOFFICE în spatele HAProxy fără a afecta editarea

Puneți documentele ONLYOFFICE în spatele HAProxy fără a afecta editarea

Configurați HAProxy HTTPS, anteturile de redirecționare, timeout-urile WebSocket și verificările de funcționare pentru ONLYOFFICE Docs, apoi verificați editarea și salvările.

Instalați și semnați module de kernel personalizate pe bootarea securizată SLES 15

Instalați și semnați module de kernel personalizate pe bootarea securizată SLES 15

Încărcați un modul kernel SLES 15 personalizat fără a dezactiva Secure Boot. Corelați kernelul care rulează, semnați fișierul .ko, înscrieți o cheie MOK și verificați încărcarea.

Redirecționare securizată SLES Syslog cu rsyslog și Mutual TLS

Redirecționare securizată SLES Syslog cu rsyslog și Mutual TLS

Trimiteți jurnalele de sistem SLES către un colector rsyslog la distanță prin TLS autentificat, cu verificări ale certificatelor, memorare temporară în caz de întreruperi și teste de livrare.