Monter le système de fichiers racine depuis initramfs

16

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 l' intérêt 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 en faire la racine de l'arborescence du système de fichiers? Et maintenant, je continue le processus de démarrage normal après cela? (Je pensais que juste sortir du 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?

MathematicalOrchid
la source
2
Je peux me tromper, mais je pense qu'une fois que vous êtes dans une coque de sauvetage, vous ne pouvez pas continuer le démarrage actuel, vous corrigez les choses afin que le prochain démarrage réussisse
Eric Renouf
@EricRenouf démarrer manuellement le système complet peut très bien être le moyen le plus simple de résoudre un tel problème. J'ai eu des problèmes dans le passé où les initramfs n'ont pas réussi à ouvrir ma partition racine cryptée cryptsetup-luks, et la solution la plus simple était de la démarrer manuellement puis de l'exécuter update-initramfs -u. Je ne pouvais absolument pas le faire fonctionner lorsque je venais de chrootpasser au système de fichiers racine à partir d'un système de sauvetage; les initramfs résultants étaient toujours rompus.
Martin von Wittich
Est-ce en fait un initrd ou un initramfs? (Ce initrdn'est pas parce que le fichier est appelé que cela en est un: la plupart des distributions ont basculé initramfsmais continuent d'appeler le fichier initrd.) Quelle distribution utilisez-vous (comme ce que fait initrd / initramfs dépend de ce que la distribution y met)?
Gilles 'SO- arrête d'être méchant'
@ Gilles, je suis presque sûr qu'il s'agit en fait d'initramfs. Je ne sais pas si cela fait vraiment une différence; de toute façon, j'ai un mini système de fichiers et j'ai besoin de monter le vrai système de fichiers. (OpenSUSE, au cas où cela compte.)
MathematicalOrchid

Réponses:

2

la procédure normale est

  1. monter / dev / sdX / mnt
  2. résoudre le problème sur / mnt
  3. redémarrer

Tu pourrais vouloir

  1. monter / dev / sdX / mnt
  2. fixer / mnt
  3. umount / mnt
  4. monter / dev / sdX /
  5. terminer le démarrage manuellement

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 à:

  • 5.1 Configurer le réseau
  • 5.2 Copiez le fichier important dans un endroit sûr
Archemar
la source
2
Je crois que la question "réelle" de l'affiche originale était "Comment faites-vous exactement" 5. terminer le démarrage manuellement "?"
user2121874
2

Exécutez simplement la fsckcommande sans options initramfspuis redémarrez

par exemple: la partition racine est sda3

fsck /dev/sda3
GAD3R
la source
Le redémarrage m'a juste laissé tomber sur le shell grub au lieu du shell initramfs. Maintenant, je vais tout refaire pour arriver au shell initramfs
jaam
1

Si le root=paramètre 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 mdRAID), alors il suffit de rendre le périphérique disponible manuellement, par exemple:

mdadm --assemble ...

Vérifiez ensuite que le périphérique est là et si tout semble correct, appuyez sur ctrl+ dou tapez exitpour quitter le shell initramfs. Les initramfs monteront alors le système de fichiers racine et continueront à démarrer comme d'habitude. Après le démarrage du système, vous devez ensuite 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 qui est /proc/cmdlineindiqué. Peut-être que quelqu'un d'autre a une idée?

Martin von Wittich
la source