web-dev-qa-db-fra.com

Comment déboguer les scripts initramfs?

Pour ma configuration Ubuntu 14.04, j'ai 4 partitions LUKS qui fonctionnent comme des périphériques de bloc de sauvegarde forment ma partition racine BTRFS. En utilisant les paramètres par défaut, je n’ai pas pu déverrouiller les 4 partitions chiffrées au démarrage, j’ai donc écrit un script qui le ferait pour moi.

Le script fonctionne en quelque sorte, parfois lorsque je démarre, je n’ai aucun problème, d’autres fois, il démarre dans l’invite initramfs. Je pense qu’il ya des problèmes de synchronisation entre le déchiffrement des partitions LUKS, puis l’assemblage de la partition BTRFS, puis le montage de la racine subvol, mais je ne sais pas comment déboguer/tester/résoudre ce problème. Des idées de ce que je pourrais faire pour comprendre quel est le problème?

1
elventear

Utilisez le paramètre de noyau "debug", vous verrez plus de sorties de débogage au moment du démarrage et initramfs écrira un journal de démarrage dans /run/initramfs/initramfs.debug.

Le débogage des scripts de démarrage actuels est généralement un travail lent. Vous devez prendre initramfs, le décompresser (gzip -d init*.gz puis cpio -vid < init*), le modifier (commencer à /init), le remballer, puis démarrer avec. Ajouter des déclarations d'impression où vous voulez vérifier ce qui se passe à un moment donné. Le problème avec les conditions de concurrence réside dans le fait que l'ajout d'impressions de débogage peut modifier le minutage, ce qui entraîne un comportement différent. Il n’ya pas de solution facile à cela, si ce n’est que de lire le code et de comprendre ce qu’il fait. Cela dit, les scripts sont courts et devraient être assez faciles à suivre (/init ne contient que 300 lignes de code environ).

1
bain