วิธีแก้ปัญหาชื่อโฮสต์ใน chroot


15

ฉันพยายามซ่อม Ubunu ที่หักด้วย 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

ไม่ทำงานเช่นกัน


ฉันคิดว่าคำสั่งของฉันควรเป็น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 คุณสามารถเพิ่มการเชื่อมโยงเข้ากับระบบไฟล์ / run พร้อมกับการเชื่อมโยงอื่น ๆ ของคุณก่อนที่จะดำเนินการคำสั่ง chroot

sudo mount -o bind /run /mnt/run

เพื่อให้ระบบ chroot รับการตั้งค่า DNS ของระบบโฮสต์หรือเมื่อคุณอยู่ในระบบ chrooted ให้สร้าง /etc/resolv.conf แบบคงที่ชั่วคราวด้วย nameserver (s) ที่คุณเลือกเช่น

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

2
อะไรคือ "ระบบ Ubuntu รุ่นใหม่กว่า"; กล่าวอีกนัยหนึ่งเนื่องจากรุ่นใดที่ใช้การจำแนกชื่อโดย resolvconf
สำรองข้อมูล Pro

@ProBackup อย่างน้อย 12.04 ฉันคิดว่าถึงแม้ว่ามันอาจจะถูก backported - ดูDNS ใน Ubuntu 12.04
steeldriver

1
ทำsudo mount --bind /run /mnt/runทำงานให้ฉัน chrooting เป็นเรียบร้อยอัพเกรด 17.10 ขอบคุณสำหรับคำตอบ!
เขาวงกต

มีทางออกถาวรหรือไม่?
gromit190

1
มันอาจจะเป็นบิตเอาชนะวัตถุประสงค์ของ chroot ถ้าคุณผูกไดเรกทอรี / วิ่งทั้งที่มีจำนวนมากของซ็อกเก็ดังนั้นอาจจะมีผลผูกพันเฉพาะซ็อกเก็ตที่จำเป็นเป็นความคิดที่ดีกว่า (resolvconf อาจ NSCD และ syslog)
Eckes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.