我遇到了相同的问题,并最终编写了此文件,以使其在不同的系统(当前为debian,ubuntu)上轻松运行:
运行make_chroot_initrd
脚本以从现有映像中创建一个启用了chroot的新initrd映像:
# ./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软件包升级为止)。
在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
从现在开始,常规的initrd映像将支持chroot引导。
无需使用单独的initrd.chroot,然后它可能会与它不同步。
有关详细信息,请参见boot_chroot。
vmlinuz root=/dev/sda1/chroot
将无法正常工作。可能可以使用与中所使用的方法类似的方法对此进行模拟initrd
。参见例如这里。您安装/new_root
与那里描述,然后,而不是cd /new_root
做cd /new_root/chroot
和继续。