Qu'est-ce que DKMS dans Linux

Qu'est-ce que DKMS dans Linux
La prise en charge des modules de noyau DKMS ou dynamique est un système qui permet à des modules de noyau discrets de mettre à jour sans avoir besoin de modifier le noyau entier. Il s'agit d'un logiciel gratuit sous GPL V2 et écrit par l'équipe d'ingénierie Linux de Dell. DKMS a été initialement développé pour Dell Computer Corporation afin de distribuer des correctifs logiciels à leurs clients de manière bien définie.

DKMS a de nombreux avantages pour les communautés de fournisseurs de services Linux, E.g.:

  1. Du point de vue du développeur du conducteur, il aide à ajouter des conducteurs qui ne sont pas déjà dans le noyau de base. De plus, les développeurs de pilotes qui sont tenus de mettre à disposition des pilotes d'appareils mis à jour pour les tests et une utilisation courante sur une grande variété de noyaux en bénéficient également. Un autre avantage de DKMS est que les développeurs peuvent tester l'exécution du code de leur pilote sur différentes machines. En fait, cela accélère le processus de développement du conducteur.
  2. Du point de vue de l'administrateur système, DKMS simplifie le processus d'installation des mises à jour du pilote de périphérique vers le noyau actif sans ajouter de modifications. Par conséquent, ils n'ont pas besoin d'attendre l'arrivée d'un nouveau noyau.
  3. Les correctifs ou correctifs de bogues sélectionnés peuvent être déployés entre les mises à jour de grande taille.
  4. Le nouveau matériel qui nécessite une modification dans un seul module peut être facilement intégré. Encore une fois, cela peut être réalisé sans tester entièrement les nouveaux noyaux.

Que couvrirons-nous?

Ce guide discutera de diverses terminologies liées au noyau et en particulier ce qu'est DKMS.

Un examen rapide des terminologies

Quel est le noyau Linux?

C'est la partie fondamentale d'un système d'exploitation Linux. C'est l'interface principale entre les processus exécutés sur le système d'exploitation et son matériel. Il gère des fonctions majeures telles que la gestion de la mémoire, la gestion des processus, la gestion du processeur, la gestion du pilote de périphérique et les appels système et la gestion de la sécurité.

Espace du noyau
Le noyau est en fait caché à l'utilisateur et travaille dans sa propre zone appelée Space du noyau. L'utilisateur interagit avec le noyau à l'aide des applications utilisateur comme le navigateur de fichiers, le navigateur Web, etc. Ces interactions utilisent une construction de programmation spécifique appelée appel système.

Arbre source du noyau
Il a tout le code source pour les pilotes du noyau et de l'appareil. Il se compose de nombreux répertoires et sous-répertoires comme Arch, bloc, crypto, inclure, init, lib, usr, etc.

Modules de noyau Linux
Les modules de noyau Linux sont essentiellement des morceaux de code. Ceux-ci peuvent être ajoutés et retirés du noyau selon l'exigence. Ils peuvent être intégrés ou chargés. Le module du noyau augmente les fonctions du noyau sans nécessiter de redémarrage du système. Contrairement aux microkernels, où l'ajout de nouveaux composants dans le noyau nécessite de configurer et de construire un nouveau noyau, nous pouvons charger et décharger des composants ou des modules du système d'exploitation à l'exécution. Ces modules sont des pilotes de périphériques, des systèmes de fichiers, etc.

Une fois qu'un module est chargé, c'est comme un morceau de code du noyau. Il a les mêmes privilèges et tâches qu'un code de noyau normal.

Définition de DKMS

Voici un extrait de la définition DKMS que j'ai trouvée ici:

«DKMS est un cadre où la source du pilote de périphérique peut résider en dehors de l'arborescence source du noyau afin qu'il soit très facile de reconstruire des modules lorsque vous mettez à niveau les noyaux."

Laissez-nous élaborer sur ce qui précède. Le système DKMS est un arbre hors du noyau de base au sol. Il contient la source du module et les binaires de modules compilés. À la suite de cette réplication, les modules ne sont pas couplés au noyau. (Bien que les modules ne soient pas entièrement découplés).

