ubuntuusers.de

mokutil - Basics

Status: Ungelöst | Ubuntu-Version: Kubuntu 23.10 (Mantic Minotaur)
Antworten |

MasterQ

Avatar von MasterQ

Anmeldungsdatum:
12. März 2023

Beiträge: 197

Moin,

ich möchte das Signieren von speziellen Treibern mehr automatisieren, merke aber, dass ich nicht alles verstanden habe.

Konkret geht es um die vmware Treiber, die nach jedem Kernel Update neu kompiliert und damit auch neu signiert werden müssen.

zu meinen Fragen:

1
mokutils --password

Was macht das genau? Auch wenn ich so ein Passwort setze, fragt

1
mokutil --import foo.der

erneut.

Kann man ein Passwort auch nicht interactive setzen, also so was wie

1
mokutil --passwort "password"

oder

1
mokutil --import foo.der --password "blabla"

Beides ist so nicht dokumentiert und funktioniert auch nicht. Aber vielleicht geht es anders.

Mein Ziel ist es, am Ende ein Bash-Script zu haben, das alles was geht für die Treibersignierung erledigt.

Hier mal mein Entwurf, der soweit funktioniert, bis eben auf eine automatisierte Behandlung des Passwortes.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#! /bin/bash

# Erzeugt (neue) EFI Signatur der VMWare Module vmmon und vmnet

# mokutil Anwendung
MOKUTIL="/usr/bin/mokutil"
# Password, das beim Booten für jeweilige Aktion abgefragt wird
MOKPASSWD="vmware"
# Allgemeine Optionen für mokutil werden zusammengesetzt
#MOKOPTIONS=" --password "${MOKPASSWD}

# Basisfilename
MOKFILE="MOK"$(date --iso-8601='date')
# Extension in Großbuchstaben, um sie von exportierten Dateien unterscheiden zu können
MOKDER=${MOKFILE}".DER"
MOKPRIV=${MOKFILE}".PRIV"

MOKSETPASSWD=${MOKUTIL}" --password "${MOKPASSWD}
MOKUNSETPASSWD=${MOKUTIL}" --clear-password"

# Exportbefehl
#MOKEXPORT=${MOKUTIL}${MOKOPTIONS}" --export"
MOKEXPORT=${MOKUTIL}" --export"
# Importbefehl
MOKIMPORT=${MOKUTIL}" --import "${MOKDER}

# Password für zum Merken wird angezeigt
kdialog --msgbox "Aktuelles MOK Passwort \""${MOKPASSWD}"\""

# alle im BIOS verzeichneten Signaturen werden exportiert
# Extension hier immer ".der", d.h. kleingeschrieben
${MOKEXPORT}
echo ${MOKEXPORT}
#exit

# Suche die Datei mit dem Herausgeber VMware
DATEI=$(/usr/bin/find . -maxdepth 1 -name "MOK*.der" -exec grep -l "VMware" {} \;)+x
#DATEI=${DATEI+x}
#echo ${DATEI}

if [ -z ${DATEI} ] ; then
echo "alter Schlüssel gefunden in "${DATEI}", wird zum Löschen markiert!"
# den gefundenen Key im BIOS zur Löschung markieren
${MOKUTIL} --delete ${DATEI} ${MOKOPTIONS}
else
echo "kein alter Schlüssel gefunden"
fi


# neuen Key erzeugen
/usr/bin/openssl req -new -x509 -newkey rsa:2048 -keyout ${MOKPRIV} -outform DER -out ${MOKDER} -nodes -days 36500 -subj "/CN=VMware/"

# Treiberdateien signieren
/usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./${MOKPRIV} ./${MOKDER} $(modinfo -n vmmon)
/usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./${MOKPRIV} ./${MOKDER} $(modinfo -n vmnet)

# Treiberdateien zur Registrierung im BIOS markieren
${MOKIMPORT}

# exportierte MOK Dateien löschen
rm "MOK*.der"

echo "Reboot erforderlich"

Antworten |