DKMS Modul Signierung bei UEFI Boot

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

VirtualBox Installation und Konfiguration unter EFI Secure Boot

Überprüfen auf EFI Secure Boot

Falls Ihr System EFI Secure Boot verwendet, müssen Sie die VirtualBox-Kernel-Module signieren. So gehen Sie vor:

Erstellen von Signierschlüsseln

Installieren Sie `mokutil` und erstellen Sie die Schlüssel:

sudo apt-get install mokutil
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 365 -subj "/CN=VirtualBox/"
sudo mokutil --import MOK.der

Dieser Befehl wird Sie auffordern, ein Passwort zu erstellen. Merken Sie sich dieses Passwort, da Sie es nach dem Neustart benötigen werden.

Neustarten und Schlüssel einschreiben

Starten Sie Ihr System neu. Während des Boot-Vorgangs gelangen Sie in den MOK-Manager. Folgen Sie den Anweisungen, um den MOK (Machine Owner Key) einzuschreiben, den Sie gerade erstellt haben. Verwenden Sie das zuvor erstellte Passwort.

Signieren der Kernel-Module

Nach dem Neustart signieren Sie die VirtualBox-Module:

sudo -i 
apt-get install kmod
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)

Automatisierung der Signierung mit DKMS

Um die Signierung der Module nach einem DKMS-Update zu automatisieren, erstellen Sie ein Skript und eine DKMS-Hook-Datei:

Erstellen eines Signierskripts

Erstellen Sie ein Skript unter `/usr/local/bin/sign-vbox-modules.sh`:

sudo nano /usr/local/bin/sign-vbox-modules.sh

Fügen Sie folgendes in das Skript ein:

#!/bin/bash

KERNEL_VERSION=$(uname -r)
MODULES=("vboxdrv" "vboxnetflt" "vboxnetadp" "vboxpci")
KEY_DIR="/path/to/your/keys" # Pfad anpassen
PRIV_KEY="$KEY_DIR/MOK.priv"
DER_KEY="$KEY_DIR/MOK.der"

for module in "${MODULES[@]}"; do
    MODULE_PATH=$(modinfo -n $module)
    /usr/src/linux-headers-$KERNEL_VERSION/scripts/sign-file sha256 $PRIV_KEY $DER_KEY $MODULE_PATH
done

echo "Modules signed successfully"

Machen Sie das Skript ausführbar:

sudo chmod +x /usr/local/bin/sign-vbox-modules.sh

Erstellen einer DKMS-Hook-Datei

Erstellen Sie eine Hook-Datei unter `/etc/dkms/sign-vbox-modules.conf`:

sudo nano /etc/dkms/sign-vbox-modules.conf

Fügen Sie folgendes in die Datei ein:

PACKAGE_NAME="vbox"
PACKAGE_VERSION="*"
BUILT_MODULE_NAME[0]="vboxdrv"
BUILT_MODULE_LOCATION[0]="vboxdrv"
DEST_MODULE_LOCATION[0]="/extra"
AUTOINSTALL="yes"
POST_BUILD="sudo /usr/local/bin/sign-vbox-modules.sh"

Laden der Module

Sobald die Module signiert sind, laden Sie sie:

sudo modprobe vboxdrv
sudo modprobe vboxnetflt
sudo modprobe vboxnetadp
sudo modprobe vboxpci

Überprüfung der Installation

Überprüfen Sie, ob VirtualBox funktioniert, indem Sie es aus dem Menü starten oder folgendes ausführen:

virtualbox

Falls Sie während dieser Schritte auf Probleme stoßen, geben Sie die spezifischen Fehlermeldungen an, damit weitere Unterstützung geleistet werden kann.