Comment résoudre les noms d'hôtes dans chroot?

15

J'essaie de réparer un Ubunu 14.04 cassé avec chroot. Ce que j'ai fait, c'est de démarrer Ubuntu à partir d'un port USB monté sur le système d'origine qui doit être réparé et changé pour ce système avec 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 

Cela a bien fonctionné, mais dans l' chrootenvironnement, je n'ai pas accès à Internet, donc je ne peux aptpas résoudre les noms d'hôte. Qu'est-ce que je suis supposé faire?

ping www.askubuntu.com

ne fonctionne pas non plus.

user5950
la source
Je pense que mon commandement devrait êtrefor d in dev sys run proc; do sudo mount -o bind /$d /mnt/$d ; done
Avinash Raj
essayez de me recontacter bientôt :-)
Avinash Raj
Semble fonctionner, mais je ne suis pas sûr, car ce peut être une autre raison de le faire fonctionner. Merci quand même!
user5950

Réponses:

21

Sur les nouveaux systèmes Ubuntu, la résolution de noms est gérée par le service resolvconf, et /etc/resolv.conf est un lien symbolique vers /run/resolvconf/resolv.conf. Vous pouvez soit ajouter un montage de liaison au système de fichiers / run avec vos autres montages de liaison avant d'exécuter la commande chroot

sudo mount -o bind /run /mnt/run

afin que le système chroot récupère les paramètres DNS du système hôte ou, une fois que vous êtes dans le système chrooté, créez temporairement un /etc/resolv.conf statique avec le ou les serveurs de noms de votre choix, par exemple

echo 'nameserver 8.8.4.4' | sudo tee -a /etc/resolv.conf
tournevis
la source
2
Que sont les "nouveaux systèmes Ubuntu"; en d'autres termes, depuis quelle version la résolution de noms est-elle gérée par resolvconf?
Pro Backup
@ProBackup au moins à partir du 12.04 je pense, bien qu'il ait pu être rétroporté - voir DNS dans Ubuntu 12.04
steeldriver
1
faire a sudo mount --bind /run /mnt/runfonctionné pour moi chrootant dans une mise à niveau 17.10 bâclée. Merci d'avoir répondu!
labyrinthe
Y a-t-il une solution permanente?
gromit190
1
Cela va probablement un peu à l'encontre du but de chroot si vous liez tout le répertoire / run avec beaucoup de sockets, donc probablement ne lier que les sockets nécessaires est une meilleure idée (resolvconf, peut-être nscd et syslog)
eckes