우리는 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 notfound"라는 메시지가 표시되고 산업용 마더보드가 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
편집 2 - 솔루션
다음의 제안통신회사아주 근접한. 경로 이름을 바꾼 후대문자이제 syslinux가 로드되었습니다.
특히 USB에서는 /efi/boot/bootx86.efi
다음을 수행해야 합니다./EFI/BOOT/BOOTx86.EFI
참고 링크
- syslinux.org의 지침
- 훌륭한 책
- EFI 시스템 파티션 지침위키피디아에서
- 사용에 관한 기사
syslinux
슬랙웨어와 함께 작동 - 부팅 가능한 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 프로젝트는 보안 부팅을 전혀 지원하지 않는 것으로 나타나므로 보안 부팅이 비활성화된 상태에서만 부팅 미디어를 사용할 수 있습니다.