¿Cómo resolver nombres de host en chroot?

15

Intento reparar un Ubunu 14.04 roto con chroot. Lo que hice fue arrancar Ubuntu desde USB montado en el sistema original que debe ser reparado y cambiado a este sistema con 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 

Eso funcionó bien, pero en un chrootentorno no tengo acceso a Internet, por aptlo que no puedo resolver los nombres de host. ¿Que se supone que haga?

ping www.askubuntu.com

tampoco funciona

usuario5950
fuente
Creo que mi comando debería serfor d in dev sys run proc; do sudo mount -o bind /$d /mnt/$d ; done
Avinash Raj
intenta y responde pronto :-)
Avinash Raj
Parece funcionar, pero no estoy muy seguro, porque podría ser otra razón para hacerlo funcionar. ¡Gracias de todos modos!
user5950

Respuestas:

21

En los sistemas Ubuntu más nuevos, la resolución de nombres es manejada por el servicio resolvconf, y /etc/resolv.conf es un enlace simbólico a /run/resolvconf/resolv.conf. Puede agregar un montaje de enlace al sistema de archivos / run junto con sus otros montajes de enlace antes de ejecutar el comando chroot

sudo mount -o bind /run /mnt/run

para que el sistema chroot recoja la configuración DNS del sistema host o, una vez que esté en el sistema chroot, cree temporalmente un /etc/resolv.conf estático con los servidores de nombres que elija, p. ej.

echo 'nameserver 8.8.4.4' | sudo tee -a /etc/resolv.conf
conductor de acero
fuente
2
¿Qué son los "nuevos sistemas Ubuntu"; en otras palabras, ¿desde qué versión se resuelve la resolución de nombres por resolvconf?
Pro Backup
@ProBackup, al menos desde 12.04, creo, aunque puede haber sido respaldado - ver DNS en Ubuntu 12.04
steeldriver
1
hacer sudo mount --bind /run /mnt/runfuncionó para mí chrooting en una actualización fallida 17.10. ¡Gracias por la respuesta!
laberinto
¿Hay una solución permanente?
gromit190
1
Probablemente sea un poco frustrante el propósito de chroot si vincula todo el directorio / run con muchos sockets, por lo que probablemente vincular solo los sockets necesarios es una mejor idea (resolvconf, quizás nscd y syslog)
eckes