Posso montar / etc automaticamente em uma partição diferente?

0

Isso parece um problema de galinha e ovo.

Dentro do arquivo /etc/fstab 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 algum problema?
Suponha que eu tenha algum conteúdo sensível no novo /etc , incluindo o fstab idêntico e os diretórios init e rc apropriados.

Como uma pequena reformulação da pergunta: Qual é a ordem das operações de inicialização?
/etc/fstab é verificado primeiro para montar unidades antes que o restante dos scripts init.d sejam executados?

    
por Josh 01.06.2013 / 15:08

2 respostas

2

Esta é uma ideia terrível. Você não deve e não pode colocar /etc em uma partição diferente de / . O kernel procura por /etc/fstab e vários outros arquivos de configuração quando é inicializado a partir de / . Se /etc estivesse em uma partição diferente, ainda desconhecida, como o kernel encontraria /etc/fstab para montá-lo?

    
por 01.06.2013 / 15:44
0

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.

    
por 01.06.2013 / 15:28