Jak rozwiązać nazwy hostów w chroot?

15

Próbuję naprawić zepsuty Ubunu 14.04 za pomocą chroot. To, co zrobiłem, to uruchomienie Ubuntu z zamontowanego na USB oryginalnego systemu, który trzeba naprawić i zmienić na ten system z chrootem:

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 

To działało dobrze, ale w chrootśrodowisku nie mam dostępu do Internetu, więc aptnie mogę rozwiązać nazw hostów. Co powinienem zrobić?

ping www.askubuntu.com

też nie działa.

user5950
źródło
Myślę, że moim poleceniem powinno byćfor d in dev sys run proc; do sudo mount -o bind /$d /mnt/$d ; done
Avinash Raj
postaraj się wkrótce do mnie wrócić :-)
Avinash Raj
Wydaje się, że działa, ale nie jestem do końca pewien, ponieważ może to być kolejny powód, dla którego działa. Mimo wszystko dziekuję!
user5950

Odpowiedzi:

21

W nowszych systemach Ubuntu rozpoznawanie nazw jest obsługiwane przez usługę resolvconf, a /etc/resolv.conf jest dowiązaniem symbolicznym do /run/resolvconf/resolv.conf. Możesz dodać podłączenie wiązania do systemu plików / run wraz z innymi podłączeniami wiązania przed wykonaniem polecenia chroot

sudo mount -o bind /run /mnt/run

aby system chroot przechwytywał ustawienia DNS systemu hosta lub, gdy jesteś w systemie chrootowanym, tymczasowo utwórz statyczny plik /etc/resolv.conf z wybranymi serwerami nazw, np.

echo 'nameserver 8.8.4.4' | sudo tee -a /etc/resolv.conf
steeldriver
źródło
2
Co to są „nowsze systemy Ubuntu”; innymi słowy, odkąd która wersja jest rozpoznawana przez resolvconf?
Pro Backup
@ProBackup przynajmniej od 12.04 Myślę, że chociaż mogło to być backportowane - patrz DNS w Ubuntu 12.04
steeldriver
1
robi sudo mount --bind /run /mnt/runpracował dla mnie chroot nieudanego 17.10 uaktualnienia. Dziękuję za odpowiedź!
labirynt
Czy istnieje trwałe rozwiązanie?
gromit190,
1
Prawdopodobnie jest to trochę sprzeczne z celem chroot, jeśli wiążesz cały katalog / run z wieloma gniazdami, więc prawdopodobnie wiązanie tylko potrzebnych gniazd jest lepszym pomysłem (resolvconf, może nscd i syslog)
eckes