ฉันเจอปัญหาเดียวกันและลงเอยด้วยการเขียนสิ่งนี้เพื่อให้มันทำงานอย่างไม่เจ็บปวดในระบบที่แตกต่างกัน (เดเบียนอูบุนตูในปัจจุบัน):
รันmake_chroot_initrd
สคริปต์เพื่อสร้างอิมเมจ initrd ที่เปิดใช้งาน chroot ใหม่จากอิมเมจที่มีอยู่:
# ./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
ภาพใหม่จะเหมือนกันทุกประการยกเว้นตอนนี้สามารถจัดการchroot=
พารามิเตอร์การบู๊ตได้
ด้วย grub2 ในฐานะ bootloader คุณสามารถเพิ่มรายการไปยัง/boot/grub/grub.cfg
:
(หรืออาจจะดีกว่า/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
}
(เปลี่ยนไฟล์ / พาร์ติชั่นให้ตรงกับของคุณ)
การติดตั้งทั่วทั้งระบบ
เมื่อคุณพอใจแล้วคุณสามารถทำการเปลี่ยนแปลงได้อย่างถาวร
(จนกว่าแพคเกจเครื่องมือเริ่มต้นจะได้รับการอัพเกรด)
ในระบบ chrooted:
# 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
จากนี้ไปเป็นรูปเริ่มต้นปกติจะรองรับการบูตแบบ chroot
ไม่จำเป็นต้องใช้ initrd.chroot แยกจากกันซึ่งอาจทำให้ข้อมูลไม่ตรงกัน
ดูรายละเอียดที่boot_chroot
vmlinuz root=/dev/sda1/chroot
จะไม่ทำงานinitrd
หนึ่งอาจจะจำลองนี้มีวิธีการคล้ายกับสิ่งที่จะใช้ในการ ดูเช่นที่นี่ คุณเมานต์/new_root
ตามที่อธิบายไว้แล้วแทนที่จะcd /new_root
ทำcd /new_root/chroot
และทำต่อ