Vi.*_*Vi. 5 linux boot debian chroot
我想设置 Grub 菜单项来启动到 chroot 系统(安装 chroot 的 debootstrap 以避免过多接触现有系统)。
目前我做了以下事情来实现它:
在 chroot 环境中安装 linux-image 和朋友
手动重新管理 initramfs 以 chroot 到系统中,而不是通常的行为:
rootmnt=$rootmnt/root/squeeze
...
#exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console
exec chroot ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console
Run Code Online (Sandbox Code Playgroud)
3.. 将条目添加到/boot/grub.cfg:
menuentry 'Chrooted debian Squeeze' {
...
linux /root/squeeze/boot/vmlinuz root=... rw
initrd /root/squeeze/boot/initrd-chroot
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但设置起来并不容易,并且每次更改 initrd 时都需要手动修改。怎样才能做得更好呢?
为什么从 run-init 切换到 chroot?你不应该这样做。run-init 删除 initramfs 根目录中的所有内容,然后 chroots 到 $rootmnt。你想保持这种行为。
至于如何避免每次都手动重建 initramfs,请在 /usr/share/initramfs-tools 中编辑 init 脚本的主副本。在升级 initramfs-tools 软件包之前,这至少应该有效。
一个永久的解决方案是修补 init 脚本以识别引导参数以将某些内容附加到 rootmnt,并提交该修补程序以包含到 debian 中。然后,您可以将参数添加到 grub 以获取应以这种方式引导的条目。
归档时间: |
|
查看次数: |
6787 次 |
最近记录: |