Montar el sistema de archivos raíz desde initramfs

16

Es un escenario común. Por alguna razón, initramfs (OpenSUSE, en caso de que sea importante) no ha podido encontrar el sistema de archivos raíz, por lo que te deja en un shell de rescate. Sin embargo, sé perfectamente qué dispositivo necesita ser montado. Mi pregunta:

¿Cuál es el procedimiento correcto para montar el sistema de archivos raíz y continuar la secuencia de arranque?

Presumiblemente ese es el objetivo de la consola de rescate. Y, sin embargo, nadie parece haber documentado cómo haces esto realmente.

Obviamente puedo montar el sistema de archivos raíz en alguna parte. Pero, ¿cómo hago que la raíz del árbol del sistema de archivos? ¿Y ahora continúo el proceso de arranque normal después de eso? (Pensé que solo salir del shell lo haría ... pero no lo hace). ¿Qué es exactamente lo que necesita para montarse antes de continuar y cómo continúa?

Orquídea matemática
fuente
2
Podría estar equivocado, pero creo que una vez que estás en un caparazón de rescate no puedes continuar con el arranque actual, arreglas las cosas para que el próximo arranque tenga éxito
Eric Renouf
@EricRenouf arrancar manualmente el sistema completo puede muy bien ser la forma más fácil de solucionar este problema. Tuve problemas en el pasado donde initramfs no pudo abrir mi partición raíz encriptada cryptsetup-luks, y la solución más fácil fue arrancarla manualmente y luego ejecutarla update-initramfs -u. Absolutamente no pude hacerlo funcionar cuando acabo de chrootingresar en el sistema de archivos raíz desde un sistema de rescate; El initramfs resultante siempre estaba roto.
Martin von Wittich
¿Es realmente un initrd o un initramfs? (El hecho de que se llame al archivo initrdno significa que sea uno: la mayoría de las distribuciones se han cambiado initramfspero siguen llamando al archivo initrd). ¿Qué distribución está usando (ya que lo que hace initrd / initramfs depende de lo que la distribución haya puesto allí)?
Gilles 'SO- deja de ser malvado'
@Gilles Estoy bastante seguro de que en realidad es initramfs. Sin embargo, no estoy seguro de si realmente hace la diferencia; De cualquier manera, tengo un mini sistema de archivos y necesito montar el sistema de archivos real. (OpenSUSE, en caso de que sea importante.)
MathematicalOrchid

Respuestas:

2

procedimiento normal es

  1. mount / dev / sdX / mnt
  2. solucionar problema en / mnt
  3. reiniciar

Tu podrías querer

  1. mount / dev / sdX / mnt
  2. arreglar / mnt
  3. umount / mnt
  4. mount / dev / sdX /
  5. terminar la bota manualmente

Esto no es recomendable, tendrás que hacerlo en cada arranque. En un entorno de producción, no puede estar seguro de que el arranque manual siga los mismos pasos que el arranque automático.

Sin embargo, en una emergencia con datos críticos, el paso 5 generalmente se reduce a:

  • 5.1 configurar red
  • 5.2 copiar un archivo importante en un lugar seguro
Archemar
fuente
2
Creo que la pregunta "real" del póster original era "¿Cómo se hace exactamente" 5. terminar el arranque manualmente "?"
user2121874
2

Simplemente ejecute el fsckcomando sin opciones y initramfsluego reinicie

por ejemplo: la partición raíz es sda3

fsck /dev/sda3
GAD3R
fuente
El reinicio simplemente me dejó en grub shell en lugar de initramfs shell. Ahora haré todo de nuevo para llegar al shell initramfs
jaam
1

Si el root=parámetro es correcto y el problema es solo que el dispositivo necesario no está disponible (por ejemplo, porque el initramfs no pudo ensamblar un mdRAID), entonces es suficiente para que el dispositivo esté disponible manualmente, por ejemplo:

mdadm --assemble ...

Luego verifique que el dispositivo esté allí y si todo se ve bien, presione ctrl+ do escriba exitpara salir del shell initramfs. Los initramfs luego montarán el sistema de archivos raíz y continuarán arrancando como de costumbre. Después de que el sistema se haya iniciado, debe reparar el problema subyacente, por ejemplo, ejecutando update-initramfs -u.

Todavía no he encontrado una manera de decirle a los initramfs que arranquen un dispositivo diferente de lo que /proc/cmdlinedice. Tal vez alguien más tiene una idea?

Martin von Wittich
fuente