Я наткнувся на той самий випуск і закінчив писати це, щоб змусити його безболісно працювати в різних системах (на даний момент debian, ubuntu):
Запустіть 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 як завантажувача ви можете додати запис до /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
}
(змініть файли / розділи, щоб вони відповідали вашим)
Загальносистемна установка
Після того, як ви будете задоволені цим, ви можете зробити зміни постійними
(поки пакет initramfs-tools не буде оновлений).
У системі з хронізованим:
# 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
Відтепер звичайне зображення initrd підтримуватиме завантаження chroot.
Не потрібно використовувати окремий initrd.chroot, який може потім вийти з синхронізації з ним.
Докладніше дивіться boot_chroot .
vmlinuz root=/dev/sda1/chroot
не буде працювати. Можливо, можна було б імітувати це методом, подібним до того, що використовується уinitrd
. Дивіться, наприклад, тут . Ви монтуєтесь так,/new_root
як описано там, а потім замість цьогоcd /new_root
робитеcd /new_root/chroot
і продовжуєте.