Proc, sys ฯลฯ ใดที่ควรเชื่อมโยงกับการเชื่อมโยง (หรือไม่) เมื่อทำการ chrooting ในการแจกแจง“ การแทนที่”?


9

โดยทั่วไปแล้วคำตอบของคำถามอื่นจะทำให้เกิดการchrootแพร่กระจายไปยังลีนุกซ์อื่น ๆ เพื่อที่จะใช้เป็นหลักในการแทนที่เทมเพลตที่ถูก จำกัด (แต่ไม่สามารถถูกแทนที่ได้) การกระทำที่แนะนำก่อนที่จะทำงานchrootซึ่งฉันต้องการทำความเข้าใจให้ดีขึ้นคือ:

cp /etc/resolv.conf etc/resolv.conf
cp -a /lib/modules/$(uname -r) lib/modules
mount -t proc archproc proc
mount -t sysfs archsys sys
mount -o bind /dev dev
mount -t devpts archdevpts dev/pts
  • การคัดลอกresolv.confนั้นชัดเจน (การเข้าถึงเครือข่าย / อินเทอร์เน็ต) ในขณะที่ฉันไม่แน่ใจเกี่ยวกับเรื่องmodulesนี้ - จริง ๆ แล้วมันไม่จำเป็นเลยเมื่อchrootเข้าสู่ระบบ Gentoo ขั้นที่ 3 ใช่ไหม?
  • แต่ทำไมproc, sysและdev/ptsนั่งประจำที่แทนการใช้ผูกติด? อะไรคือความแตกต่างที่เกิดขึ้นจริงในสถานการณ์นี้ซึ่ง "ถูกต้องมากกว่า"?
  • HowTo นี้ผูกม้าprocและdevแต่ไม่dev/ptsว่ามิได้sysติดตั้งอยู่ในทุก นอกจากนี้ยังคัดลอก/etc/{hosts,fstab}ไปยังรูทใหม่ มันสมเหตุสมผลไหม ฉันไม่ควรรวมไว้/etc/mdadm.confเช่นกัน?

1
มันควรจะเหมือนกันส่วนใหญ่; พิจารณาระบบไฟล์ปกติ: พวกเขาจะต้องไม่ถูกเมาท์สองครั้ง (เว้นแต่ว่าพวกเขาจะทราบถึงคลัสเตอร์) แต่เคอร์เนลทำสิ่งนั้นอย่างแน่นอน ดังนั้นมันจึงมีการจัดการเหมือนเป็นภูเขาผูกภายในอยู่แล้ว
frostschutz

คำตอบ:


9

/etc/resolv.conf ถูกคัดลอกเพื่อไม่ให้ DNS เสียหาย

/ lib / modules ถูกคัดลอกเนื่องจากอาจจำเป็นต้องใช้ส่วนประกอบฮาร์ดแวร์บางอย่างที่ไม่จำเป็นต้องมีในขณะตั้งค่า chroot คุณต้องจำไว้ว่าคำถามเดิมที่คุณอ้างถึงใน OP ของคุณเกี่ยวข้องกับการแทนที่ NAS OS ด้วย Arch Linux คุณจะต้องใช้ไดรเวอร์สำหรับอีเธอร์เน็ตอาจไร้สายส่วนประกอบ USB ต่างๆและอื่น ๆ การคัดลอกโฟลเดอร์ / lib / modules ทำให้แน่ใจว่าสภาพแวดล้อมใหม่จะสามารถรับมือกับงานในอนาคตได้

คุณถูกต้องแน่นอนเกี่ยวกับการติดตั้งใหม่กับการผูกติดตั้ง หน้าArch Linux Wiki บน chrootใช้การติดตั้งใหม่และการติดตั้งการผูกตามที่คุณระบุตามคำตอบของโพสต์ที่คุณอ้างถึง:

cd /mnt/arch
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
mount -t devpts pts dev/pts/

(ฉันคิดว่าสิ่งนี้จะแสดงไวยากรณ์ของบรรทัดของคุณที่คัดลอกมาจากโพสต์นี้ผิด: dev ที่จะเมาท์นำหน้าจุดเมานท์)

อย่างไรก็ตามหน้าUbuntu ของมนุษย์บน chrootจะบอกเล่าเรื่องราวที่แตกต่าง:

sudo mount -o bind /proc /var/chroot/proc

นี่ / proc ถูกผูกเข้าด้วยกันไม่ใช่ติดใหม่

ฉันลองทั้งสองอย่างแล้วและหลังจากทดสอบสั้น ๆ ฉันก็ไม่สามารถสังเกตเห็นความแตกต่างได้ ไม่มากนักการทดสอบเป็นที่ยอมรับและฉันจะพักที่นี่เพื่อไม่ให้เกิดความแตกต่าง


