UEFIで起動可能なsyslinux USBを作成する

UEFIで起動可能なsyslinux USBを作成する

Centos 8システムを使用して、当社の製品用のsyslinuxブータブルUSBインストーラを作成します。生成されたUSBはBIOS(またはCSMモードがオン)のターゲットコンピュータのみをサポートしますが、UEFIをサポートするには更新する必要があります。

これsyslinux.orgの指示非常に希薄で数日間の検索に失敗しました。

HP EliteDeskから起動しようとすると、常に「BootDeviceが見つかりません」というメッセージが表示されます。 USBブートはマシンのBIOSで有効になります。

私たちが何をしているのか

  1. USBパーティション
  2. syslinuxファイルのコピー
  3. syslinux.cfg コピー
  4. 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

注リンク

答え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 +バイナリではない限り、ブートローダによってロードされたファイルに割り当てられているすべてのメモリを実行できないプロセッサとしてマークします。私が知る限り、Syslinuxldlinux.e64とファイルはこの要件を満たさないかもしれません。*.c32

Syslinuxプロジェクトはセキュアブートをまったくサポートしていないように見えるため、セキュアブートが無効な状態でのみブートメディアを使用できます。

関連情報