如何在 PXE 启动期间使用 grub2 从本地磁盘启动

如何在 PXE 启动期间使用 grub2 从本地磁盘启动

我有一个基于 BIOS 的 PXE 启动设置,是我几年前在 Linux CentOS 7 服务器上建立的。在文件中pxelinux.cfg/default,我有以下几行(以及其他菜单项):

LABEL local
      MENU LABEL Boot local hard drive
      text help
          Boot the system from the hard drive set in the BIOS
      endtext
      LOCALBOOT 0

看来我的 pxelinux.0 文件仍然使用旧版本的 grub。它将LOCALBOOT简单地继续从本地硬盘启动,无论该系统是 CentOS、Ubuntu、Windows 等。

我最近扩展了我的 dhcpd/bootp/PXE 设置以包含 UEFI,如下所示方向来自 Redhat。但是,grubx64.efi无法解释旧式 grub 格式;UEFI PXE 进程显然需要grub.cfg使用较新的 grub2 语法。

使用 grub2,我可以轻松设置安装 Linux 和其他操作系统的菜单项选项。我无法弄清楚的是,尽管我仔细阅读了grub2 文档,是如何设置简单的“仅启动本地驱动器”选项。

我尝试过类似的事情:

menuentry 'Boot local drive' 
    exit
}

但这会重新启动系统,如果我将其设置为网络启动,则只会再次调用 PXE。我尝试使用bootlocallocalbootlocalboot不是exit,但我收到一条有关无法识别的命令的消息,或者(在 的情况下boot)有关没有可用内核的消息。

在 grub2 中这是否可行?如果可行,如何实现?

答案1

这不完全相同,但可以从本地磁盘启动:

menuentry "Local Disk" {
        insmod chain
        search --set=root --file /EFI/centos/grubx64.efi
        chainloader /EFI/centos/grubx64.efi
}

请注意,不幸的是,路径grubx64.efi取决于安装的操作系统。我第一次看到这个提示是在https://github.com/quattor/aii/issues/216

答案2

Flippe Maia 的解决方案很好用,但你必须知道 的路径grubx64.efi。不过,如果你退出 grub,你就可以从第二个启动设备启动。

menuentry 'Local Boot' {
exit
}

当然现在取决于你的 BIOS 配置

相关内容