C'est un scénario courant. Pour une raison quelconque, les initramfs (OpenSUSE, au cas où cela importe) n'a pas réussi à trouver le système de fichiers racine, il vous dépose donc dans un shell de secours. Cependant, je sais parfaitement quel appareil doit être monté. Ma question:
Quelle est la bonne procédure pour monter le système de fichiers racine et continuer la séquence de démarrage?
Vraisemblablement, c'est tout le point de la console de sauvetage. Et pourtant, personne ne semble avoir documenté comment vous faites cela.
Évidemment, je peux monter le système de fichiers racine quelque part. Mais comment puis-je faire que la racine de l'arborescence du système de fichiers? Et maintenant, puis-je continuer le processus de démarrage normal après cela? (Je pensais que juste quitter le Shell le ferait ... mais ce n'est pas le cas.) De quoi avez-vous besoin exactement pour être monté avant de continuer, et comment continuez-vous?
exec switch_root/mnt/root /sbin/init
Exécutez simplement la commande fsck
sans les options de initramfs
puis redémarrez
par exemple: la partition racine est sda3
fsck /dev/sda3
la procédure normale est
Tu pourrais vouloir
Ce n'est pas recommandé, vous devrez le faire à chaque démarrage. Dans un environnement de production, vous ne pouvez pas être sûr que le démarrage manuel suit les mêmes étapes que le démarrage automatique.
Cependant, en cas d'urgence avec des données critiques, l'étape 5 se résume généralement à:
Si la root=
est correct et le problème est simplement que le périphérique nécessaire n'est pas disponible (par exemple parce que les initramfs n'ont pas réussi à assembler un md
RAID), alors il suffit de rendre le périphérique disponible manuellement, par exemple:
mdadm --assemble ...
Vérifiez ensuite que l'appareil est là et si tout semble bon, appuyez sur ctrl + d ou tapez exit
pour quitter le shell initramfs. Les initramfs monteront alors le système de fichiers racine et continueront à démarrer comme d'habitude. Une fois le système démarré, vous devez réparer le problème sous-jacent, par exemple en exécutant update-initramfs -u
.
Je n'ai pas encore trouvé de moyen de dire aux initramfs de démarrer un périphérique différent de ce que /proc/cmdline
dit. Peut-être que quelqu'un d'autre a une idée?