我有一个基于 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。我尝试使用bootlocal
、local
、boot
而localboot
不是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 配置