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 +バイナリではない限り、ブートローダによってロードされたファイルに割り当てられているすべてのメモリを実行できないプロセッサとしてマークします。私が知る限り、Syslinuxldlinux.e64
とファイルはこの要件を満たさないかもしれません。*.c32
Syslinuxプロジェクトはセキュアブートをまったくサポートしていないように見えるため、セキュアブートが無効な状態でのみブートメディアを使用できます。