ปัญหาที่เป็นที่รู้จักกันดีใน systemd distros (Arch Linux, OpenSUSE, Fedora)
Systemd จะแทนที่ sysvinit และให้ประโยชน์ที่ยอดเยี่ยมอย่างหนึ่งแก่สิ่งนี้ ใน sysvinit เมื่อคุณขอให้บริการเริ่มต้นมันจะสืบทอดบริบทการดำเนินการของบุคคลที่เรียกใช้สคริปต์ซึ่งรวมถึงตัวแปรสภาพแวดล้อม ulimits และอื่น ๆ Systemd ปรับปรุงเกี่ยวกับสิ่งนี้ในทางตรงกันข้ามโดยการแจ้ง daemon ซึ่งจะเริ่มบริการในสภาพแวดล้อมที่ดีมีสุขภาพดีและคงที่ซึ่งแน่นอนว่าการแสดงของบริการนั้นง่ายต่อการคาดการณ์มากเนื่องจากสภาพแวดล้อมจะเหมือนกันเสมอ
นี่ก็หมายความว่าเมื่อฉันเรียก systemctl จากภายใน chroot มันไม่เกี่ยวข้องว่าฉันอยู่ใน chroot สภาพแวดล้อมที่จะได้รับการสืบทอดยังคงเป็น PID 1 ไม่ใช่ของฉันในปัจจุบัน แต่มันแย่กว่านี้: เนื่องจากซ็อกเก็ตการสื่อสารอยู่ภายใน / run / systemd กระบวนการใน chroot จะไม่สามารถพูดคุยกับระบบ init ได้!
ดังนั้นคุณจะไปเกี่ยวกับ chroot'ing ใน systemd distros อย่างไร
หากสิ่งที่คุณต้องการจะทำคือมีภาชนะลินุกซ์หน้านี้ Arch วิกิพีเดียจะบอกคุณวิธีการตั้งค่าภาชนะลินุกซ์ในเวลาน้อยกว่า 30 systemd-nspawn
วินาทีขอบคุณ
หากคุณต้องการสภาพแวดล้อมแบบ chroot จริง ๆหน้าเว็บที่สวยงามและคมชัดนี้จะให้โซลูชันการทำงานสองแบบ (อันที่สองคือรุ่นที่แก้ไขแล้วของรุ่นที่เสนอที่จุดที่ 1)