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

0

Parece um problema de galinha e ovo.

Dentro do /etc/fstabarquivo na partição raiz, posso especificar uma partição diferente para montar no /etcponto 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/fstabverificado primeiro a montagem de unidades antes da execução do restante dos scripts init.d?

Josh
fonte

Respostas:

2

Esta é uma péssima ideia. Você não deve e não pode colocar /etcem uma partição diferente da /. O kernel procura /etc/fstabe vários outros arquivos de configuração, a partir do qual é inicializado /. Se /etcestivesse em uma partição diferente, ainda desconhecida, como o kernel encontraria /etc/fstabpara montá-lo?

MattDMo
fonte
O kernel não usa /etc/fstabpara nada. São os initramfs que são montados /(e frequentemente /usr), e o init executado a partir das /montagens é o restante.
grawity
@rawity - isso é verdade, eu estava tentando ser rápido na minha resposta. Eu estava usando a palavra "kernel" para me referir ao "processo geral de inicialização". Obrigado por esclarecer.
precisa saber é o seguinte
0

Parece que você está falando sobre o Debian.

Isso diz tudo, se você o tiver usando o sistema init tradicional. Especificamente:

O programa "/ sbin / init" é executado como o primeiro programa e executa o processo principal de inicialização. O Debian normalmente usa o esquema sysvinit tradicional com o pacote sysv-rc. Veja init (8), inittab (5) e "/usr/share/doc/sysv-rc/README.runlevels.gz" para a explicação exata. Esse processo principal de inicialização basicamente segue o seguinte.

  • O sistema Debian entra no nível de execução N (nenhum) para inicializar o sistema seguindo a descrição "/ etc / inittab".

  • O sistema Debian entra no nível de execução S para inicializar o sistema no modo de usuário único para concluir a inicialização do hardware, etc.

  • O sistema Debian entra em um dos níveis de execução multiusuário especificados (2 a 5) para iniciar os serviços do sistema.

O que acontece por nível de execução é que tudo /etc/rcX.dé executado, em ordem alfabética, onde Xestá o nível de execução.

Então, se você cd /etc/rcS.dverá /etc/init.dvá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 com Ssão executados quando o nível de execução é inserido e os que começam com Ksã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á Klinks 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ê fstabmontar automaticamente um novo /etc, tudo dentro /etc/rc.S/S12*e mais alto estará usando o /etcvolume "overlay". No entanto, você precisa de um válido /etc/fstabno volume raiz naquele momento com antecedência.

Outras coisas que /etcsão consultadas incluem /etc/hostname, possivelmente algumas coisas relacionadas a udev(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 /etcaté 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 /etcde uma partição externa anteriormente.

Você pode usar o mount --bindcomando Linux para montar o original do volume raiz em /etcalgum lugar (como /etc_from_rootfs) para copiá-lo quando fizer alterações fstabou 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 com init), que depois observam /etc, para preparar um ambiente de usuário decente.

Parece complicado? É por isso que é provável que ouvir @MattDMo seja prudente.

LawrenceC
fonte
Isso é informativo, mas realmente não aborda minha pergunta.
Josh
Haha, agora que eu li novamente, não, mas espero que tenha explicado como a ordem das operações de inicialização é determinada no Debian e para onde mudar o que faz, o que é muito personalizável.
LawrenceC