LINUX:Systemd-Dracut et Kernel

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour au menu de Systemd


But

Sous Fedora, le service RNGD est lancé d'office; il transmet les données d'un générateur de nombres aléatoires d'un périphérique matériel au pool d'entropie de nombres aléatoires du noyau.

Mais dans mon cas, il reste au statut défaillant.

Dans cet article, nous allons analyser ce cas et voir comment contourner ce problème.


Installation de RNGD

Le paquet concerné est normalement installé d'office sinon on exécute la commande suivante:

dnf install rng-tools opensc

Le paquet "opensc" lui est lié et est nécessaire.

Le fichier "/etc/sysconfig/rngd" permet d'ajuster les paramètres du service "rngd".


Test de RNGD

Il est possible de tester ce service interactivement avant de l'activer:

rngd -f

Sur ma vieille machine, sous Fedora 36, voici la sortie:


Initializing available sources
[hwrng ]: Initialization Failed
[rdrand]: Initialization Failed
[jitter]: JITTER timeout set to 5 sec
[jitter]: Initializing AES buffer
[jitter]: Unable to obtain AES key, disabling JITTER source
[jitter]: Initialization Failed
[pkcs11]: No pkcs11 slots available
[pkcs11]: Initialization Failed
[rtlsdr]: Initialization Failed
Can't open any entropy source
Maybe RNG device modules are not loaded

Le service s'arrête et est en erreur.


Sur une autre machine, sous Fedora 37, le service se lance correctement:


Initializing available sources
[hwrng ]: Initialization Failed
[rdrand]: Initialization Failed
[jitter]: Initializing AES buffer
[jitter]: Enabling JITTER rng support
[jitter]: Initialized
[pkcs11]: No pkcs11 slots available
[pkcs11]: Initialization Failed
[rtlsdr]: Initialization Failed
...

On peut aussi analyser les journaux.


Lancement de RNGD

L'activation et le lancement du service "rngd" se fait comme décrit précédemment mais on se rend compte rapidement que même si on a désactivé son lancement, il se lance quand même au démarrage de la machine et dans mon premier cas, il est en erreur. Son lancement est inclus dans le Kernel. Il faut donc trouver le moyen de l'en retirer.


Dracut

"dracut" a pour fonction d'ajouter toute une série de fonctionnalités au kernel lors de son lancement. Ce programme est utilisé lors de la création d'un kernel.

On peut vérifier l'intégration du service "rngd" au kernel via la commande suivante qui permet de lister son contenu:

lsinitrd /boot/initramfs-<n° kernel>.img | grep rngd

Ce qui donne pour le kernel n° "6.0.7-200.fc36.x86_64":

lsinitrd /boot/initramfs-6.0.7-200.fc36.x86_64.img | grep rngd

Après une brève recherche, on repère ce que l'on désire dans le répertoire "/usr/lib/dracut/modules.d/06rngd".

En analysant le contenu du script "module-setup.sh" se trouvant dans ce répertoire, on remarque que ce service n'est pas inclus si le paquet concerné n'est pas installé.


Solution

Il faut donc le désinstaller:

dnf remove rng-tools

et ensuite il faut recréer le kernel ou attendre l'installation du kernel suivant puis redémarrer la machine avec ce kernel.


Haveged

Il existe une alternative au service "rngd" que nous venons d'enlever. On peut le remplacer par le service "haveged".

On l'installe suivant la commande:

dnf install haveged

On peut l'activer et le lancer comme classiquement mais ce service est aussi inclus lors du lancement du kernel via le logiciel Dracut comme l'était "rngd".




retour au menu de Systemd