6
  • /etc/resolv.conf- คุณต้องใช้ไฟล์นี้เพื่อแก้ไขคำขอ DNS ไม่จำเป็นในบางสถานการณ์:

    1. ไคลเอ็นต์ DHCP มีอยู่ใน chroot แต่จะถูกเรียกใช้งานและเซิร์ฟเวอร์ DHCP จะส่งคืนข้อมูลที่เหมาะสม (ซึ่งโดยปกติจะเป็นกรณีนี้)

    2. คุณไม่สนใจระบบเครือข่าย (หรือทำให้การสืบค้น DNS อย่างแม่นยำยิ่งขึ้นจากแอปพลิเคชันทั่วไปที่ต้องพึ่งพา/etc/resolv.conf) จากภายใน chroot

  • /lib/modules/$(uname -r)- สมเหตุสมผลในกรณีที่คุณอาจต้องโหลดโมดูลเพิ่มเติมสำหรับเคอร์เนลที่ใช้งานอยู่ หากไม่มีสิ่งนี้คุณจะต้องติดอยู่กับสิ่งที่คุณกำลังเรียกใช้อยู่ ดังนั้นหากคุณตั้งใจจะรันระบบ chrooted เป็นเวลานานคุณควรทำ ในทางกลับกันในกรณีเช่นนี้คุณควรใช้pivot_rootแทน (ซึ่งเป็นสิ่งที่ผู้ประทับจิตมักทำเมื่อสิ้นสุดชีวิต) หากคุณเพียงแค่ต้องทำเช่นติดตั้ง bootloader จาก chroot ก็ไม่จำเป็น (เนื่องจากต้องโหลดไดรเวอร์ที่จำเป็นทั้งหมดเพื่อให้คุณสามารถทำ chroot เองได้)

  • /procและ/devค่อนข้างชัดเจน - สิ่งเหล่านี้มีอินเตอร์เฟสระบบพื้นฐาน

  • /sysIIRC นั้นไม่ได้ใช้กันอย่างแพร่หลายในปี 2550 ซึ่งเป็นสิ่งที่ Slackware (ซึ่งค่อนข้างอนุรักษ์นิยม) วิธีลงวันที่ วันนี้ระบบของคุณมีแนวโน้มที่จะล้มเหลวอย่างใดอย่างหนึ่งโดยไม่ได้ (ตัวอย่างเช่นเมื่อบางสิ่งบางอย่างพยายามที่จะระบุฮาร์ดแวร์ประเภทบางอย่าง)

  • /dev/pts- ในช่วงหลายปีที่ผ่านมามีการเปลี่ยนแปลงวิธี/devจัดการต้นไม้ ในบางจุดอุปกรณ์/dev/ptsได้รับการจัดการโดยdevfs- ดูเช่นหัวข้อ LKML นี้สำหรับการอภิปรายปัญหาที่เป็นไปได้

  • การเชื่อมโยงการผูก - มีบางแง่มุมที่น่าสนใจของการผูกเมาท์ (อธิบายได้ดีในmount(8)หน้าคน) ตัวอย่างเช่นถ้าคุณมี:

    /some/device on /x/a (rw)
    /x/a/A on /x/b (rw)
    

    จากนั้นติดตั้งใหม่แบบ/x/aอ่านอย่างเดียวคุณจะไม่สามารถเปลี่ยนแปลงอะไร/x/Bได้ สิ่งใดที่เข้าใจได้ แต่อาจทำให้คุณประหลาดใจเป็นครั้งแรก คำถามที่ดีก็คือสิ่งที่ควรจะเกิดขึ้นกับในตัวอย่างข้างต้นเมื่อคุณ/x/b umount /x/aสำหรับฉันมันอยู่ไกลจากที่เห็นได้ชัดว่าคุณยังสามารถเข้าถึงต้นไม้ที่อยู่ข้างใต้ ดังนั้นการติดตั้งผูกอาจยุ่งยาก ฟังก์ชั่นเมื่อใช้กับระบบไฟล์ทั้งหมดมันเหมือนกัน

  • สิ่งอื่น ๆ จาก/etc/- แน่นอนว่าเหมาะสมที่จะคัดลอกการกำหนดค่าที่เกี่ยวข้องที่ใช้งานอยู่ คัดลอกเช่น/etc/passwd, /etc/shadow, /etc/groups อาจsshdทำให้ความรู้สึกเช่นเดียวกับปุ่มสำหรับเซิร์ฟเวอร์


คำตอบทั้งสองเกี่ยวกับดีอย่างเท่าเทียมกัน - ดังนั้นฉันโยนเหรียญที่หนึ่งที่จะยอมรับ ...
โทเบียส KIENZLER

0

/procจัดการกระบวนการและsysเปลี่ยนพารามิเตอร์ของเคอร์เนลหรือเข้าถึงข้อมูลของเคอร์เนลปัจจุบัน

ตอนนี้การพิจารณาว่าการโยงหมายถึงลักษณะสองทิศทางprocต้องไม่ถูกเมาท์นอก chroot เป็นทางออกที่ดีที่สุด

sysอาจเป็นได้ แต่ขึ้นอยู่กับโฮสต์เคอร์เนลที่ใช้งานอยู่ในปัจจุบันและต้องเหมือนกับdevเมานต์ที่เชื่อมโยง

/dev/ptsที่มีอยู่แล้วในขณะที่/devมีการผูกติด แต่เป็นส่วนหนึ่งของ chroot ดังนั้น remounting ใหม่มีการแนะนำเป็นptsmount -t devpts none /mnt/drive/dev/pts

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.