Parece um problema de galinha e ovo.
Dentro do /etc/fstab
arquivo na partição raiz, posso especificar uma partição diferente para montar no /etc
ponto de montagem, como:
/dev/sda6 /etc defaults 0 0
Isso poderia causar problemas?
Suponha que eu tenha algum conteúdo sensível no novo /etc
, incluindo os diretórios fstab e init e rc idênticos.
Como uma pequena reformulação da pergunta: qual é a ordem das operações de inicialização?
É /etc/fstab
verificado primeiro a montagem de unidades antes da execução do restante dos scripts init.d?
fonte
/etc/fstab
para nada. São os initramfs que são montados/
(e frequentemente/usr
), e o init executado a partir das/
montagens é o restante.Parece que você está falando sobre o Debian.
Isso diz tudo, se você o tiver usando o sistema init tradicional. Especificamente:
O que acontece por nível de execução é que tudo
/etc/rcX.d
é executado, em ordem alfabética, ondeX
está o nível de execução.Então, se você
cd /etc/rcS.d
verá/etc/init.d
vários links simbólicos para , que começam com um número. O número está lá para determinar o pedido. Os que começam comS
são executados quando o nível de execução é inserido e os que começam comK
são executados quando o nível de execução é encerrado. O nível de execução "S" é usado apenas para inicialização, portanto, não háK
links lá.Tome cuidado aqui se você modificar ou renomear qualquer coisa. Teste seus scripts antes de submeter-se a um processo de inicialização.
Ok, vamos tentar responder à pergunta agora, com as informações acima, conforme o necessário.
No Debian,
/etc/rc.S/S11mountall.sh
é onde o crucial "montar tudo no fstab" acontece. No entanto,fstab
é consultado para montar o sistema de arquivos raiz em/etc/rc.S/S07checkroot.sh
.Se você
fstab
montar automaticamente um novo/etc
, tudo dentro/etc/rc.S/S12*
e mais alto estará usando o/etc
volume "overlay". No entanto, você precisa de um válido/etc/fstab
no volume raiz naquele momento com antecedência.Outras coisas que
/etc
são consultadas incluem/etc/hostname
, possivelmente algumas coisas relacionadas audev
(o que é extremamente importante). Você precisa olhar para todos os scripts/etc/rc.S/S11*
e para saber exatamente. Se você realmente não quer nada/etc
até que seja montado a partir de uma partição externa, você está olhando para modificar esses scripts. Provavelmente não será tão simples quanto mudar a ordem de/etc/rc.S/S12mountall.sh
, por exemplo/etc/rc.S/S00mountall.sh
, mas é possível adicionar um novo script que é trazido/etc
de uma partição externa anteriormente.Você pode usar o
mount --bind
comando Linux para montar o original do volume raiz em/etc
algum lugar (como/etc_from_rootfs
) para copiá-lo quando fizer alteraçõesfstab
ou outros arquivos consultados anteriormente/etc/rc.S/S12mountall.sh
.O kernel do Linux não faz o que o Windows faz, que é usar e exigir a presença do registro antes e durante a inicialização. O próprio kernel inicializa bem (mas não é terrivelmente utilizável em 99% das instâncias) sem
/etc
, mas cabe aos programas de espaço de usuário chamados após (começando cominit
), que depois observam/etc
, para preparar um ambiente de usuário decente.Parece complicado? É por isso que é provável que ouvir @MattDMo seja prudente.
fonte