我试图从PC上现有的NTFS分区启动包含Linux实时系统的ISO。PC有UEFI,硬盘使用GPT进行分区,因此GRUB4DOS不是一种选择。这能办到吗?
我知道以前有人问过这个问题:Grub -从ntfs分区引导debian iso文件并安装,但那里没有经过批准的答案--这就是为什么我要再问一遍。另外,我想使用我自己的内核,而不是一些固定的和预编译的内核。
从其他答案来看,我似乎需要包含某种自定义的内核文件(我假设将其放置到EFI分区),这样就能够加载ISO(?)来自NTFS本身。
这可以通过简单地执行GRUB条目在FAT分区上完成。
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
}发布于 2019-03-25 23:24:36
因此,作为一种解决办法;
背景:我正在使用Arch。它使用米基尼特皮奥生成其initramfs (和早期的userspace(!))。因为我们要从NTFS启动文件系统映像,所以需要调整initramfs。我们可以使用GRUB及其ntfs模块来读取(GRUB ntfs模块是ro afaik)。来自NTFS分区的内核和initramfs。在此之后,我们仍然需要从initramfs挂载NTFS分区,以便进行完全的读/写访问。
解决方案的操作原理:我在initramfs中添加了ntfs-3g并对包进行了模糊处理,这样就可以安装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
}有关磁盘安装的引导过程:
https://unix.stackexchange.com/questions/508617
复制相似问题