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.