Montar sistema de arquivos raiz a partir do initramfs


16

É um cenário comum. Por qualquer motivo, o initramfs (OpenSUSE, no caso de ser importante) não conseguiu encontrar o sistema de arquivos raiz, então o coloca em um shell de resgate. Sei perfeitamente bem que dispositivo precisa ser montado. Minha pergunta:

Qual é o procedimento correto para montar o sistema de arquivos raiz e continuar a sequência de inicialização?

Presumivelmente, esse é o objetivo do console de resgate. E, no entanto, ninguém parece ter documentado como você realmente faz isso.

Obviamente, eu posso montar o sistema de arquivos raiz em algum lugar. Mas como faço para que isso seja a raiz da árvore do sistema de arquivos? E agora continuo o processo de inicialização normal depois disso? (Eu pensei que sair do shell faria isso ... mas não.) O que exatamente você precisa para ser montado antes de continuar e como continua?


2
Eu posso estar errado, mas acho que uma vez que você está em um shell de recuperação que não pode continuar a inicialização atual, você consertar as coisas que o próximo arranque será bem sucedida
Eric Renouf

@EricRenouf inicializando manualmente o sistema completo pode muito bem ser a maneira mais fácil de corrigir esse problema. Eu tive problemas no passado em que o initramfs falhou ao abrir minha partição raiz criptografada cryptsetup-luks, e a correção mais fácil foi inicializá-la manualmente e depois executar update-initramfs -u. Eu absolutamente não conseguia fazê-lo funcionar quando entrei chrootno sistema de arquivos raiz de um sistema de resgate; o initramfs resultante sempre estava quebrado.
Martin von Wittich

Na verdade, é um initrd ou um initramfs? (Só porque o arquivo é chamado initrdnão significa que ele seja um deles: a maioria das distribuições mudou, initramfsmas continua chamando o arquivo initrd.) Qual distribuição você está usando (como o que o initrd / initramfs faz depende do que a distribuição colocou lá)?
Gilles 'SO- stop be evil'

@ Gilles tenho certeza que é realmente initramfs. Não tenho certeza se isso realmente faz diferença; de qualquer maneira, eu tenho um mini sistema de arquivos e preciso montar o sistema de arquivos real. (OpenSUSE, caso em que importa.)
MathematicalOrchid

Respostas:



2

procedimento normal é

  1. mount / dev / sdX / mnt
  2. corrigir problema em / mnt
  3. reiniciar

Você pode querer

  1. mount / dev / sdX / mnt
  2. fix / mnt
  3. umount / mnt
  4. montar / dev / sdX /
  5. terminar a inicialização manualmente

Isso não é recomendado, você terá que fazer isso em cada inicialização. Em um ambiente de produção, não é possível garantir que a inicialização manual siga as mesmas etapas que a automática.

No entanto, em uma emergência com dados críticos, a etapa 5 geralmente se resume a:

  • Rede 5.1 configurada
  • 5.2 copiar arquivo importante para um local seguro

2
Eu acredito que a pergunta "real" do pôster original era "Como exatamente você faz '5. terminar a inicialização manualmente'?"
user2121874

2

Basta executar o fsckcomando sem opções initramfse reiniciar

por exemplo: a partição raiz é sda3

fsck /dev/sda3

A reinicialização acabou de me levar ao grub shell em vez do initramfs shell. Agora eu vou fazer tudo de novo para chegar ao initramfs desembolsar
jaam

1

Se o root=parâmetro estiver correto e o problema for apenas que o dispositivo necessário não está disponível (por exemplo, porque o initramfs falhou ao montar um mdRAID), é suficiente disponibilizar o dispositivo manualmente, por exemplo:

mdadm --assemble ...

Em seguida, verifique se o dispositivo está lá e se tudo estiver bem, pressione ctrl+ dou digite exitpara sair do shell do initramfs. O initramfs montará o sistema de arquivos raiz e continuará a inicialização normalmente. Após a inicialização do sistema, você deve reparar o problema subjacente, por exemplo, executando update-initramfs -u.

Ainda não encontrei uma maneira de dizer ao initramfs para inicializar um dispositivo diferente do que /proc/cmdlinediz. Talvez alguém tenha uma ideia?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.