Como resolver nomes de host no chroot?

15

Eu tento reparar um Ubunu 14.04 quebrado com chroot. O que fiz foi inicializar o Ubuntu a partir do USB montado no sistema original que precisa ser reparado e alterado para este sistema com o chroot:

sudo mount /dev/sdXY /mnt 
sudo mount -o bind /dev /mnt/dev 
sudo mount -o bind /sys /mnt/sys 
sudo mount -t proc /proc /mnt/proc 
sudo cp /proc/mounts /mnt/etc/mtab 
sudo chroot /mnt /bin/bash 

Isso funcionou bem, mas no chrootambiente não tenho acesso à Internet, portanto aptnão consigo resolver nomes de host. O que eu deveria fazer?

ping www.askubuntu.com

também não funciona.

user5950
fonte
Eu acho que o meu comando deve serfor d in dev sys run proc; do sudo mount -o bind /$d /mnt/$d ; done
Avinash Raj
tentar e voltar para mim em breve :-)
Avinash Raj
Parece funcionar, mas não tenho muita certeza, porque é outra razão para fazê-lo funcionar. Obrigado mesmo assim!
User5950

Respostas:

21

Nos sistemas Ubuntu mais recentes, a resolução de nomes é tratada pelo serviço resolvconf e /etc/resolv.conf é um link simbólico para /run/resolvconf/resolv.conf. Você pode adicionar uma montagem de ligação ao sistema de arquivos / run junto com suas outras montagens de ligação antes de executar o comando chroot

sudo mount -o bind /run /mnt/run

para que o sistema chroot pegue as configurações de DNS do sistema host ou, quando você estiver no sistema chroot, crie temporariamente um /etc/resolv.conf estático com o (s) servidor (es) de nomes de sua escolha, por exemplo

echo 'nameserver 8.8.4.4' | sudo tee -a /etc/resolv.conf
chave de aço
fonte
11
O que são "sistemas Ubuntu mais recentes"; em outras palavras, desde qual versão a resolução de nomes é tratada pelo resolvconf?
Pro Backup
@ProBackup pelo menos a partir de 12,04 Eu acho que, embora possa ter sido portado - ver DNS no Ubuntu 12.04
steeldriver
11
fazendo sudo mount --bind /run /mnt/runfuncionou para mim, fazendo um upgrade 17.10 mal feito. Obrigado pela resposta!
labirinto
Existe uma solução permanente?
precisa saber é o seguinte
11
É provavelmente um pouco derrotar o propósito de chroot se ligam todo o diretório / run com um monte de tomadas, então provavelmente obrigará apenas os soquetes necessários é uma idéia melhor (resolvconf, talvez nscd e syslog)
Eckes