我有一个传统的 PXE 服务器,它可以完成我们公司所需的一切,并且有可以启动到(自定义)CentOS 7 livecd 的条目,同样,也是在传统的 PXE 中。
我想让这些东西在 EFI PXE 下运行。
到目前为止,根据我在 中指定的 .efi 文件dhcpd.conf
,我可以让不同的东西出现在 EFI PXE 启动系统的屏幕上以适应不同的负载;基本上,我知道 EFI PXE 启动在我的网络上运行良好。
我遇到的问题是使用哪个 .efi 映像才能实现我需要的功能;理想情况下,我应该在 EFI 中拥有旧式 PXE 菜单的所有功能,但主要是我有兴趣让我的 CentOS 7 Livecd 从 EFI PXE 启动。
与……合作此论坛帖子并且grubx64.efi
,我能够让 EFI PXE 启动系统加载 grub 和文件中的内容grub.cfg
。
在论坛帖子中grub.cfg
,我修改了菜单项以匹配我使用旧式 PXE 菜单项传递的相同参数(请注意,注释行是帖子中的原始“linuxefi”行):
menuentry 'Install CentOS 7' {
#linuxefi /centos7-net/vmlinuz inst.repo=http://buildlogs.centos.org/centos/7/os/x86_64-latest/
linuxefi /livecd/vmlinuz initrd=/livecd/initrd.img ksdevice=bootif lang= root=live:/boot.iso kssendmac text ks=http://XX.XX.24.21/cblr/svc/op/ks/profile/LiveCD
initrdefi /livecd/initrd.img
vmlinuz
与initrd.img
传统 PXE 兼容的文件都存在,并且权限设置为任何人都可以读取。
我从中得到的是一个错误:
“错误:无法加载 initrd”
但我不确定如何解决这个问题。 initrd 位于内核参数和行initrdefi
条目中指定的路径中。
以前有人做过这个吗?
一般来说,如何管理 PXE EFI 服务器 - 管理菜单、子菜单、操作系统安装等?
答案1
在 PXE 上,您可以通过 TFTP 加载内核和 initrd,就这样;其余部分,即实现实时发行版的大型 squahfs 文件,将通过 HTTP 或 SMB 共享(NFS 也是一个选项)移动。
那么除了无法加载 initrd 的错误之外,你也无法使用以下命令加载实时映像
root=live:/boot.iso
没有所需的网络信息。尝试看看 Serva 是如何做到的:
https://www.vercot.com/~serva/an/NonWindowsPXE3.html
;-Serva v3.0 Non-Windows Asset Information File
;-Boot/Install:
; Red Hat Enterprise Linux / CentOS Linux
;-Tested on:
; rhel-server-7.3-x86_64-dvd.iso
; rhel-server-7.3-x86_64-boot.iso
; rhel-workstation-7.3-x86_64-dvd.iso
; rhel-workstation-7.3-x86_64-boot.iso
; rhel-client-7.3-x86_64-dvd.iso
; rhel-client-7.3-x86_64-boot.iso
;
; rhel-server-7.2-x86_64-dvd.iso
; rhel-server-7.2-x86_64-boot.iso
; rhel-workstation-7.2-x86_64-dvd.iso
; rhel-workstation-7.2-x86_64-boot.iso
; rhel-client-7.2-x86_64-dvd.iso
; rhel-client-7.2-x86_64-boot.iso
;
; rhel-atomic-installer-7.2-10.x86_64.iso
;
; CentOS-7-x86_64-DVD-1611.iso
; CentOS-Atomic-Host-7.1704-Installer.iso
;
; rhel-workstation-6.5-x86_64-dvd.iso
; rhel-server-6.5-x86_64-dvd.iso
; CentOS-6.5-x86_64-bin-DVD1.iso
;
;-Require:
; \SERVA_REPO\ offered as HTTP root
;-Notes:
; For KickStart
; 7.3 > Add to append inst.ks=http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/images/pxeboot/ks.cfg
; 7.2 > Add to append ks=http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/images/pxeboot/ks.cfg
[PXESERVA_MENU_ENTRY]
asset = RHEL Server 7.3
platform = x86_64
kernel_bios = /NWA_PXE/$HEAD_DIR$/images/pxeboot/vmlinuz
append_bios = initrd=/NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img inst.repo=http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/
;7.2 > append_bios = initrd=/NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img root=live:http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/LiveOS/squashfs.img ksdevice=bootif repo=http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/
;6.x > append_bios = initrd=/NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img method=http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$ noipv6 ksdevice=bootif
ipappend_bios = 2
kernel_efi64 = /NWA_PXE/$HEAD_DIR$/images/pxeboot/vmlinuz
append_efi64 = initrd=/NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img inst.repo=http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/
;7.2 > append_efi64 = initrd=/NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img root=live:http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/LiveOS/squashfs.img ksdevice=bootif repo=http://$IP_BSRV$/NWA_PXE/$HEAD_DIR$/
ipappend_efi64 = 2
我与 Serva 开发有关。