PXE経由で起動するために使用されるインターフェイスの決定

PXE経由で起動するために使用されるインターフェイスの決定

PXEから起動したLinuxボックスがあります。実行に使用されるネットワークインタフェースを決定できますか?

答え1

PXELINUXを使用すると仮定する場合。

フラグがありますIPAPPEND。に設定すると、PXELINUXはカーネルコマンドラインに2引数を追加します。BOOTIF=<hardware-address-of-boot-interface>これにより、使用されているインターフェイスを識別するために使用できるMACアドレスがあります。

http://www.syslinux.org/wiki/index.php/SYSLINUX#IPAPPEND_flag_val_.5BPXELINUX_only.5D

答え2

IPAPPEND=2私は長年PXELINUXを使用してきました。しかし、最近EFI PXEブートに切り替える必要があり、ほとんどの人はPXELINUXよりGRUBを好むようです。

GRUB EFI PXE ブートローダは、ブート$net_default_macインターフェイスの MAC アドレスを含む変数を定義します。これを使用してカーネルコマンドラインにMACアドレスを追加できますが、IPAPPEND=2両方の点でPXELINUXの値とは異なります。

  1. 01ハードウェアタイプのプレフィックスバイト(= Ethernet)は含まれていません。
  2. ba:98:76:54:32:10ダッシュの代わりにコロンを使用してオクテットを区切ります(例01-ba-98-76-54-32-10:)。

PXELINUX形式を必要とするいくつかのスクリプトがあるので、BOOTIFGRUB設定にコピーしたいと思います。

残念ながら、GRUBのテキスト操作機能はほとんど存在しないようです。私は使用します正規表現次のようにコマンドします。

set dd="[0-9a-f][0-9a-f]"

regexp --set 1:o1 --set 2:o2 --set 3:o3 --set 4:o4 --set 5:o5 --set 6:o6 \
    ($dd):($dd):($dd):($dd):($dd):($dd) \
    $net_default_mac

set hwaddr="01-$o1-$o2-$o3-$o4-$o5-$o6"

menuentry  'My Linux' --class fedora --class gnu-linux --class gnu --class os {
   linuxefi my-kernel-image BOOTIF=$hwaddr
   initrdefi my-initramfs.img
}

関連情報