我想要的是:我想在不触及分区表的情况下多重启动 Windows 10 和 Kali Linux,因此我尝试将 Kali Linux 安装在现有 Windows 分区中的 .img 中。然后我将指示 grub 创建环回并从该映像启动。
我做了什么:因此,为了将 Kali Linux 安装到该 .img 文件,我首先使用 .img 创建了 IMG dd
。然后我启动安装磁盘并继续加载fuse
和ntfs
模块。
然后我打开一个新的终端(Ctrl+Alt+F2
)并安装IMG所在的分区。
问题:
- 我无法
losetup
在终端运行 - 假设我以某种方式将它安装到 IMG,在 grub 中创建了环回设备,
vmlinuz
然后加载了它,我认为它无法加载其余的系统文件,因为它需要root=/dev/sdX
作为启动参数。那么,我可以以某种方式修改vmlinuz
或initrd.img
来安装分区并运行losetup
,然后读取root=/dev/loopX
以加载系统的其余部分
答案1
这就是我实现它的方法:
- 开始安装过程
- 继续直到“分区磁盘”步骤并点击“返回”
- 启动另一个终端 (
Alt+Ctrl+F2
) 并挂载存储图像的文件系统(例如在/mnt
)。 - 运行
ln -s /mnt/path/to/image /dev/sdb
来欺骗安装系统。 - 切换到上一个终端。(
Alt+Ctrl+F5
在我的例子中) - 从“检测磁盘”步骤继续安装。
/mnt/path/to/image
应该在那里,选择它。 - 将其用作某些文件系统(
ext4
在我的例子中)并将安装点设置为/
,暂时不要选择交换并点击完成。 - 像往常一样完成安装。
- 现在,重新启动到“Kali Live”并打开终端
- 挂载存储图像的文件系统(例如在
/mnt
)。同时安装镜像,例如:mount -o loop /mnt/path/to/image /myimg
- Chroot 进入图像:
chroot /myimg
- 修改文件
/etc/initramfs-tools/modules
并添加loop
. - 修改
/usr/share/initramfs-tools/scripts/local
: - 清空当前内容mountroot()
并填充:
mkdir /root2 mount -t <type of fs inwhich image is stored> /dev/sdXY /root2 mount -t ext4 -o loop,rw /root2/path/to/image ${rootmnt}
- 跑步
update-initramfs
- 添加 grub 条目:
loopback loop (hdX,Y)/path/to/image linux (loop)/vmlinuz initrd (loop)/initrd.img
- 完毕 !!