Como o chrooting em um sistema operacional funciona?

2

Já vi inúmeros exemplos on-line que, ao gerar a imagem do initramfs manualmente ou ao instalar o grub em uma partição, ou ao reparar uma instalação interrompida, o que você faz é chroot no SO a partir de um Live CD.

Agora, o conceito de chroot, em si mesmo, não é difícil de entender, apenas muda a raiz para qualquer diretório que especificamos e inicia um shell com essa raiz. Também podemos configurar as variáveis de ambiente conforme necessário.

O que me confunde é a preparação que ocorre antes que o chroot real seja executado, especificamente a montagem dos sistemas de arquivos virtuais.

Veja este exemplo -:

Primeiro montamos a partição / root -:

$ mount -t ext4 /dev/sda5 /mnt/ubuntu

Em seguida, montamos os sistemas de arquivos virtuais -:

$ mount -t proc none /mnt/ubuntu/proc
$ mount -o bind /dev /mnt/ubuntu/dev
$ mount -o bind /sys /mnt/ubuntu/sys

Isso é o que me confunde. Esses sistemas de arquivos virtuais são do LiveCD, certo? Como eles podem trabalhar com o SO no qual eu vou chroot? Eles pertencem a um SO diferente.

Por exemplo, nesta resposta a uma pergunta que fiz anteriormente, a razão é a seguinte: por que comandos como update-initramfs precisa das montagens acima porque precisa de informações sobre o sistema operacional antes de gerar a imagem do kernel. Então, como isso está acontecendo aqui? Eu estou montando os sistemas de arquivos do LiveCD e não o sistema operacional para o qual eu estou construindo a imagem do kernel, então ele usará as informações do LiveCD e não do SO alvo. gerando a imagem do kernel para o LiveCD. Como isso é desejável? (Corrija-me se estiver errado)

Além disso, por que eles são necessários? E por que ligá-los ao invés de apenas montá-los?

Após os passos acima, tipicamente nos exemplos que vi até agora, o comando chroot é executado.

$ chroot /mnt

Até agora não encontrei nenhuma explicação clara para as minhas perguntas acima. Esperando que alguém possa explicar isso em termos leigos.

    
por ng.newbie 06.08.2017 / 17:40

1 resposta

1

/proc e /sys são a interface para o kernel em execução; eles não estão realmente relacionados ao sistema operacional instalado. /dev é o mesmo mesmo assim.

Você precisa desses diretórios para a maioria dos programas. Mas você não precisa prepará-los antes do chroot . Você pode chroot no volume da raiz pura e montar o resto de lá (como o sistema operacional faria quando ele é iniciado).

    
por 06.08.2017 / 17:52

Tags