Posso fazer alterações de baixo nível em um RO montado por raiz?

3

Relacionado a esta questão : ter um sistema de arquivos raiz que tinha que ser montado como somente leitura (digamos que seja completamente quebrado), posso reformatar a partição ou dd uma imagem de backup mais antiga sobre ela (e depois reinicializar)?

Eu acho que o sistema de arquivos não vai gostar dessas mudanças radicais enquanto montado (mesmo que seja somente leitura).

Ou, como uma pergunta semelhante: alguém tem outras possibilidades para corrigir um root fs ruim além de executar o fsck interativamente (ou seja, executar mudanças permanentes nos dados da partição com outras ferramentas)?

    
por Udo G 20.11.2012 / 18:41

2 respostas

3

Bem, além de executar de forma interativa, você pode tentar fsck -y como minha resposta na outra pergunta :-P

Se você quiser dd uma imagem no topo do rootfs, sua melhor aposta será fazer isso a partir do seu initramfs antes de montar o rootfs.

Você pode fazê-lo com o sistema inicializado para esse rootfs, mas essa é uma daquelas coisas em que o Unix dá a você a corda (com o loop já bem amarrado para você). O sistema de arquivos não vai gostar ("ei, eu esperava um inode lá, o que é esse lixo?"). Certifique-se de que seja verdadeiramente de leitura, por exemplo, sem replay de periódicos.

Se você evitar o acesso ao sistema de arquivos, provavelmente conseguirá se safar. Isso implica que sua imagem de origem não pode estar no rootfs. Isso seria uma péssima ideia.

Depois de executar o dd, shutdown -r now não funcionará (nem muito mais, incluindo ls e cat ). Em vez disso, sugiro que você use um watchdog (mesmo softdog) para forçar uma redefinição ou, como alternativa, use /proc/sysrq-trigger - echo normalmente é um shell embutido, portanto, você ainda deve ser capaz de executar echo . / p>

Não sei o que você está fazendo, mas parece que você está criando algum tipo de appliance. Você deve considerar manter um rootfs somente leitura e usar uma sobreposição (montagens de união, aufs, etc.) para fazer suas alterações, de forma semelhante a como um livecd funciona. Ou, alternativamente, ter um backup ou rootfs somente de recuperação (semelhante a quantos telefones Android funcionam).

    
por 20.11.2012 / 19:00
1

Você pode tentar. No entanto, eu recomendo strongmente não fazê-lo. É provável que isso cause falhas no programa que você está executando, já que o kernel pode descarregar partes dele da memória e depois recarregá-las a partir do arquivo original. Certifique-se de copiar o programa e qualquer arquivo que esteja usando (em particular, incluindo todas as bibliotecas compartilhadas) para um sistema de arquivos diferente (pode ser um sistema de arquivos tmpfs).

Em teoria, o pior que pode acontecer é que você acaba lendo dados errados. O sistema de arquivos provavelmente será remontado como somente leitura devido a erros em algum momento. Na prática, você pode acabar travando o kernel no meio do caminho. Em qualquer caso, há um grande risco de que você acabe com um sistema de arquivos inutilizável.

Se você quiser fazer um fsck na partição raiz, faça-o no initramfs. E eu segundo a recomendação do derobert de um sistema de arquivos raiz somente leitura ampliado por meio de um sistema de arquivos union.

    
por 21.11.2012 / 02:14