如何在chroot中解析主机名?


15

我尝试用chroot修复损坏的Ubunu 14.04。我所做的是从USB安装的原始系统启动Ubuntu,该原始系统必须使用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

也不起作用。


我认为我的命令应该是for d in dev sys run proc; do sudo mount -o bind /$d /mnt/$d ; done
Avinash Raj

尝试尽快回复我:-)
Avinash Raj

似乎可以工作,但是我不太确定,因为这是使其工作的另一个原因。还是要谢谢你!
user5950

Answers:


21

在较新的Ubuntu系统上,名称解析由resolvconf服务处理,/ etc / resolv.conf是/run/resolvconf/resolv.conf的符号链接。您可以在执行chroot命令之前将绑定安装与其他绑定安装一起添加到/ run文件系统中

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

2
什么是“较新的Ubuntu系统”;换句话说,resolvconf处理哪个版本的名称解析?
Pro Backup

我认为@ProBackup至少从12.04起,尽管它可能已经被
反向

1
做着sudo mount --bind /run /mnt/run工作对我来说Chroot到一个拙劣的17.10升级。感谢您的回答!
迷宫

有永久解决方案吗?
gromit190 '18

1
如果将整个/ run目录与许多套接字绑定在一起,则可能会
破坏
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.