syslinux UEFIブート:ハードウェア識別子に基づいてブートオプションを自動的に選択します。

syslinux UEFIブート:ハードウェア識別子に基づいてブートオプションを自動的に選択します。

USBメディアから起動し、syslinux EFIを使用して起動しました。

2台の異なるラップトップで同じメディアを起動しており、syslinux.cfgにはラップトップごとに1つずつ2つのメニューオプションがあります。

現時点では、各ノートブックに適したメニューオプションを手動で選択する必要があります。

syslinuxこれを自動化し、起動しているノートブックを自動的に識別する方法はありますか?たぶん、一意のハードウェア識別子に基づいていたかもしれません。

どうすればいいですか?

これは私のものですEFI/BOOT/syslinux.cfg

DEFAULT menu.c32
PROMPT 0
MENU TITLE UEFI boot menu
MENU AUTOBOOT Booting AAA in # seconds

LABEL AAA
MENU LABEL AAA
KERNEL menu.c32
APPEND /AAA/menu

LABEL BBB
MENU LABEL BBB
KERNEL menu.c32
APPEND /BBB/menu

ファイルを/AAA/menuダウンロードして/BBB/menu、各ノートブックに適した起動オプションを提供してください。

/AAA/menuデフォルトでは、ノートブックAとノートブックBで自動起動が必要です。/BBB/menu

答え1

私がアーチウィキで読んだことによると:協会

syslinuxextlinuxに付属のパッケージを使用してそれを2回チェーンロードすることは可能ですが、難しいと思います。syslinuxしかし、まだテストしていません。

複数の異なるコンピュータでこれを行う必要がある場合は、多くの作業が必要です。これは、10台の異なるコンピュータ、USBドライブに10の異なるパーティションが必要なためです。各パーティションにはカーネルとinitrdといくつかのsyslinuxファイルのコピーがあります。

すべてのノートブックにはESPブートパーティションが必要です。/dev/sda1それ/dev/sdaX以外の場合、この方法は機能しません。

進行方法は次のとおりです。

1.ノートブックAにextlinuxをインストールします。

ノートブックAでは、espブートパーティションが/ dev / sda1であるとします。

mkdir ./mntefi
sudo mount /dev/sda1 ./mntefi
sudo mkdir ./mntefi/boot
sudo mkdir ./mntefi/boot/syslinux

# install extlinux:
sudo extlinux -i ./mntefi/boot/syslinux/ 

# copy *.c32 files:
sudo cp /usr/lib/syslinux/bios/*.c32 ./mntefi/boot/syslinux

ファイルの作成./mntefi/boot/syslinux/syslinux.cfg

TIMEOUT 0

UI menu.c32

LABEL MAIN
    COM32 chain.c32
    APPEND hd1 3

このファイルは、ノートブックAのsyslinux.cfgを含むUSBドライブの3番目のパーティション(ノートブックAに内蔵ドライブが1つしかない場合はhd1)に接続されます。

2. USBドライブにパーティション3(/ dev / sdb3)を作成します。

パーティションは小さく、syslinux、カーネル、initrdのみを含めることができます。

3. USBドライブのパーティション3にextlinuxを取り付けます。

mkdir ./mnt3
sudo mount /dev/sdb3 ./mnt3
sudo mkdir ./mnt3/boot
sudo mkdir ./mnt3/boot/syslinux

# install extlinux:
sudo extlinux -i ./mnt3/boot/syslinux/ 

# copy *.c32 files:
sudo cp /usr/lib/syslinux/bios/*.c32 ./mnt3/boot/syslinux

ファイルの作成./mnt3/boot/syslinux/syslinux.cfg

DEFAULT menu.c32
PROMPT 0
MENU TITLE UEFI boot menu
MENU AUTOBOOT Booting AAA in # seconds

LABEL AAA
MENU LABEL AAA
KERNEL menu.c32
APPEND /AAA/menu

このファイルはノートブックAのメニューを表示します。メニューファイルはパーティション3のディレクトリにあります/AAA

メニューファイルのカーネルには次のパラメータが必要です。Linuxroot=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rwがインストールされているUSBドライブにあるパーティションのUUIDが必要です。

4. USB ドライブのマスター syslinux.cfg:

LinuxシステムがインストールされているUSBドライブの/ dev / sda2パーティションにあると想定してファイルを作成しますEFI/BOOT/syslinux.cfg

TIMEOUT 0

UI menu.c32

LABEL MAIN
    COM32 chain.c32
    APPEND hd0 1

このファイルは、ノートブック内部ドライブの最初のパーティションであると仮定し、ノートブック内部ドライブのespブートパーティションに接続されます。

これは常にノートブックの内部ドライブの最初のパーティションにあるsyslinuxに接続されます。

ただし、syslinuxは起動しているドライブから番号を付けることもできます。その場合は、hd1 1代わりに接続する必要があります。hd0 1

5. 各ノートブックに対して手順 1、2、3 を繰り返します。

手順1では、syslinux.cfgを手順2で作成した新しいパーティションに接続する必要があります。

関連情報