J'ai moi-même rencontré le concept DKMS lorsque j'ai acheté un ordinateur portable HP et installé Ubuntu 18.04 dessus. Tout fonctionnait bien sauf mon wifi. Mon ordinateur portable n'a pu localiser aucun adaptateur WiFi. Dans les paramètres, le menu WiFi a affiché un message "Aucun adaptateur wifi trouvé". J'ai commencé à rechercher des forums sur Internet et j'ai découvert que de nombreuses personnes connaissaient le même problème. J'ai trouvé de nombreuses solutions suggérant d'installer des fichiers d'en-tête, des pilotes et d'autres packages.

J'ai simplement suivi ces guides sans savoir ce qu'ils voulaient réellement transmettre. Quoi qu'il en soit, ces guides m'ont aidé, et j'ai travaillé WiFi d'une manière ou d'une autre. Mais le problème était que chaque fois que je mettais à jour mon système Ubuntu, le même problème s'est posé, et j'ai dû répéter les mêmes étapes de recompilation des pilotes téléchargés. De plus, je dois résoudre le problème du signal bas à chaque fois après l'installation du pilote. J'ai même installé Windows OS, et à ma grande surprise, le WiFi fonctionnait en fait parfaitement. Mais je dois quand même utiliser Ubuntu pour mon travail. J'ai donc décidé de vivre avec le patch temporaire que j'ai obtenu plus tôt.

DKMS vient à la rescousse

Une solution récente que je viens de trouver que je ne me souciais pas dans le passé a utilisé la manière DKMS. Au lieu d'utiliser le faire ou faire l'installation Commande, DKMS effectue trois opérations sur le code source: ajouter, construire et installer.

Utilisation de DKMS

Pour que DKMS fonctionne, la source du module doit être présente sur le système où nous construisons le module, et le chemin d'emplacement devrait être comme '/ usr / src / - /' Et rappelez-vous que c'est la toute première exigence de DKMS. Une autre exigence est un fichier appelé 'dkms.conf ', qui guidera comment construire et installer un module. Et juste pour mentionner, les DKMS doivent déjà être installés sur le système. Une fois que tout est en place, nous pouvons ajouter un module à l'arbre DKMS.

Voyons ces étapes en installant un module de démonstration 'Demo-V0.1.le goudron.gz ' avec DKMS. Nous faisons cet échantillon uniquement dans le but de comprendre comment fonctionne DKMS. Après avoir extrait le fichier, nous devons 'CD' à l'intérieur:

# CD Demo-V0.1/

Créez maintenant un dkms.confli fichier qui contient les lignes suivantes:

Make = "Make -c Src / Kerneldir = / lib / modules / $ Kernelver / build"
Clean = "Make -C $ kernel_source_dir m = $ dkms_tree / $ package_name / $ package_version / build Clean"
Built_module_name = ”Demo"
Built_module_location = ”src”
Package_name = démo
Package_version = 0.1
Remake_initrd = ”Oui”
Autooinstall = oui

Maintenant que notre dkms.confli Le fichier est prêt, nous pouvons ajouter notre module de démonstration en tant que:

# DKMS Add -M Demo -v 0.1

La beauté des DKMS est que nous pouvons spécifier la version du noyau par rapport à laquelle nous voulons construire ou module comme indiqué ici:

# DKMS build -m Demo -v 0.1 -K 5.13.0-27

Si nous ne spécifions pas le noyau, DKMS créera le module avec la version actuelle du noyau.

Si tout se passe bien, nous pouvons maintenant installer le module en utilisant:

# DKMS INSTALL -M Demo -v 0.1

Si nous améliorons notre noyau ou changeons l'architecture matérielle, un module doit être reconstruit manuellement. À l'aide de DKMS, cette procédure devient redondante à mesure que le DKMS construit dynamiquement ces modules de noyau pour chaque noyau présent sur le système.

Conclusion

Des outils comme DKMS ont grandement aidé les administrateurs, les développeurs de conducteurs et d'autres réduisent la tâche de gestion du noyau. Alors que les utilisateurs finaux ne se soucient pas de la façon dont le système sous-jacent fonctionne jusqu'à ce que leurs objectifs soient atteints, DKMS permet aux développeurs et aux administrateurs de se concentrer sur leur travail.