Montare il filesystem di root da initramfs


16

È uno scenario comune. Per qualsiasi motivo, initramfs (OpenSUSE, nel caso in cui sia importante) non è riuscito a trovare il filesystem di root, quindi ti fa cadere in una shell di salvataggio. So perfettamente quale dispositivo deve essere montato però. La mia domanda:

Qual è la procedura corretta per montare il filesystem di root e continuare la sequenza di avvio?

Presumibilmente questo è il punto centrale della console di salvataggio. Eppure, nessuno sembra aver documentato come lo fai davvero.

Ovviamente posso montare il filesystem di root da qualche parte. Ma come posso renderlo la radice dell'albero del filesystem? E ora continuo il normale processo di avvio dopo? (Pensavo che uscire dalla shell lo avrebbe fatto ... ma non lo fa.) Cosa occorre esattamente per montarsi prima di continuare e come si continua?


2
Potrei sbagliarmi, ma penso che una volta che sei in una shell di salvataggio non puoi continuare l'avvio corrente, risolvi le cose in modo che il prossimo avvio abbia successo
Eric Renouf,

@EricRenouf l'avvio manuale dell'intero sistema potrebbe benissimo essere il modo più semplice per risolvere tale problema. Ho avuto problemi in passato in cui initramfs non riusciva ad aprire la mia partizione root crittografata cryptsetup-luks e la soluzione più semplice era quella di avviarlo manualmente e quindi eseguirlo update-initramfs -u. Non riuscivo assolutamente a farlo funzionare quando sono appena chrootentrato nel filesystem di root da un sistema di salvataggio; gli initramfs risultanti erano sempre rotti.
Martin von Wittich,

In realtà è un initrd o un initramfs? (Solo perché il file viene chiamato initrdnon significa che sia uno: la maggior parte delle distribuzioni sono passate initramfsma continuano a chiamare il file initrd.) Quale distribuzione stai usando (come ciò che fa initrd / initramfs dipende da ciò che la distribuzione ha messo lì)?
Gilles 'SO- smetti di essere malvagio' il

@Gilles Sono abbastanza sicuro che in realtà sia initramfs. Non sono sicuro che in realtà faccia la differenza; in entrambi i casi, ho un mini filesystem e devo montare il filesystem reale. (OpenSUSE, nel caso in cui sia importante.)
MathematicalOrchid,

Risposte:



2

la procedura normale è

  1. mount / dev / sdX / mnt
  2. risolve il problema su / mnt
  3. riavvio

Potresti volere

  1. mount / dev / sdX / mnt
  2. fix / mnt
  3. umount / mnt
  4. mount / dev / sdX /
  5. finire l'avvio manualmente

Questo non è raccomandato, dovrai farlo ad ogni avvio. In un ambiente di produzione, non si può essere certi che l'avvio manuale segua gli stessi passaggi di quello automatico.

Tuttavia, in caso di emergenza con dati critici, il passaggio 5 si riduce di solito a:

  • 5.1 impostare la rete
  • 5.2 copia del file importante in un posto sicuro

2
Credo che la domanda "reale" del poster originale fosse "Come si fa esattamente" 5. finire l'avvio manualmente "?"
user2121874

2

Basta eseguire il fsckcomando senza opzioni da initramfsquindi riavviare

es: la partizione di root è sda3

fsck /dev/sda3

Il riavvio mi ha appena lasciato alla shell di grub invece della shell di initramfs. Ora farò di nuovo tutto per arrivare alla shell initramfs
jaam

1

Se la root= parametro è corretto e il problema è solo che il dispositivo necessario non è disponibile (ad esempio perché initramfs non è riuscito a assemblare un mdRAID), è sufficiente rendere il dispositivo disponibile manualmente, ad esempio:

mdadm --assemble ...

Quindi controlla che il dispositivo sia lì e se tutto sembra a posto, premi ctrl + do digita exitper uscire dalla shell initramfs. Initramfs monterà quindi il filesystem di root e continuerà ad avviarsi come al solito. Dopo l'avvio del sistema, è necessario ripristinare il problema sottostante, ad esempio eseguendolo update-initramfs -u.

Non ho ancora trovato un modo per dire a initramfs di avviare un dispositivo diverso da quello che /proc/cmdlinedice. Forse qualcun altro ha un'idea?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.