Grub2(Efi)通过 PXE 启动 - 自动加载配置文件

Grub2(Efi)通过 PXE 启动 - 自动加载配置文件

我在通过 Grub2 引导加载程序启动操作系统时遇到了问题。

环境:

我有一个 PXE-Boot 基础设施,并想通过网络(TFTP)测试 PXE-Booting Grub2.efi。

将 efi 文件下载到客户端并且 grub 加载到机器上 - 我可以看到 grub 提示符grub>- 我正在使用 Grub 版本 2.00。

我已经创建了一个配置文件(grub.cfg)并将其放在与文件相同的 TFTP 目录中grub.efi

我可以从 TFTP 日志中看到 GRUB 已被下载 - 并且显然已加载到客户端 - 然后grub.cfg由 grub 下载。

我的grub.cfg样子如下:

set root=(hd0,gpt1)
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
boot

简单来说,我只想用 GRUB 启动 Windows。请不要问为什么;那样的话描述起来太费时间了……

我希望 GRUB 能够找到下载的grub.cfg文件并加载 Windows。

发生了什么:我只是被抛到了grub>提示中。

grub.cfg当我通过 grub 提示加载时

configfile /grub.cfg

操作系统已完美加载,所以到目前为止一切似乎都正常。

所以我的问题是,如何让 GRUB 自动加载配置文件并启动 Windows?

答案1

Grub 查找配置文件/grub/grub.cfg/grub/x86_64-efi/grub.cfg(或类似)。

注意::这是来自 TFTP 服务器根目录的路径。这意味着,即使您从类似这样的路径运行 Grub 二进制文件$tftproot/path/to/grubnetx64.efi,也不要尝试将目录放入grub/同一目录,而要真正放入 TFTP 根目录:$tftproot/grub/

如何找出答案

在 Grub 控制台中:

grub> cat (memdisk)/grub.cfg
if [ -e $prefix/x86_64-efi/grub.cfg ]; then
    source Sprefix/x86_64-efi/grub.cfg
else
    source Sprefix/grub.cfg
fi

而最重要的部分是$prefix

grub> echo $prefix
(tftp,x.x.x.x)/grub

答案2

检查您的 DHCP 服务器是否设置了该next-server选项。例如,使用 ISC DHCPd:

next-server 192.168.0.254;

grub 使用这个来知道在哪里寻找配置文件,如下所述:https://www.gnu.org/software/grub/manual/grub/html_node/Network.html

如果客户端正在下载grub.efi,但没有下载grub.cfg,客户端启动到grub>提示符并且$net_default_server为空,则缺少或不正确的下一个服务器可能是原因。

grub> echo $net_default_server

根据我的经验,无论是否设置正确,$prefix总会有一个路径,并且 grub 会从 TFTP 服务器下载配置文件:(memdisk)next-server

grub> echo $prefix
(memdisk)/boot/grub

答案3

menuentry在和中制作它 set default="0"

参考:wiki.ubuntu.com - UEFI/PXE-netboot-安装

相关内容