Linux auf neuer Hardware. Neuester Kernel?

Vielen Dank für eure Hilfe. Ubuntu läuft :)
 
  • Gefällt mir
Reaktionen: gimmix
SirKhan schrieb:
Für meine 9070XT musste ich auch bei Mint 22.1 auf den (damals) v6.13-Kernel updaten. Auf dem selben weg kann man auch den v6.14 installieren:
Möchte mich noch mal bei Dir bedanken.

ubuntu lief zwar, aber war nicht so meins.
Hab jetzt Linux Mint 22.1 installiert, und dann den Kernel 6.14.
Musste zwar wie erwähnt Secure Boot deaktivieren und die PIN neu einrichten, aber ansonsten läuft bisher alles.
Schreibe jetzt das hier auch unter Linux.

Den Kernel signieren würde ich gerne, aber die Anleitung dazu ist schon aufwändig.
Geht das nicht einfacher?
 
  • Gefällt mir
Reaktionen: SirKhan
Die Anleitung sieht schlimmer aus als es ist.
Ich hab das jetzt nicht ausprobiert, aber im Prinzip ist es folgendes:

  1. Config anlegen
    nano MOK.conf
    mit Inhalt
    INI:
    # This definition stops the following lines choking if HOME isn't
    # defined.
    HOME                    = .
    RANDFILE                = $ENV::HOME/.rnd
    [ req ]
    distinguished_name      = req_distinguished_name
    x509_extensions         = v3
    string_mask             = utf8only
    prompt                  = no
    
    [ req_distinguished_name ]
    countryName             = DE
    stateOrProvinceName     = Haus
    localityName            = Daheim
    0.organizationName      = Server
    commonName              = Secure Boot Signing
    emailAddress            = im.prinzip@egal.lan
    
    [ v3 ]
    subjectKeyIdentifier    = hash
    authorityKeyIdentifier  = keyid:always,issuer
    basicConstraints        = critical,CA:FALSE
    extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6
    nsComment               = "OpenSSL Generated Certificate"
  2. Den public und private Key erzeugen
    openssl req -config ./MOK.conf -new -x509 -newkey rsa:2048 -nodes -days 36500 -outform DER -keyout "MOK.priv" -out "MOK.der" (eine lange Zeile!)
    Das ganze erzeugt einen Output mit vielen + und . Zeichen. Das ist normal.
    Falls ein Fehler wie Can't load /home/<username>/.rnd into RNG kommt, dieser kann ignoriert werden oder mit openssl rand -writerand ~/.rnd behoben werden. Danach nochmal den obigen Befehl ausführen.
  3. Den Key dem System bekannt machen
    sudo mokutil --import MOK.der
    Dabei ein beliebiges, kurzes, Passwort festlegen (wird denk ich nur einmal danach verwendet)
    Danach neustarten sudo reboot
    Und nun beim Booten "Enroll MOK" wählen und mit dem Passwort von gerade eben bestätigen.
  4. Den Key umwandeln, damit er für den Kernel verwendet werden kann
    openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  5. Und schließlich den Kernel signieren:
    sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-generic --output /boot/vmlinuz-[KERNEL-VERSION]-generic.signed
    Hier muss dann der richtige Kernelname verwendet werden. Evtl mit ls /boot/vmlinuz-* mal schauen was in dem Ordner so liegt.
  6. Dann wohl noch initrd kopieren:
    sudo cp /boot/initrd.img-[KERNEL-VERSION]-generic{,.signed}
  7. Grub aktualisieren
    sudo update-grub
    Und neustarten
    sudo reboot
Hier ist es nochmal speziell für den Kernel erklärt: https://gloveboxes.github.io/Ubuntu-for-Azure-Developers/docs/signing-kernel-for-secure-boot.html

Wie gesagt, hab ich jetzt nicht ausprobiert. Sollte aber funktionieren.
Immerhin müssen die meisten Schritte nur einmal gemacht werden. Wenn du dann nochmal den Kernel tauscht, muss nur noch ab 5. nochmal gemacht werden.

Edit: Bugfixes. So funktioniert es nun.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Arboster
Unbutu 24.04.2 erkennt WLan, nach ein paar Updates erkennt es auch ein LAN-Netzwerk. Hab das gleiche Mainboard und musste erst mit WLAN leben.
 
SirKhan schrieb:
  1. Den public und private Key erzeugen
    openssl req -config ./openssl.cnf -new -x509 -newkey rsa:2048 -nodes -days 36500 -outform DER -keyout "MOK.priv" -out "MOK.der" (eine lange Zeile!)
da kommt:
arboster@BigMint:~$ openssl req -config ./openssl.cnf -new -x509 -newkey rsa:2048 -nodes -days 36500 -outform DER -keyout "MOK.priv" -out "MOK.der"
Can't open "./openssl.cnf" for reading, No such file or directory
40274A9EB17C0000:error:80000002:system library:BIO_new_file:No such file or directory:../crypto/bio/bss_file.c:67:calling fopen(./openssl.cnf, r)
40274A9EB17C0000:error:10000080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:75:

Muss ich in ein anderes Verzeichnis?
Die openssl.cnf finde ich in:
1744381100431.png
 
Ah, sorry, ich hab die Datei umbenannt (in 1.) aber das in 2. nicht beachtet. Hab es korrigiert. Sollte
openssl req -config ./MOK.conf -new -x509 -newkey rsa:2048 -nodes -days 36500 -outform DER -keyout "MOK.priv" -out "MOK.der" heißen.
 
  • Gefällt mir
