Eu me deparei com o mesmo problema e terminei escrevendo isto para fazê-lo funcionar sem problemas em diferentes sistemas (debian, ubuntu atualmente) :
Execute o script make_chroot_initrd
para criar uma nova imagem initrd ativada pelo chroot a partir da existente:
# ./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
A nova imagem será exatamente a mesma, exceto que agora ela pode manipular um parâmetro de inicialização chroot=
.
Com o grub2 como bootloader, você pode adicionar uma entrada ao /boot/grub/grub.cfg
:
(ou talvez melhor /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
}
(altere arquivos / partições para coincidir com os seus)
Instalação em todo o sistema
Uma vez que você está feliz com isso, você pode tornar as mudanças permanentes.
(até que o pacote initramfs-tools seja atualizado).
No sistema 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
A partir de agora, a imagem regular do initrd suportará o arranque por chroot.
Não é necessário usar um initrd.chroot separado, que pode sair de sincronia com ele.
Veja boot_chroot para detalhes.