web-dev-qa-db-fra.com

Comment signer un module de noyau Ubuntu 18.04

Je suis nouveau à utiliser Ubuntu. J'essaie d'installer Genymotion afin que je puisse avoir accès à un Android émulateur. Pour utiliser GENYMOTION, il est nécessaire que je n'ai pas de VirtualBox. J'ai installé VirtualBox, mais il semble que j'ai besoin comme si j'avais besoin de Signez un module kernal ... et je ne suis vraiment pas sûr de la façon de le faire. C'est le message d'erreur que je reçois après avoir exécuté /sbin/vboxconfig:

vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

J'ai essayé de googler cela, mais je ne peux pas sembler trouver une réponse claire et concise avec des étapes séquentielles. Encore une fois, je suis assez nouveau à Linux, alors toute aide est la bienvenue. Merci d'avance à tous ceux qui répondent.

32
aty0

Afin d'obtenir VirtualBox Travailler sans simplement désactiver le démarrage sécurisé UEFI, vous devrez procéder comme suit:

  1. Créez une paire de clés RSA Public/Privé Personnel pour signer les modules du noyau. Comme recommandé dans le lien ci-dessous, j'ai choisi de stocker la touche/paire dans la signature/la signature/la signature/la signature/la signature/la signature du module.
    Sudo -i
    mkdir /root/module-signing
    cd /root/module-signing
    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=YOUR_NAME/"
    chmod 600 MOK.priv 
  1. Utilisez Mokutil, un outil pour importer ou supprimer les touches du propriétaire de la machine (MOK) pour importer la clé publique, puis inscrivez-la lorsque la machine est redémarrée. Le mot de passe de cette étape est un mot de passe d'utilisation temporaire dont vous n'avez besoin que de vous souvenir de quelques minutes.
    mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
  1. Redémarrez la machine. Lorsque le chargeur de démarrage démarre, vous devez voir qu'un écran vous demandant d'appuyer sur un bouton pour accéder à l'utilitaire EFI Manager Mok Manager. Notez que tous les claviers externes externes ne fonctionneront pas dans cette étape. Sélectionnez Inscrivez-vous Mok dans le premier menu, puis continuez, puis sélectionnez Oui pour inscrire les touches et entrez le mot de passe établi à l'étape 2. Sélectionnez ensuite OK pour continuer le démarrage du système.

  2. Les futures mises à jour des noyaux nécessiteraient que les noyaux mis à jour soient signés à nouveau, il est donc logique de mettre les commandes de signature dans un script pouvant être exécuté à une date ultérieure si nécessaire. Un échantillon de script/racine/signature de la racine/de la signature/de la touche de signature/SIGN-Vbox est indiqué ci-dessous.

#!/bin/bash

for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
  echo "Signing $modfile"
  /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
                                /root/module-signing/MOK.priv \
                                /root/module-signing/MOK.der "$modfile"
done
  1. Ajoutez la permission d'exécution et exécutez le script ci-dessus en tant que root de la signature/signer/signer/signer/module.
    Sudo -i
    cd /root/module-signing
    chmod 700 /root/module-signing/sign-vbox-modules
    ./sign-vbox-modules
  1. Chargez le module Vboxdrv et lancez VirtualBox.
    modprobe vboxdrv 

La plupart de ces informations ont été gagnées à partir du lien suivant et peuvent être mentionnées pour des informations supplémentaires https://stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail/ .

46
balast

Je sais que cette question est vieille, mais parce qu'il n'y a pas de réponse acceptée et aucune de ces réponses n'a résolu la question pour moi, j'écris comment j'ai résolu cela aujourd'hui:

Lors de l'exécution de cette commande, obtenez cette erreur:

$ Sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Le problème est que le module n'est pas signé et donc non chargé avec le noyau. Cela se produira si votre ordinateur a le mode Secorboot activé, quelque chose de très courant dans les équipements modernes.

C'est pourquoi je reçois cette erreur d'ouvrir une machine dans la zone virtuelle

Pilote de noyau non installé (RC = -1908)

Effectuez les étapes suivantes pour signer un pilote et il est chargé comme module de noyau, sur les systèmes Ubuntu et également sur Debian 9:

  1. Installez le package mkutil pour pouvoir faire signé.

    Sudo apt-get update
    Sudo apt-get upgrade
    Sudo apt-get install mokutil
    
  2. Générez le fichier de signature:

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/"
    
  3. Ajoutez-le ensuite au noyau:

    Sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  4. Enregistrez-le pour le démarrage sécurisé.

    IMPORTANT! qui vous demandera un mot de passe, mettez celui que vous voulez, vous ne devrez que l'utiliser une fois dans le prochain redémarrage.

    Sudo mokutil --import MOK.der
    
  5. Enfin, redémarrez l'ordinateur. Un écran bleu apparaîtra avec une attente de clavier, appuyez sur la touche qui vous demande d'interrompre le démarrage.

    enter image description here

Lorsque vous êtes à l'intérieur de l'écran bleu, sélectionnez

Inscription MOK -> Continuer -> Et cela vous demandera le mot de passe

que vous avez déjà entré, vous entrerez et vous serez informé que l'opération a été complétée avec succès.

Maintenant, votre système d'exploitation démarrera et vous pouvez maintenant utiliser VirtualBox sans problème :)

J'espère que cela aide quelqu'un.

15
Adriana Hernández

C'était très utile et correct. J'ajouterais si votre installation de VirtualBox sur un ordinateur portable, commencez par vous assurer que votre BIOS par défaut a été configuré pour VirtualBox ou VM. Vous devrez passer au BIOS et modifier la permission de la virtualisation pour autoriser ou être activée dans la section Processeur, sauvegarder et quitter, puis redémarrez. Cela m'a raté et j'ai perdu plusieurs heures frustrantes.

1
user1128819

J'ai eu le même problème sur Ubuntu 20.04, mais je ne pouvais pas comprendre pourquoi. J'ai essayé toutes les options ci-dessus mais ils ne fonctionnaient pas bien pour moi. Les packages de signature semblent un peu complexes et inutiles, donc je ne suis donc pas tout à fait sûr si je le faisais bien, mais j'ai réussi à le comprendre à la fin et à résoudre le problème.

Ce que j'ai réalisé, c'est que cette question ne s'est produite qu'après avoir effectué une mise à niveau de noyau/dist. Si vous compilez manuellement tout programme sur votre système, puis mettez à niveau votre noyau ou votre système d'exploitation, vous obtenez le même problème.

La solution consistait à installer le package VirtualBox-dkms. Si vous regardez les packages d'installation sur Synaptic Package Manager, vous trouverez des charges. (J'avais Virtualbox-6.1)

Si vous n'êtes pas sûr, exécutez simplement la commande suivante:

Sudo apt install --reinstall virtualbox-dkms

Il demandera d'abord de désinstaller la version actuelle si ce n'est pas le DKMS et demandez à taper - Y pour confirmer. (Remarque: cela ne supprimera pas votre VMS)

0
John