首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从包含多个分区的图像文件中链接加载?

如何从包含多个分区的图像文件中链接加载?
EN

Unix & Linux用户
提问于 2020-08-01 15:32:52
回答 1查看 203关注 0票数 1

我有一个磁盘映像:

代码语言:javascript
复制
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name                  Flags
 1      1049kB  262MB  261MB  fat16        MemTest86             legacy_boot, msftdata
 2      263MB   524MB  261MB  fat16        EFI System Partition  boot, esp

在grub控制台中,我做到了:

代码语言:javascript
复制
loopback loop (some partition)/memtest.img

ls正确显示2个分区(loop,gpt2)(loop,gpt1) ls (loop,gpt2)/efi/boot/显示:

代码语言:javascript
复制
Benchmark  blacklist.cfg  BOOTIA32.efi  BOOTX64.efi  mt86.png  unifont.bin

但是,如果我这样做,它会给出错误的not a valid root device

代码语言:javascript
复制
root=(loop,gpt2)
chainloader (loop,gpt2)/efi/boot/BOOTX64.efi

为了正确地链接引导加载程序,我还需要做什么?

更新1:在循环命令之后,搜索命令可以找到分区。例如,ls (循环,gpt2)显示一个UUID E64D-A5AA。search -u E64D-A5AA显示loop,gpt2

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-10-26 20:33:18

除非链接加载的efi和内核支持某种方式来挂载磁盘映像,否则此操作是不可能的。

grub回送引导过程如下所示:

  1. grub挂载包含磁盘映像的实际硬件分区。
  2. grub回送磁盘映像
  3. grub在该映像中运行efi应用程序。此时,grub将所有控制权交给efi应用程序。efi不知道在哪里可以找到包含磁盘映像的硬件分区。此外,它也不知道如何挂载磁盘映像,即使它具有此功能。因此,这一阶段无法继续下去。

在现代livecd中,有一些内核选项可以让您告诉它在哪里可以找到映像,并且可以挂载映像。但是grub必须直接运行内核,而不是应该启动内核的efi应用程序。因为efi应用程序中的每个路径都是硬编码的,需要是绝对路径。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/602391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档