Một vấn đề nổi tiếng trong các bản phát hành hệ thống (Arch Linux, OpenSUSE, Fedora).
Systemd thay thế sysvinit và cung cấp một lợi thế lớn cho việc này. Trong sysvinit, khi bạn yêu cầu một dịch vụ bắt đầu, nó sẽ kế thừa bối cảnh thực thi của người đang gọi tập lệnh, bao gồm các biến môi trường, các lỗ hổng, v.v. Systemd cải thiện điều này ngược lại bằng cách thông báo một daemon, sẽ khởi động dịch vụ trong một môi trường ổn định, lành mạnh, ổn định, trong đó tất nhiên các màn trình diễn của các dịch vụ dễ dự đoán hơn, vì môi trường luôn giống nhau.
Điều này ngụ ý rằng, khi tôi gọi systemctl từ bên trong chroot, việc tôi ở bên trong chroot là không liên quan, môi trường sẽ được kế thừa vẫn là của PID 1, không phải là hiện tại của tôi. Nhưng nó còn tệ hơn thế này: vì các ổ cắm giao tiếp được đặt bên trong / run / systemd, một quá trình trong một chroot thậm chí sẽ không thể nói chuyện với hệ thống init!
Vì vậy, làm thế nào để bạn đi về chroot'ing trong distro systemd?
Nếu tất cả những gì bạn muốn làm là có một thùng chứa Linux, trang Arch Wiki này sẽ cho bạn biết cách thiết lập một thùng chứa Linux trong chưa đầy 30 giây, nhờ systemd-nspawn
.
Nếu thay vào đó bạn thực sự muốn có một môi trường chroot, trang Web đẹp và rõ ràng này sẽ cung cấp cho bạn hai giải pháp hoạt động (giải pháp thứ hai là phiên bản sửa đổi của trang được cung cấp tại điểm # 1).