Essa resposta a outra pergunta basicamente se resume chroot
a outra distribuição Linux, a fim de usá-la principalmente como um substituto para seu pai muito restrito (mas insubstituível). As ações sugeridas antes da execução chroot
, que eu gostaria de entender melhor, são:
cp /etc/resolv.conf etc/resolv.conf
cp -a /lib/modules/$(uname -r) lib/modules
mount -t proc archproc proc
mount -t sysfs archsys sys
mount -o bind /dev dev
mount -t devpts archdevpts dev/pts
- A cópia
resolv.conf
é clara (acesso à rede / internet), embora eu não tenha certeza sobremodules
- isso realmente parecia desnecessário aochroot
entrar no sistema Gentoo stage3, certo? - Mas por que
proc
,sys
edev/pts
remontado em vez de usar bind-montada? Qual é a diferença real nessa situação, que é "mais correta"? - Este HowTo bind-montagens
proc
edev
, mas nemdev/pts
nemsys
são montados. Além disso, ele copia/etc/{hosts,fstab}
para a nova raiz. Isso faz sentido? Não devo incluir/etc/mdadm.conf
também?
Respostas:
O /etc/resolv.conf é copiado para não perder os DNSs.
/ lib / modules é copiado porque porque pode ser necessário usar algum componente de hardware que não precisa estar presente no momento da configuração do chroot. Você deve se lembrar que a pergunta original a que você se refere no seu OP diz respeito à substituição de um sistema operacional NAS pelo Arch Linux. Assim, você precisará de drivers para Ethernet, possivelmente sem fio, vários componentes USB e assim por diante. Copiar a pasta / lib / modules garante que o novo ambiente possa lidar com suas tarefas futuras.
Você está realmente certo quanto à remontagem versus montagem de ligação. A página Wiki do Arch Linux no chroot usa remontagem e montagem de ligação conforme especificado, conforme a resposta à postagem a que você se refere:
(Acho que isso mostra que a sintaxe de suas linhas, copiada desta postagem , está errada: o desenvolvedor a ser montado precede o ponto de montagem).
No entanto, a página de manual do Ubuntu no chroot conta uma história diferente:
Aqui / proc é montado em ligação, não remontado.
Na verdade, tentei as duas coisas e, após um breve teste, não consegui notar nenhuma diferença. É verdade que não é um teste muito grande e, portanto, vou encerrar meu caso aqui, para que não faça muita diferença.
fonte
/etc/resolv.conf
- você precisa deste arquivo para resolver solicitações de DNS. Não é necessário em algumas circunstâncias:um cliente DHCP está disponível no chroot, é executado e o servidor DHCP retorna as informações apropriadas (o que geralmente é o caso).
você não está interessado em trabalhar em rede (ou, mais precisamente, em fazer consultas DNS a partir de aplicativos habituais
/etc/resolv.conf
) de dentro do chroot./lib/modules/$(uname -r)
- faz sentido caso você precise carregar módulos adicionais para o kernel ativo. Sem isso, você ficaria preso ao que quer que esteja executando no momento. Portanto, se você pretende executar o sistema chrootado por mais tempo, provavelmente deve fazê-lo. Por outro lado, nesse caso, você provavelmente deveria usarpivot_root
(o que geralmente o initrd faz no final de sua vida). Se você precisar fazer isso, por exemplo, para instalar o gerenciador de inicialização a partir do chroot, não será necessário (já que todos os drivers necessários devem ser carregados para que você possa executar o chroot de qualquer maneira)./proc
e/dev
são bastante óbvios - eles contêm interfaces básicas do sistema./sys
O IIRC não era tão amplamente utilizado em 2007, que é o que o Slackware (que por si só é bastante conservador) é datado. Atualmente, é provável que seu sistema falhe de alguma forma sem ele (por exemplo, quando algo tenta enumerar algum tipo de hardware)./dev/pts
- ao longo dos anos, houve várias mudanças na forma como a/dev
árvore é tratada. Em algum momento, os dispositivos/dev/pts
foram manipuladosdevfs
- veja, por exemplo, este thread LKML para discussão de possíveis problemas.montagem de ligação - existem alguns aspectos interessantes das montagens de ligação (bastante bem explicadas na
mount(8)
página de manual). Por exemplo, se você tiver:e remontar
/x/a
somente leitura, você não poderá alterar nada/x/B
. O que é compreensível, mas pode surpreendê-lo pela primeira vez. Outra boa pergunta é o que deve acontecer/x/b
no exemplo acima quando vocêumount /x/a
. Para mim, está longe de ser óbvio, que você ainda pode acessar a árvore abaixo dela. Portanto, a montagem do bind pode ser complicada. Funcionalmente, quando usado em todo o sistema de arquivos, é o mesmo.outras coisas
/etc/
- definitivamente faz sentido copiar configurações relevantes que sejam úteis. Copiando por exemplo/etc/passwd
,/etc/shadow
,/etc/groups
pode fazer sentido, bem como chaves de servidor parasshd
.fonte
/proc
gerencia processos esys
altera os parâmetros do kernel ou acessa informações do kernel atual.Agora, levando em consideração que o vínculo implica uma natureza bidirecional,
proc
não deve ser montado fora do chroot como a melhor solução.sys
poderia ser, mas depende do host atual do kernel em execução e deve ser o mesmo quedev
, montado como bind./dev/pts
já estão disponíveis como/dev
montados em ligação, mas fazem parte do chroot; portanto,pts
é recomendável remontar o novo comomount -t devpts none /mnt/drive/dev/pts
.fonte