Parece que você está falando sobre o Debian.
Isto diz-lhe tudo se o tiver usando o sistema tradicional de inicialização . Especificamente:
The "/sbin/init" program is executed as the first program and performs
the main boot process. The Debian normally uses the traditional
sysvinit scheme with the sysv-rc package. See init(8), inittab(5), and
"/usr/share/doc/sysv-rc/README.runlevels.gz" for the exact
explanation. This main boot process essentially goes through the
following.
The Debian system goes into runlevel N (none) to initialize the system by following the "/etc/inittab" description.
The Debian system goes into runlevel S to initialize the system under the single-user mode to complete hardware initialization etc.
The Debian system goes into one of the specified multi-user runlevels (2 to 5) to start the system services.
O que acontece por nível de execução é que tudo em /etc/rcX.d é executado, em ordem alfabética, em que X é o nível de execução.
Então, se você cd /etc/rcS.d , verá um monte de links simbólicos para /etc/init.d , que começam com um número. O número está lá para determinar o pedido. Os que começam com S são executados quando o nível de execução é inserido, e aqueles que começam com K 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á links K .
Pise com cuidado aqui se você modificar ou renomear qualquer coisa. Certifique-se de testar seus scripts antes de se submeter a um processo de inicialização.
Ok, vamos tentar responder a pergunta agora, com as informações acima como fundo necessário.
Sob o Debian o /etc/rc.S/S11mountall.sh é onde o crucial "mount everything in fstab" acontece. No entanto, fstab é consultado para montar o sistema de arquivos raiz em /etc/rc.S/S07checkroot.sh .
Se você usar fstab para automontar um novo /etc , tudo em /etc/rc.S/S12* e mais alto usará o /etc no volume "overlay". No entanto, você precisa de um /etc/fstab válido no volume raiz no momento anterior.
Outras coisas que /etc é consultado incluem /etc/hostname , possivelmente algumas coisas relacionadas a udev (que é extremamente importante). Você precisa examinar todos os scripts de /etc/rc.S/S11* e inferior para saber exatamente. Se você realmente não quiser /etc até que ele seja montado a partir de uma partição externa, você está olhando para modificar esses scripts. Provavelmente não será tão simples quanto trocar a ordem de /etc/rc.S/S12mountall.sh para, por exemplo, /etc/rc.S/S00mountall.sh , mas você possivelmente poderia adicionar um novo script que inclua /etc de uma partição externa anteriormente.
Você pode usar o comando Linux mount --bind para montar o /etc original do volume raiz em algum lugar (como /etc_from_rootfs ) para copiá-lo quando fizer alterações em fstab ou outros arquivos consultados antes de /etc/rc.S/S12mountall.sh .
O kernel do Linux não faz o que o Windows faz, que é usar e requerer a presença do registro antes e durante a inicialização. O próprio kernel inicializará bem (mas não terrivelmente usualmente em 99% das instâncias) sem /etc , mas cabe aos programas userspace chamados depois (começando com init ), que então olham para /etc , para obter um ambiente de usuário decente pronto.
Som complicado? É por isso que ouvir @MattDMo é provavelmente prudente.