我们使用 Centos 8 机器为我们的产品创建 syslinux 可启动 USB 安装程序。创建的 USB 现在仅支持具有 BIOS(或打开 CSM 模式)的目标计算机,但我们需要更新它以支持 UEFI。
这syslinux.org 上的说明非常稀疏,几天的搜索也没有成功。
尝试在 HP EliteDesk 上启动始终会导致“找不到 BootDevice”。 USB 启动已在机器的 BIOS 中启用。
我们正在做什么
- USB分区
- 复制 syslinux 文件
- 复制syslinux.cfg
- 运行
syslinux
命令进行安装
关于我做错了什么的任何提示,或者可能是关于如何执行此操作的更好的一组说明的指针?
分割
(parted) mkpart
Partition name? []? EFI
File system type? [ext2]? fat32
Start? 512MB
End? 1024MB
(parted) set 1 esp
New state? [on]/off? on
(parted) mkpart
Partition name? []? Installer
File system type? [ext2]? fat32
Start? 1024MB End? 100%
(parted) p
Model: Generic Flash Disk (scsi)
Disk /dev/sdc: 8053MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt Disk Flags:
Number Start End Size File system Name Flags
1 512MB 1024MB 513MB fat32 EFI boot, esp
2 1024MB 8052MB 7028MB fat32 Installer
复制文件
复制后,EFI分区包含:
# find /mnt/usb
/mnt/usb
/mnt/usb/efi
/mnt/usb/efi/boot
/mnt/usb/efi/boot/ldlinux.e64
/mnt/usb/efi/boot/syslinux.efi
/mnt/usb/efi/boot/libcom32.c32
/mnt/usb/efi/boot/vesamenu.c32
/mnt/usb/efi/boot/libutil.c32
/mnt/usb/efi/boot/menu.c32
安装系统Linux
# umount /mnt/usb
# syslinux -d /efi/boot --install /dev/sdc1
编辑我
我尝试根据建议更改文件名电信公司但引导加载程序没有启动。 (在 HP EliteDesk 800 和工业主板上进行了尝试)。
HP机器提示“BootDevice not found”,工业主板直接进入BIOS。
为了进行测试,我们只是想让引导加载程序被识别。
BIOS 配置:CSM 关闭,引导设备设置为“UEFI:KIOXIA 1”。
parted /dev/sdb p
Model: KIOXIA TransMemory (scsi)
Disk /dev/sdb: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 512MB 1024MB 513MB fat32 EFI boot, esp
USB 包含:
mount /dev/sdb1 /mnt/usb
[root@bluebox /]# cd /mnt/usb
[root@bluebox usb]# find .
.
./efi
./efi/boot
./efi/boot/bootx86.efi
./efi/boot/ldlinux.e64
./efi/boot/libcom32.c32
./efi/boot/libutil.c32
./efi/boot/menu.c32
./efi/boot/syslinux.cfg
./efi/boot/vesamenu.c32
[root@bluebox usb]# cd /
[root@bluebox /]# umount /mnt/usb
[root@bluebox /]# syslinux -d /efi/boot --install /dev/sdb1
[root@bluebox /]# echo $?
0
编辑二 - 解决方案
来自的建议电信公司非常接近。将路径重命名为后大写字母syslinux 现在加载。
具体来说,在 USB 上/efi/boot/bootx86.efi
必须/EFI/BOOT/BOOTx86.EFI
参考链接
- syslinux.org 上的说明
- 棒书
- EFI系统分区说明在维基百科
- 关于使用的文章
syslinux
适用于 Slackware - 制作可启动USB作者:哈卡马尔·达德瓦尔
答案1
在可移动媒体上,x86_64 架构的 UEFI 启动文件名应为\efi\boot\bootx64.efi
.
所以在你的情况下:
mv /mnt/usb/efi/boot/syslinux.efi /mnt/usb/efi/boot/bootx64.efi
尽管 UEFI 规范规定名称应不区分大小写,但已知某些 UEFI 实现在此处存在错误。因此,如果此路径不起作用,您可能必须尝试大写版本 ( /mnt/usb/EFI/BOOT/BOOTx64.EFI
),看看是否会更好。
请注意,如果启用安全启动,固件会将为引导加载程序加载的文件分配的所有内存标记为处理器不可执行,除非该文件是具有有效安全启动签名的 Windows 样式 PE+ 二进制文件。据我所知,Syslinux 的ldlinux.e64
和文件可能无法满足该要求。*.c32
看来 Syslinux 项目根本不支持安全启动,因此您的启动媒体只能在禁用安全启动的情况下使用。