Reaktionen: Arboster
@SirKhan Danke, jetzt kommt:

arboster@BigMint:~$ openssl req -config ./MOK.conf -new -x509 -newkey rsa:2048 -nodes -days 36500 -outform DER -keyout "MOK.priv" -out "MOK.der"
Can't load /home/arboster/.rnd into RNG
40874EEDFB7A0000:error:12000079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:106:Filename=/home/arboster/.rnd
..+..+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+.+............+........+.......+..+...+.+..+............+...+...+....+.....+...+....+...+...+........+......+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...+.........+...+........+.+...+.....+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.+...+.+.........+...........+....+......+.....+...+.+..+....+........+...+...+.+......+..+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....+............+............+.+..+.......+.....+.......+...+...........+.+...+...+.........+......+...+......+......+..+...+.........+..................+.......+.....+...+.............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+..+..........+..+...+......+............+...+....+..+.+..+.+......+.....+......+...+.........+...+...+....+......+.............................+.+..+....+...+.....+.+.....+..........+......+......+.....+.........+...+...+...+.+......+...+.........+...............+........+....+...+.....+......+......+...+......+.........+.+..+............+............+......+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
 
Kommt bei mir auch. Aber wenn du ls -la eintippst, siehst du, dass er die Dateien erzeugt hat. (Die ganzen . und + Zeichen deuten auch darauf hin, die sind tatsächlich normal).
D.h. du kannst weitermachen.
 
Zuletzt bearbeitet:
@SirKhan Ja, die Dateien sind da
1744383660215.png

Dann mache ich mal weiter.
Ergänzung ()

@SirKhan

Was habe ich hier falsch gemacht?:

arboster@BigMint:~$ sudo cp /boot/initrd.img- vmlinuz-6.14.0-061400-generic{,.signed}
cp: Ziel 'vmlinuz-6.14.0-061400-generic.signed': Datei oder Verzeichnis nicht gefunden
arboster@BigMint:~$
 
Zuletzt bearbeitet:
Kannst du mal den Output von ls /boot/initrd.img* schreiben?
Aber der Befehl sollte eher so aussehen wie sudo cp /boot/initrd.img-6.14.0-061400-generic{,.signed}
 
@SirKhan
arboster@BigMint:~$ ls /boot/initrd.img*
/boot/initrd.img /boot/initrd.img-6.8.0-57-generic
/boot/initrd.img-6.14.0-061400-generic /boot/initrd.img.old
/boot/initrd.img-6.8.0-51-generic


Edit:

arboster@BigMint:~$ sudo cp /boot/initrd.img-6.14.0-061400-generic{,.signed}
[sudo] Passwort für arboster:
 
Genau, probier mal den Befehl von #32
 
@SirKhan Lief jetzt alles ohne Fehler durch.
Aber nach dem Reboot habe ich Secure Boot im Bios wieder aktiviert (sollte ja jetzt gehen) und Linux startet nicht: Falsche Shim-Signatur
 
Ich schau mal, ob ich mein Mint mit einem ext. Gehäuse zum Laufen bekommen kann. Ich musste meinen zweiten M.2-Slot für eine 10G-Netzwerkkarte opfern.
Dann probier ich das auch mal aus.
 
@SirKhan Wenn ich Dir irgend was gutes tun kann, sag mir wie. Ich bin Dir sehr dankbar.
Bin jetzt erst mal paar Stunden offline. War ein anstrengender Tag heute.
 
⚠️
Ich habe den Fehler gefunden, nachdem bei mir das gleiche war.
Die Zeile extendedKeyUsage = codeSigning,1.3.6.1.4.1.311.10.3.6,1.3.6.1.4.1.2312.16.1.2 in der Config erlaubt zu viel. Es erlaubt Kernel und Kernelmodule. Aber Grub ist super pedantisch. Wenn da mehr erlaubt ist, als nur Kernel, dann klappt es nicht.
Die richtige Zeile muss also nur extendedKeyUsage = codeSigning,1.3.6.1.4.1.311.10.3.6 lauten.

Damit klappt dann alles. Ich habe es oben auch ausgebessert.

Leider muss (sollte) man davor etwas aufräumen. Und zwar bevor irgendeine Datei überschrieben wird.
Zuerst den falschen MOK löschen:
sudo mokutil --delete MOK.der
Passwort
sudo reboot
Und ähnlich wie beim "Enroll MOK" diesmal "Delete MOK" oder sowas wählen.
Wenn Linux dann wieder startet, kann man mit
sudo mokutil --list-enrolled
gucken, ob nur noch der default-Key drinnen ist ([key 1] von Canonical Ltd.).

Danach muss man die Config ändern (extendedKeyUsage) und nochmal alles durchnudeln (inkl. erneutem Enroll MOK).
Btw. die Warning mit der .rnd-Datei kann man wegbekommen, wenn man davor noch openssl rand -writerand ~/.rnd ausführt.

Nun bin ich stolzer Nutzer eines signierten 6.14er Kernels und aktiviertem Secure Boot
Code:
> uname -r
6.14.2-061402-generic
> mokutil --sb-state
SecureBoot enabled
 
  • Gefällt mir
Reaktionen: Arboster
@SirKhan 1000 Dank!
Ich werde das Morgen noch mal machen und mich dann natürlich noch mal melden.
Für heute bin ich zu platt, will keine Fehler machen.
 
  • Gefällt mir
Reaktionen: SirKhan
Jupp. Ist klar. Ich bin gespannt auf morgen :)
 
Zurück
Oben