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 arquivoreadonly-root
é analisado dentro dorc.sysinit
, para aqueles que estão procurando comoreadonly-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.