chrootでホスト名を解決する方法は?


15

破損したUbunu 14.04をchrootで修復しようとしています。私がしたことは、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

回答:


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

1
「新しいUbuntuシステム」とは何ですか。言い換えれば、resolvconfによって名前解決が処理されるのはどのバージョンですか?
プロバックアップ

参照-それはバックポートされている可能性が@ProBackupは、少なくとも12.04から私が思うに、Ubuntuの12.04でのDNS
steeldriver

1
やってsudo mount --bind /run /mnt/run私がしくじっ17.10アップグレードにchrootするために働きました。答えてくれてありがとう!
ラビリンス

永続的な解決策はありますか?
gromit190

1
あなたバインドそうおそらく唯一必要なソケットをバインドソケットの多い全体/実行ディレクトリは、(多分nscdの、はresolvconfおよびsyslog)は良いアイデアである場合、それはおそらく、chroot環境の目的を破って少しだ
eckes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.