Installer un pilote hors dépot officiel avec DKMS

L’utilisation de DKMS (Dynamic Kernel Module Support) est particulièrement utile pour installer et désinstaller des pilotes, y compris ceux d’une clé Wi-Fi, car il permet de gérer la recompilation automatique des modules du noyau lorsque celui-ci est mis à jour. Voici comment installer et désinstaller les pilotes d’une clé Wi-Fi avec DKMS.

1. Pré-requis

Avant de commencer, assurez-vous d’avoir les éléments suivants :

  • Git pour cloner les dépôts de pilotes (si nécessaire)
  • Les headers du noyau installés (vous pouvez les installer avec linux-headers-$(uname -r))
  • DKMS installé sur votre système.

Pour installer les outils nécessaires :

sudo apt update
sudo apt install dkms git build-essential linux-headers-$(uname -r)

2. Installation du pilote avec DKMS

Étape 1 : Cloner le dépôt du pilote (si nécessaire)

Il est courant que le pilote Wi-Fi ne soit pas directement inclus dans le noyau, mais disponible via un dépôt GitHub. Par exemple, pour une clé Wi-Fi basée sur le chipset Realtek RTL8812AU, on peut cloner un dépôt contenant les sources du pilote.

Exemple :

git clone https://github.com/aircrack-ng/rtl8812au.git

Étape 2 : Copier les fichiers dans DKMS

Après avoir cloné le dépôt, vous devez copier les fichiers du pilote dans le répertoire de DKMS pour qu’il puisse les gérer. Accédez au répertoire du projet cloné et installez-le :

cd rtl8812au
sudo dkms add .

Cela ajoute le module au système DKMS pour le gestionnaire de modules du noyau.

Étape 3 : Construire et installer le module

Une fois que les fichiers ont été ajoutés, vous pouvez demander à DKMS de compiler et installer le module pour le noyau actuel :

sudo dkms build 8812au/5.6.4.2
sudo dkms install 8812au/5.6.4.2

> Remarque : Le chemin 8812au/5.6.4.2 dépend de la version du pilote que vous installez. Il peut varier selon le dépôt utilisé.

Étape 4 : Vérification de l’installation

Pour vérifier que le pilote a été installé correctement, vous pouvez lister les modules DKMS installés :

dkms status

Cela devrait montrer le pilote comme étant installé et compilé pour votre version du noyau.
Vous pouvez également utiliser la commande suivante pour voir si le module est chargé :

sudo modprobe 8812au

Si le pilote fonctionne correctement, vous devriez être capable de voir les réseaux Wi-Fi disponibles avec la commande iwconfig ou via l’interface graphique de votre gestionnaire de réseau.

3. Désinstallation du pilote avec DKMS

Si vous souhaitez désinstaller un pilote installé via DKMS, vous pouvez suivre les étapes suivantes :

Étape 1 : Désinstaller le module

Pour désinstaller un module spécifique, vous devez utiliser la commande dkms remove. Voici un exemple de commande pour désinstaller le pilote RTL8812AU :

$ dkms status  (pour lister les pilotes installés)
8822bu, 1.1, 5.4.0-150-generic, x86_64: installed
$ sudo dkms remove 8822bu/1.1 --all
$ dkms status (pour vérifier que le pilote est bien désinstallé : ne s'affiche plus)

L’option –all permet de supprimer toutes les versions compilées du module pour différents noyaux.

Étape 2 : Nettoyage

Ensuite, vous pouvez supprimer les fichiers restants du pilote (le répertoire où vous avez cloné le dépôt) si vous n’en avez plus besoin :

rm -rf ~/rtl8812au

4. Gestion des mises à jour du noyau

L’avantage de DKMS est qu’il gère automatiquement les mises à jour du noyau. Si vous mettez à jour votre noyau à l’avenir, DKMS recompilerait automatiquement le pilote pour la nouvelle version du noyau. Vous n’avez donc pas besoin de refaire manuellement les étapes d’installation à chaque fois qu’un nouveau noyau est installé.

Résumé

1. Installation d’un pilote Wi-Fi avec DKMS :

  • Cloner le dépôt du pilote (git clone)
  • Ajouter le module à DKMS (dkms add)
  • Construire et installer le module (dkms build et dkms install)
  • Charger le module (modprobe).

2. Désinstallation d’un pilote Wi-Fi avec DKMS :

  • Utiliser dkms remove pour désinstaller le module
  • Nettoyer les fichiers restants.

Ces étapes vous permettent d’installer et de gérer facilement les pilotes Wi-Fi, même en cas de mise à jour du noyau.

Exemple réussi avec Mick de Hitec : installation clé Wlan WiFi

sudo apt-get install dkms
mkdir ~/Documents/pilote-wifi && cd ~/Documents/pilote-wifi
git clone https://github.com/jeremyb31/rtl8822bu.git
sudo dkms add ./rtl8822bu

dkms status (8822bu, 1.1: added)
sudo dkms install 8822bu/1.1

dkms status (8822bu, 1.1: installed)
sudo modprobe 8822bu

Pour vérifier si install : ok ?
On peut aussi vérifier qu’il n’existe pas de fichiers .ko dans le dossier wireless ? : find /lib/modules/`uname -r`/kernel/drivers/net/wireless -name « 88*.ko »

grep CONFIG_RTL8 ./rtl8822bu/Makefile | grep ‘ = ‘
CONFIG_RTL8188E = n
CONFIG_RTL8812A = n
CONFIG_RTL8821A = n
CONFIG_RTL8192E = n
CONFIG_RTL8723B = n
CONFIG_RTL8814A = n
CONFIG_RTL8723C = n
CONFIG_RTL8188F = n
CONFIG_RTL8822B = y
CONFIG_RTL8723D = n
CONFIG_RTL8821C = n
export CONFIG_RTL8822BU = m

On voit que l’on peut installer plusieurs modèles de drivers en paramétrant le fichier Makefile MAIS il faut exécuter un sudo dkms remove avant :

152 dkms status
8822bu, 1.1, 5.4.0-150-generic, x86_64: installed
153 sudo dkms remove 8822bu/1.1 –all
154 dkms status

Pour RTL8812 : https://github.com/jeremyb31/rtl8812au-1