A melhor maneira de criar um sistema de arquivos raiz, dividido entre somente leitura e gravável

2

Meu objetivo é criar um sistema onde as partes principais do sistema de arquivos raiz sejam armazenadas em um cartão SD somente leitura, com partes graváveis localizadas em um SSD configurado para rw. Isso deve ser feito com o objetivo de manter o sistema de arquivos raiz livre de adulterações e corrupção, e fazer com que a atualização e outras manutenções sejam um caso de troca em um cartão SD pré-configurado. Estou usando o Ubuntu 14.04 LTS.

Estou feliz com o particionamento e montagem regulares para cuidar de / home, / var e afins, mas isso se torna muito mais complicado ao lidar com / etc. Eu sei que algumas partes do / etc devem ser graváveis, como o mtab, e também estou ciente de que o / etc é acessado durante a inicialização. Tenho a sensação de que também é aconselhável que algumas partes do / etc persistam entre as botas.

Eu estou inclinado a usar overlayfs, apenas em / etc, com o upperdir contendo apenas os arquivos que eu quero persistir. Qualquer coisa que precise ser lida de / etc virá do abismo inferior. O upperdir será gravável com novos arquivos, embora estes só persistam durante as inicializações, se forem identificados em uma lista de desbloqueio. Um script deve ser executado no desligamento para copiar esses arquivos do upperdir para a lista de desbloqueio, e o oposto diretamente após o boot (ou durante, se necessário).

EDITAR

A lista de permissões tem como objetivo impedir que novos arquivos sejam gravados no upperdir e persistam entre as inicializações. Vou usar permissões para gerenciar isso também.

Esta é uma boa maneira de alcançar o resultado que eu quero, e quais são os problemas que eu deveria estar ciente?

Eu li em usar o mount -bind, mas entendo que ele tem problemas, eu também estou ciente do método de symlinking / etc / mtab para / proc / mounts / e sou cauteloso com essa abordagem também.

Qualquer ajuda seria muito apreciada, eu li muito nos fóruns e através da pesquisa geral na web, os detalhes sobre a implementação de overlayfs são muito escassos. Por favor, sinta-se à vontade para me informar se estou complicando demais as coisas, ou se há uma abordagem melhor. Também esta é a minha primeira pergunta, então seja gentil, por favor !!

EDITAR

Eu percebi que fiz um tipo de pergunta nebulosa baseada em opiniões, então pensei em reformular minha pergunta.

Existe alguma outra maneira útil de configurar esse tipo de sistema, além de uma montagem de união?

    
por Arronical 26.08.2014 / 11:27

2 respostas

3

aufs (eventualmente UnionFS) é antigo e overlayfs em nova solução para isso no Ubuntu. Este script para overlayfs funcionou fluentemente para mim com 14.04.1

Então, você precisa copiar o script para /etc/initramfs-tools/scripts/init-bottom/root-ro , então

#make the script executable
cmdod 755 /etc/initramfs-tools/scripts/init-bottom/root-ro

#add the module overlayfs to initramfs
echo overlayfs >> /etc/initramfs-tools/modules

#update initramfs
update-initramfs -u
update-grub

Reinicie para tentar. Em seguida, emita mount , você deve ter saída:

  

overlayfs-root em / type overlayfs (rw)

Você encontrará os diretórios / mnt / root-rw e / mnt / root-ro para as camadas "inferiores" e "superiores" de seus overlayfs.

Você também pode adicionar à capacidade de menu do grub para carregar sem overlayfs:

echo overlayfs >> /etc/initramfs-tools/modules
cp root-ro /etc/initramfs-tools/scripts/init-bottom/root-ro
chmod 755 cp /etc/initramfs-tools/scripts/init-bottom/root-ro

#########################GRUB#########################
cat /etc/grub.d/10_linux|sed  s/'linux_entry "${OS}" "${version}" simple'/'linux_entry "RW: ${OS}" "${version}" simple'/ |sed  s/'"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"'/'"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} disable-root-ro=true"'/ >/etc/grub.d/11_custom

sed -i.orig -e \
"/{GRUB_DISABLE_RECOVERY}\" != \"xtrue\" ]; then/s/^.*$/    \
if [ 0 ]; then/" \
/etc/grub.d/11_custom

sed -i.orig -e \
"/in_submenu=:/s/^.*$/    \
/" \
/etc/grub.d/11_custom

sed -i.orig -e \
"/\"Previous Linux versions/s/^.*$/    \
if [ 0 ]; then/" \
/etc/grub.d/11_custom

rm /etc/grub.d/11_custom.orig
#########################GRUB#########################

chmod 777 /etc/grub.d/11_custom
    
por BBK 05.01.2015 / 13:44
0

Estou um pouco mais adiante com a implementação deste sistema, e tudo parece estar indo bem até agora. Provavelmente significa que está prestes a desabar!

Usar o Overlayfs para criar um sistema de arquivos de união parece ser uma solução viável, embora eu ainda tenha que lidar com a questão dos scripts que estão sendo iniciados na inicialização! Há muita documentação sobre como fazer essa parte do processo.

O link postado acima por @Rinzwind foi um guia realmente sensato, e é repetido aqui; link

    
por Arronical 01.09.2014 / 14:18