Criando um sistema Linux somente leitura com uma camada gravável na RAM

7

Eu tenho um requisito para inicializar o RHEL 6.6 / 7.0 no modo somente leitura com uma camada gravável somente na RAM. Eu acredito que isso é semelhante a como os CDs ao vivo funcionam, em que o sistema de arquivos é somente leitura, mas certas partes dele são graváveis após serem carregadas na RAM. Aqui, quaisquer alterações gravadas no sistema de arquivos são perdidas na reinicialização (já que somente a RAM é atualizada na camada gravável).

Enquanto procurava pela rede, não encontrei um guia sobre como configurar meu próprio "live CD" sem ferramentas auxiliares para poder imitar esse processo em um sistema instalado existente.

Alguém sabe onde eu poderia conseguir alguns recursos construindo meu próprio live CD ou fazendo um Linux somente de leitura com uma camada gravável somente na RAM?

    
por Kinetic Arc 27.01.2015 / 21:33

3 respostas

9

OK, então eu tenho um sistema somente leitura em funcionamento em um cartão SD que permite que o interruptor de leitura / gravação seja configurado para o modo somente leitura. Eu vou responder a minha própria pergunta, já que tenho a sensação de que vou estar olhando aqui novamente para os passos, e espero que isso ajude alguém a sair.

Enquanto definia vários diretórios em /etc/fstab como somente leitura em um sistema Red Hat Enterprise Linux 6.6, eu encontrei o arquivo /etc/sysconfig/readonly-root . Isso despertou meu interesse no que esse arquivo foi usado, assim como qualquer informação auxiliar referente a ele. Em resumo, este arquivo contém uma linha que diz " READONLY=no ". A alteração dessa linha carrega automaticamente a maior parte do sistema de arquivos raiz como somente leitura, preservando as operações de gravação necessárias em vários diretórios (diretórios e arquivos são carregados como tmpfs). As únicas alterações que tive que fazer foram definir /home , /root e alguns outros diretórios como graváveis através do diretório /etc/rwtab.d e modificar o / etc / fstab para carregar o sistema de arquivos raiz como somente leitura (alterado) defaults "para" ro "para raiz). Depois de definir " READONLY=yes " no arquivo /etc/sysconfig/readonly-root e definir meus diretórios graváveis necessários por meio de /etc/rwtab.d , bem como a fstab change, consegui fazer com que o sistema fosse carregado somente leitura, mas diretórios graváveis carregados na RAM.

Para mais informações, estes são os recursos que usei:

  • link (especifica como criar arquivos no diretório /etc/rwtab.d/ para carregar arquivos e diretórios como graváveis)
  • link (mais informações sobre o arquivo readonly-root e o Linux stateless)
  • link
  • E, claro, navegar por /etc/rc.d/rc.sysinit mostra como arquivos e pastas são montados como somente leitura. O arquivo readonly-root é analisado dentro do rc.sysinit , para aqueles que estão procurando como readonly-root é usado no processo init.

Além disso, fiz uma verificação rápida no Red Hat Enterprise Linux 7.0, e este arquivo ainda está lá e funciona. Meu ambiente de teste era o CentOS 6.6 e 7.0 em uma máquina virtual, assim como o RHEL 6.6 e 7.0 em um computador de placa única VME.

NOTA: Uma vez que a raiz é somente leitura, nenhuma alteração pode ser feita no sistema raiz. Por exemplo, você não pode usar o yum para instalar pacotes e fazê-los persistir na reinicialização. Portanto, para quebrar a raiz somente leitura, adicionei uma linha grub que remove o rhgb e o quiet (isso é apenas para depurar problemas de inicialização, você pode deixá-los se quiser) e adicionou " init=/bin/bash ". Isso me permitiu entrar em um terminal. Uma vez no terminal, eu digitei " mount - / -oremount,rw " para ter o sistema gravável. Uma vez gravável, modifiquei (usando vim ) /etc/sysconfig/readonly-root para dizer " READONLY=no " e reiniciei o sistema. Isso me permite executar a manutenção no sistema desativando o modo somente leitura. Se você estiver usando um cartão SD como eu sou, então a chave de leitura / gravação no cartão SD precisa ser configurada para gravável.

    
por 24.02.2015 / 19:50
3

Sim, é como o que faz um Live CD. Isso é feito usando um driver de sistema de arquivos especial que é projetado para sobrepor vários sistemas de arquivos uns sobre os outros - neste caso, um sistema de arquivos somente leitura com um disco RAM.

Existem muitas opções diferentes de sistemas de arquivos de sobreposição - tente pesquisar o UnionFS, o aufs e o overlayfs para ter uma ideia de quais são suas opções e quais podem ser as compensações entre elas.

    
por 27.01.2015 / 22:50
1

Para dar seguimento à resposta fornecida pelo Kinetic Arc, a maneira mais fácil de modificar o sistema em reinicializações subsequentes é adicionar "noreadonly" à linha de comando do kernel. Se isso não é algo que você espera fazer com muita frequência, basta pegar o grub e adicioná-lo manualmente é provavelmente suficiente. Ao desenvolver nossos sistemas somente de leitura, adicionamos uma entrada no grub.conf com o que foi adicionado e aumentamos um pouco o tempo limite. Uma vez que o desenvolvimento da imagem do sistema estiver completo, nós retiramos a entrada antes de distribuir a imagem.

    
por 13.03.2015 / 23:23