Jus*_*nen 3 grub boot iso ntfs grub2
我正在尝试从 PC 上现有的 NTFS 分区启动包含 Linux live 系统的 ISO。PC有UEFI,硬盘用GPT分区,所以GRUB4DOS不是一个选择。这完全可以做到吗?
我知道这个问题之前已经被问过:Grub - boot debian iso file from ntfs partition and install it,但那里没有批准的答案 - 这就是我再次询问的原因。另外,我想使用我自己的内核,而不是一些固定和预编译的内核。
从其他答案来看,我似乎需要包含某种定制的内核文件(我假设将其放置到 EFI 分区),然后该文件能够从 NTFS 本身加载 ISO(?) 的其余部分。
这已经可以在 FAT 分区上完成,只需执行 GRUB 条目即可
menuentry "Boot LINUX FROM ISO FILE" {
set iso_path=/path_to/image_on_FAT_filesystem.iso
loopback loop (hdX,msdosY)$iso_path
linux (loop)/path_to/vmlinuz nomagic base_only norootcopy from=$iso_path
}
Run Code Online (Sandbox Code Playgroud)
所以,作为解决方案;
背景:我正在使用 Arch Linux。它使用mkinitcpio生成其 initramfs(以及早期的用户空间(!))。因为我们从 NTFS 引导文件系统映像,所以需要调整 initramfs。我们可以使用GRUB及其ntfs模块从NTFS分区读取(GRUB ntfs模块是ro afaik。)内核和initramfs。此后,我们仍然需要从 initramfs 挂载 NTFS 分区以进行完全读/写访问。
解决方案的操作原理:我将ntfs-3g和fusefs包添加到initramfs中,这样就可以挂载NTFS分区了。我还创建了一个新的mkinitcpio 挂钩,需要在实际安装挂钩之前加载。该钩子是一个简单的 shell 脚本,用于获取参数(这些参数作为来自 GRUB 的内核参数给出),例如
menuentry "Boot LINUX FROM ISO FILE" {
insmod ntfs
set root='(hdX,Y)'
linux /in_ntfs/vmlinuz-linux root=UUID=*GPT_UUID_OF_ROOTFS_ON_DISK_IMAGE* image_path=*path_to_disk_image_on_NTFS* image_hd=*GPT_UUID_OF_NTFS_DISK*
initrd /in_ntfs/initrd.img
}
Run Code Online (Sandbox Code Playgroud)
关于磁盘挂载的启动过程:
归档时间: |
|
查看次数: |
7573 次 |
最近记录: |