Mi sono imbattuto nello stesso problema e ho finito per scriverlo per farlo funzionare indolore su diversi sistemi (debian, Ubuntu attualmente):
Esegui lo make_chroot_initrd
script per creare una nuova immagine initrd abilitata per chroot da quella esistente:
# ./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
La nuova immagine sarà esattamente la stessa, tranne ora che può gestire un chroot=
parametro di avvio.
Con grub2 come bootloader puoi aggiungere una voce a /boot/grub/grub.cfg
:
(o forse meglio /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
}
(cambia file / partizioni in modo che corrispondano ai tuoi)
Installazione a livello di sistema
Una volta che sei soddisfatto, puoi rendere permanenti le modifiche
(fino a quando il pacchetto initramfs-tools non viene aggiornato).
Nel sistema 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
D'ora in poi l'immagine initrd regolare supporterà l'avvio chroot.
Non è necessario utilizzare un initrd.chroot separato che potrebbe non essere sincronizzato con esso.
Vedi boot_chroot per i dettagli.
vmlinuz root=/dev/sda1/chroot
non funzionerà. Probabilmente si potrebbe simulare questo con un metodo simile a quello utilizzato ininitrd
. Vedi ad esempio qui . Montate/new_root
come descritto lì, quindi invece dicd /new_root
farecd /new_root/chroot
e continuare.