Come risolvere i nomi host in chroot?


15

Provo a riparare un Ubunu 14.04 rotto con chroot. Quello che ho fatto è stato avviare Ubuntu da USB montato sul sistema originale che deve essere riparato e modificato su questo 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 

Funzionava bene, ma in chrootambiente non ho accesso a Internet, quindi aptnon sono in grado di risolvere i nomi host. Cosa dovrei fare?

ping www.askubuntu.com

non funziona neanche.


Penso che il mio comando dovrebbe esserefor d in dev sys run proc; do sudo mount -o bind /$d /mnt/$d ; done
Avinash Raj,

prova a rispondermi presto :-)
Avinash Raj,

Sembra funzionare, ma non sono del tutto sicuro, perché potrebbe essere un'altra ragione per farlo funzionare. Grazie lo stesso!
user5950

Risposte:


21

Sui nuovi sistemi Ubuntu, la risoluzione dei nomi è gestita dal servizio resolvconf e /etc/resolv.conf è un collegamento simbolico a /run/resolvconf/resolv.conf. È possibile aggiungere un mount bind al filesystem / run insieme agli altri mount bind prima di eseguire il comando chroot

sudo mount -o bind /run /mnt/run

in modo che il sistema chroot rilevi le impostazioni DNS del sistema host o, una volta entrato nel sistema chroot, crei temporaneamente un /etc/resolv.conf statico con i nameserver di tua scelta, ad es.

echo 'nameserver 8.8.4.4' | sudo tee -a /etc/resolv.conf

2
Cosa sono i "sistemi Ubuntu più recenti"; in altre parole, da quale versione viene gestita la risoluzione dei nomi da resolvconf?
Pro Backup

@ProBackup almeno dalla 12.04 penso, anche se potrebbe essere stato
eseguito il

1
facendo ha sudo mount --bind /run /mnt/runfunzionato per me chrooting in un aggiornamento 17.10 fallito. Grazie per la risposta!
labirinto il

C'è una soluzione permanente?
gromit190,

1
Probabilmente è un po 'sconfiggere lo scopo di chroot se si collega l'intera directory / run con molti socket, quindi probabilmente legare solo i socket necessari è un'idea migliore (resolvconf, forse nscd e syslog)
eckes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.