Как разрешить имена хостов в chroot?

15

Пытаюсь починить сломанную Убуну 14.04 с помощью chroot. Что я сделал, так это загрузил Ubuntu с USB-подключения, смонтировав исходную систему, которую нужно исправить и заменить на эту систему с помощью 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 

Это работало нормально, но в chrootсреде у меня нет доступа к Интернету, поэтому я aptне могу разрешить имена хостов. Что я должен сделать?

ping www.askubuntu.com

тоже не работает.

user5950
источник
Я думаю, что моя команда должна бытьfor d in dev sys run proc; do sudo mount -o bind /$d /mnt/$d ; done
Авинаш Радж
попробуйте вернуться ко мне в ближайшее время :-)
Avinash Raj
Кажется, работает, но я не совсем уверен, потому что это может быть другой причиной, заставляющей это работать. Все равно спасибо!
user5950

Ответы:

21

В более новых системах Ubuntu разрешение имен обрабатывается службой resolvconf, а /etc/resolv.conf является символической ссылкой на /run/resolvconf/resolv.conf. Вы можете добавить монтирование bind в файловую систему / run вместе с другими монтированиями bind перед выполнением команды chroot

sudo mount -o bind /run /mnt/run

так что система chroot выбирает настройки DNS хост-системы или, как только вы попадаете в систему chroot, временно создайте статический файл /etc/resolv.conf с выбранным вами сервером имен, например

echo 'nameserver 8.8.4.4' | sudo tee -a /etc/resolv.conf
steeldriver
источник
2
Что такое «более новые системы Ubuntu»; другими словами, с какой версии разрешение имен обрабатывается resolvconf?
Pro Backup
@ProBackup по крайней мере с 12.04, я думаю, хотя, возможно, это было перенесено - см. DNS в Ubuntu 12.04
steeldriver
1
Это sudo mount --bind /run /mnt/runпомогло мне получить доступ к неудачному обновлению 17.10. Спасибо за ответ!
Лабиринт
Есть ли постоянное решение?
gromit190
1
Вероятно, это немного побеждает назначение chroot, если вы связываете весь каталог / run с большим количеством сокетов, поэтому, вероятно, лучше связать только необходимые сокеты (resolvconf, возможно, nscd и syslog)
eckes