Qual dos proc, sys etc. deve ser montado em ligação (ou não) ao fazer o chroot em uma distribuição de "substituição"?


9

Essa resposta a outra pergunta basicamente se resume chroota 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 sobre modules- isso realmente parecia desnecessário ao chrootentrar no sistema Gentoo stage3, certo?
  • Mas por que proc, syse dev/ptsremontado em vez de usar bind-montada? Qual é a diferença real nessa situação, que é "mais correta"?
  • Este HowTo bind-montagens proce dev, mas nem dev/ptsnem syssão montados. Além disso, ele copia /etc/{hosts,fstab}para a nova raiz. Isso faz sentido? Não devo incluir /etc/mdadm.conftambém?

1
Deve ser quase idêntico; considere sistemas de arquivos regulares: eles não devem ser montados duas vezes (a menos que tenham conhecimento de cluster), mas o kernel faz exatamente isso; portanto, é essencialmente tratado como uma montagem de ligação internamente de qualquer maneira.
Frostschutz

Respostas:


9

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:

cd /mnt/arch
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
mount -t devpts pts dev/pts/

(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:

sudo mount -o bind /proc /var/chroot/proc

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.


6
  • /etc/resolv.conf- você precisa deste arquivo para resolver solicitações de DNS. Não é necessário em algumas circunstâncias:

    1. um cliente DHCP está disponível no chroot, é executado e o servidor DHCP retorna as informações apropriadas (o que geralmente é o caso).

    2. 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 usar pivot_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).

  • /proce /devsão bastante óbvios - eles contêm interfaces básicas do sistema.

  • /sysO 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/ptsforam manipulados devfs- 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:

    /some/device on /x/a (rw)
    /x/a/A on /x/b (rw)
    

    e remontar /x/asomente 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/bno 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 para sshd.


Ambas as respostas são igualmente bom - assim que eu joguei uma moeda de um deles para aceitar ...
Tobias KIENZLER

0

/procgerencia processos e sysaltera 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, procnão deve ser montado fora do chroot como a melhor solução.

syspoderia ser, mas depende do host atual do kernel em execução e deve ser o mesmo que dev, montado como bind.

/dev/ptsjá estão disponíveis como /devmontados em ligação, mas fazem parte do chroot; portanto, ptsé recomendável remontar o novo como mount -t devpts none /mnt/drive/dev/pts.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.