Tôi đã gặp một vấn đề tương tự và cuối cùng đã viết nó để làm cho nó hoạt động không đau trên các hệ thống khác nhau (hiện tại là debian, ubfox):
Chạy make_chroot_initrd
tập lệnh để tạo một hình ảnh initrd kích hoạt chroot mới từ hình ảnh hiện có:
# ./make_chroot_initrd /chroot/trusty/boot/initrd.img-3.13.0-32-generic
making new initrd: /chroot/trusty/boot/initrd.img-3.13.0-32-generic.chroot
Hình ảnh mới sẽ giống hệt nhau, ngoại trừ bây giờ nó có thể xử lý một chroot=
tham số khởi động.
Với grub2 là bootloader, bạn có thể thêm một mục vào /boot/grub/grub.cfg
:
(hoặc có lẽ tốt hơn /etc/grub.d/40_custom
)
menuentry "ubuntu trusty, (linux 3.13.0-32) (chroot)" {
insmod ext2 # or whatever you're using ...
set root='(hd0,7)' # partition containing the chroot
set chroot='/chroot/trusty' # chroot path
linux $chroot/boot/vmlinuz-3.13.0-32-generic root=/dev/sda7 chroot=$chroot rw
initrd $chroot/boot/initrd.img-3.13.0-32-generic.chroot
}
(thay đổi tập tin / phân vùng để phù hợp với của bạn)
Cài đặt toàn hệ thống
Khi bạn hài lòng với nó, bạn có thể thay đổi vĩnh viễn
(cho đến khi gói công cụ initramfs được nâng cấp).
Trong hệ thống chroot:
# cd /usr/share/initramfs-tools
# cp -pdrv . ../initramfs-tools.orig # backup
# patch -p1 < path_to/boot_chroot/initrd.patch
# rm *.orig */*.orig
# update-initramfs -u
Từ bây giờ, hình ảnh initrd thông thường sẽ hỗ trợ khởi động chroot.
Không cần sử dụng initrd.chroot riêng biệt mà có thể không đồng bộ với nó sau đó.
Xem boot_chroot để biết chi tiết.
vmlinuz root=/dev/sda1/chroot
sẽ không làm việc Một người có lẽ có thể mô phỏng điều này với một phương thức tương tự như những gì được sử dụng tronginitrd
. Xem ví dụ ở đây . Bạn gắn kết/new_root
như mô tả ở đó, sau đó thay vìcd /new_root
làmcd /new_root/chroot
và tiếp tục.