17 ネットワークブート環境の準備 #
この章では、PXEでのブートに必要なインフラストラクチャを提供するDHCPサーバとTFTPサーバの設定方法について説明します。
SUSE® Linux Enterprise Serverは、PXE (Preboot Execution Environment)を介してインストールすることができます。そのためには、クライアントハードウェアがPXEでのブートをサポートしている必要があります。また、クライアントに必要なデータを提供するDHCPサーバとTFTPサーバがネットワーク上に存在している必要もあります。この章では、これらの必要とされるサーバの設定方法を順を追って説明します。
PXEでは、カーネルとinitrdのみがブートされます。これらは、インストール環境または実働システムをブートする際に使用されます。インストールソースの設定方法については、第16章 「ネットワークインストールソースをセットアップする」を参照してください。
このセクションでは、複雑なブートシナリオで必要となる設定タスクについて説明します。DHCP、PXEブート、TFTP、およびWake on LAN用の、すぐに使用できる設定例も含まれています。
以下の例では、DHCPサーバ、TFTPサーバ、およびNFSサーバがIP 192.168.1.1
の同じマシンに存在することを想定しています。すべてのサービスが異なるマシンに存在していてもまったく問題ありません。必ず、必要に応じてIPアドレスを変更してください。
17.1 DHCPサーバのセットアップ #
DHCPサーバは、ネットワーククライアントに動的(17.1.1項 「動的アドレス割り当て」)と静的IPアドレスの割り当て(17.1.2項 「静的IPアドレスの割り当て」)の両方を提供します。サーバ、ルート、およびドメインをアドバタイズします。TFTPサーバの場合、DHCPはカーネルとinitrdファイルも提供します。ロードするファイルは、ターゲットマシンのアーキテクチャと、レガシBIOSブートまたはUEFIブートのどちらを使用するかによって異なります。クライアントはそれらのアーキテクチャタイプをDHCP要求で送信します。DHCPサーバはこの情報に基づいて、クライアントでブート用にダウンロードする必要があるファイルを決定します。
SUSE Linux Enterprise 15.0以降、PXEブートおよびAutoYaSTインストールが失敗する原因となる特別な状態があります。詳細および解決策については、17.1.3項 「PXEおよびAutoYaSTのインストールの失敗」を参照してください。
17.1.1 動的アドレス割り当て #
次の例は、IPアドレスをクライアントに動的に割り当て、サーバ、ルータ、ドメイン、およびブートファイルをアドバタイズするDHCPサーバを設定する方法を示しています。
DHCPサーバのホストとなるマシンに
root
としてログインします。systemctl enable dhcpd
コマンドを実行して、DHCPサーバを有効にします。/etc/dhcpd.conf
にあるDHCPサーバの設定ファイルのサブネット設定に、次の行を追加します。# The following lines are optional option domain-name "my.lab"; option domain-name-servers 192.168.1.1; option routers 192.168.1.1; option ntp-servers 192.168.1.1; ddns-update-style none; default-lease-time 3600; # The following lines are required option arch code 93 = unsigned integer 16; # RFC4578 subnet 192.168.1.0 netmask 255.255.255.0 { next-server 192.168.1.1; range 192.168.1.100 192.168.1.199; default-lease-time 3600; max-lease-time 3600; if option arch = 00:07 or option arch = 00:09 { filename "/EFI/x86/grub.efi"; } else if option arch = 00:0b { filename "/EFI/aarch64/bootaa64.efi"; } else { filename "/BIOS/x86/pxelinux.0"; } }
この設定例では、サブネット
192.168.1.0/24
と、IP192.168.1.1
のサーバ上のDHCP、DNS、ゲートウェイを使用しています。ネットワークレイアウトに従って、すべてのIPアドレスが変更されていることを確認します。dhcpd.conf
で利用可能なオプションの詳細については、dhcpd.conf
のマニュアルページを参照してください。systemctl restart dhcpd
コマンドを実行して、DHCPサーバを再起動します。
17.1.2 静的IPアドレスの割り当て #
DHCPサーバは静的IPアドレスとホスト名をネットワーククライアントに割り当てることもできます。ある使用例では静的アドレスをサーバに割り当てています。別の使用例では、静的IPアドレスが割り当てられたクライアントにネットワークに参加可能なクライアントを制限し、動的アドレスプールは提供していません。
次の例に従って、前述のDHCP設定を変更します。
group { host test { hardware ethernet MAC_ADDRESS; fixed-address IP_ADDRESS; } }
hostステートメントはホスト名をインストールターゲットに割り当てます。ホスト名とIPアドレスを特定のホストにバインドするには、クライアントのハードウェア(MAC)アドレスを指定する必要があります。この例で使用されているすべての変数をご使用の環境に一致する実際の値に置き換えてから、変更内容を保存し、DHCPサーバを再起動します。
17.1.3 PXEおよびAutoYaSTのインストールの失敗 #
SUSE Linux Enterprise 15.0およびISC DHCP 4.3.x以降、PXEブートおよびAutoYaSTインストールが失敗する原因となる特別な状況があります。DHCPサーバに使用可能な動的IPアドレスのプールがないが、クライアントごとに事前定義された静的アドレスのみが許可され、クライアントがRFC 4361クライアント識別子を送信する場合、PXE/AutoYaSTインストールは機能しません。(特定のネットワーククライアントに割り当てられたアドレスのみを許可し、動的アドレスプールを提供しないことで、ランダムなマシンがネットワークに参加するのを回避します。)
新しいシステムがPXEで起動する場合は、要求をDHCPサーバに送信し、ハードウェアタイプとネットワークインタフェースのMACアドレスから構築されたクライアント識別子を使用してそれ自体を識別します。これはRFC 2132 client-id
です。DHCPサーバは割り当てられたIPアドレスを提供します。次に、インストールカーネルがロードされ、別のDHCP要求が送信されますが、このclient-id
は異なり、RFC 4361形式で送信されます。DHCPサーバはこれを同じクライアントとして認識せず、使用できない空き動的IPアドレスを探すため、インストールは停止します。
この解決策は、RFC 2132クライアントIDを送信するようにクライアントを設定することです。インストール中にRFC 2132 client-id
を送信するには、linuxrc
を使用して、次のifcfg
コマンドを渡します。
ifcfg=eth0=dhcp,DHCLIENT_CLIENT_ID=01:03:52:54:00:02:c2:67, DHCLIENT6_CLIENT_ID=00:03:52:54:00:02:c2:67
Ethernet上で従来使用されているRFC 2132 DHCPv4 client-id
は、ハードウェアタイプ(Ethernetの場合は01
)から構築され、次にハードウェアアドレス(MACアドレス)が続きます。例:
01:52:54:00:02:c2:67
RFC 4361 DHCPv4 client-id
は、複数のネットワークインタフェースを持つマシンを識別する問題を修正しようとします。新しいDHCPv4 client-id
は、DHCPv6 client-id
と同じ形式です。ハードウェアタイプではなく、0xff
プリフィックスで始まり、その後DHCPv6 IAID (マシン上のインタフェースを記述するインタフェースとアドレスの関連付けID)、マシンを 固有に識別するDHCPv6 DHCP固有識別子(DUID)が続きます。
上記のハードウェアタイプベース、ハードウェアアドレスベースのDUIDを使用すると、新しいRFC 4361 DHCPv4 client-id
は次のようになります。
MACアドレスの最終バイトをIAIDとして使用:
ff:00:02:c2:67:00:01:xx:xx:xx:xx:52:54:00:02:c2:67
IAIDが単純な増分番号である場合:
ff:00:00:00:01:00:01:xx:xx:xx:xx:52:54:00:02:c2:67
DUID-Link-Layer Timestamp (DUID-LLT)のxx:xx:xx:xxフィールドは、作成タイムスタンプです。DUID-Link-Layer (DUID-LL) (00:03:00:01:$MAC
)にはタイムスタンプはありません。
linuxrc
の使用方法の詳細については、『AutoYaSTガイド』を参照してください。また、man 4 initrd
、man 5 wicked-config
のオプションdhcp4 "create-cid"
、dhcp6 "default-duid"
のドキュメント、wicked duid --help
、およびwicked iaid --help
も参照してください。
17.2 TFTPサーバのセットアップ #
次の手順では、UEFIとBIOSを備えたクライアントマシンがTFTPによってエクスポートされたファイルを使用してリモートでブートできるように、サーバを準備する方法について説明します。
17.2.1 TFTPサーバのインストール #
TFTPサーバをインストールするには、次の手順に従います。
tftp
パッケージをインストールします。tux >
sudo
zypper in tftp
/etc/sysconfig/tftp
のtftpd
設定を確認し、必要に応じてオプションの追加や変更を行います。詳細については、man 8 tftpd
を確認してください。TFTPデーモンは設定変更なしで機能します。ファイルのデフォルトのルートディレクトリは/srv/tftpboot
です。ブート時に
tftpd
の起動を確認したら、それを再起動して新しい設定を読み込みます。tux >
sudo
systemctl enable tftp.socket
tux >
sudo
systemctl restart tftp.socket
17.2.2 ブート用ファイルのインストール #
SUSE Linux Enterprise Serverは、BIOSまたはUEFIを搭載したマシンでPXEを介してブートするために必要なファイルを提供しています。次のハードウェアアーキテクチャがサポートされています。
AMD64/Intel 64
AArch64
POWER
IBM Z
特定のハードウェアアーキテクチャからブートするために必要なファイルは、RPMパッケージに含まれています。TFTPサーバが稼働するマシンにファイルをインストールするには、次のコマンドを使用します。
tux >
sudo
zypper in tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE
OS_VERSIONはSUSE Linux Enterprise Serverインストール環境のバージョン(SLE-15-SP2-x86_64など)で置き換え、ARCHITECTUREはシステムのアーキテクチャ(x86_64
など)で置き換えます。したがって、結果のテキストは次のようになります。 tftpboot-installation-SLE-15-SP2-x86_64
zypper se tftpboot
を実行して、使用可能なすべてのバージョンとアーキテクチャを検索します。
ファイルは/srv/tftpboot/SLES-OS_VERSION-ARCHITECTURE
にインストールされます。/srv/tftpboot
ディレクトリへは、SUSE Linux Enterprise Serverの他のバージョンとアーキテクチャのファイルをコピーすることもできます。
クライアントとサーバのハードウェアアーキテクチャは異なる場合があります。たとえば、tftpboot-installation-SLE-15-SP2-aarch64パッケージをインストールすることにより、AMD64/Intel 64 TFTPサーバを実行し、 AArch64クライアントマシン用のブート可能な環境を提供できます。
/srv/tftpboot/
ディレクトリ
/srv/tftpboot/
ディレクトリがすでにマシンに存在する場合は、/usr/share/tftpboot-installation/
にすべてのファイルがインストールされます。これは、以前のSLESリリースからのPXEサーバをアップグレードする場合です。
この問題を修復するには、/usr/share/tftpboot-installation/
から/srv/tftpboot/
にファイルを手動でコピーします。または、/srv/tftpboot/
を削除して、
tftpboot-installation-SLE-OS_VERSION-ARCHITECTUREパッケージを再インストールします。
パッケージで利用できます。
17.2.3 PXELINUXの設定 #
ファイル/srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/default
をエディタで開きます。第16章 「ネットワークインストールソースをセットアップする」で説明している設定方法に従って、install
パラメータのパスを置き換えます。また、TFTP_SERVERは、TFTPサーバのIPアドレスで置き換えてください。PXELINUX設定オプションの概要については、17.3項 「PXELINUXの設定オプション」を参照してください。
default linux # install label linux ipappend 2 kernel boot/ARCHITECTURE/loader/linux append initrd=boot/ARCHITECTURE/loader/initrd instsys=tftp://TFTP_SERVER/SLE-OS_VERSION-ARCHITECTURE/boot/ARCHITECTURE/root install=PROTOCOL://SERVER_IP:/PATH display message implicit 1 prompt 1 timeout 50
append
行で使用するブートパラメータの詳細については、7.3項 「重要なブートパラメータのリスト」を参照してください。
必要に応じて、/srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/message
を編集して、ブートメニューにメッセージを表示します。
17.2.4 GRUB2を備えたEFIでのPXEブートの準備 #
GRUB2環境設定ファイルを変更する必要はありませんが、デフォルトの設定では、インストールシステム用のネットワークソースは用意されていません。ネットワーク経由でSUSE Linux Enterprise Serverの完全インストールを実行する場合は、ファイル/srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/EFI/BOOT/grub.cfg
のlinuxefi
行にinstall
パラメータを追加します。第16章 「ネットワークインストールソースをセットアップする」で説明している設定方法に従って、install
パラメータを設定します。efilinux
行で使用するその他のブートパラメータの詳細については、7.3項 「重要なブートパラメータのリスト」を参照してください。
17.3 PXELINUXの設定オプション #
ここに記されているのは、PXELINUX設定ファイルで利用可能なオプションの一部です。
APPEND OPTIONS
カーネルのコマンドラインに1つまたは複数のオプションを追加します。これらは、自動ブートと手動ブートのどちらの場合でも追加されます。オプションはカーネルコマンドラインの先頭に追加されるので、通常は、明示的に入力したカーネルオプションによって上書きすることができます。
APPEND -
何も追加しません。
LABEL
セクション内で、APPEND
に引数として1つのハイフンを付ければ、グローバルなAPPEND
を上書きすることができます。DEFAULT KERNEL_OPTIONS...
デフォルトのカーネルコマンドラインを設定します。PXELINUXが自動的にブートする場合には、DEFAULTの後のエントリがブートプロンプトに対して入力されたときのように動作します。加えて、自動ブートであることを示すautoオプションも自動的に追加されます。
設定ファイルが存在しない、または設定ファイル内でDEFAULTエントリが定義されていない場合には、オプションの付かないカーネル名「linux」がデフォルトとなります。
IFAPPEND FLAG
FLAG値に応じて、特定のオプションをカーネルコマンドラインに追加します。
IFAPPEND
オプションは、PXELINUXでのみ使用可能です。FLAGでは、表17.1「IFAPPEND
から生成され、追加されたカーネルコマンドラインオプション」で説明されている値が必要です:表 17.1:IFAPPEND
から生成され、追加されたカーネルコマンドラインオプション #引数
生成されたカーネルコマンドライン/記述
1
ip=CLIENT_IP:BOOT_SERVER_IP:GW_IP:NETMASK
プレースホルダは、DHCP/BOOTPまたはPXEブートサーバからの入力に基づいて置換されます。
このオプションは、ブートされたシステムでDHCPクライアントを実行するための代替品ではないことに注意してください。定期的な更新がない場合、PXE BIOSによって取得されたリースは期限切れになり、IPアドレスはDHCPサーバによる再使用で使用可能になります。
2
BOOTIF=MAC_ADDRESS_OF_BOOT_INTERFACE
このオプションは、インストールサーバが、DHCPサーバからの返信を受け取るまで、LANインタフェースを交互に検索する場合に、タイムアウトを回避するのに役立ちます。このオプションを使用すると、initrdプログラムはシステムがブートされたインタフェースを特定することができます。linuxrcではこのオプションを読み込み、このネットワークインタフェースを使用します。
4
SYSUUID=SYSTEM_UUID
小文字16進数でUUIDを追加します。
/usr/share/doc/packages/syslinux/pxelinux.txt
を参照してください。LABEL label KERNEL image APPEND options...
ブートするカーネルとしてLABELを入力した場合、PXELINUXで代わりにIMAGEをブートする必要があること、また指定された
APPEND
オプションを使用する必要があることを示します。これらは、ファイルのグローバルセクションにある、最初のLABEL
コマンドの前に記載されている設定に取って代わります。IMAGEのデフォルトはLABELと同じです。また、APPEND
が指定されなかった場合には、グローバルエントリがデフォルトとして使用されます(存在する場合)。最大で128のLABEL
エントリが使用できます。PXELINUXは次の構文を使用します。
label MYLABEL kernel MYKERNEL append MYOPTIONS
ラベルは、ファイル名の場合のように切り詰められるので、切り詰められた後も固有性が保たれるように決める必要があります。たとえば、「v2.6.30」と「v2.6.31」という2つのラベルは、PXELINUXでは区別できません。これらは切り詰められるとどちらも同じDOSファイル名になるからです。
カーネルはLinuxカーネルである必要はありません。ブートセクタまたはCOMBOOTファイルを使用することもできます。
LOCALBOOT TYPE
PXELINUXでは、
KERNEL
オプションの代わりにLOCALBOOT 0
を指定すると、 この特定のラベルが呼び出されて、カーネルブートの代わりにローカルディスクのブートが行われます。引数
説明
0
通常のブートを行う
4
まだメモリ上に常駐しているUNDI (Universal Network Driver Interface)ドライバを使用して、ローカルブートを行う
5
まだメモリ上に常駐しているUNDIドライバを含め、PXEスタック全体でローカルブートを行う
他の値は定義されていません。UNDIやPXEスタックについて知らない場合は、
0
を指定してください。TIMEOUT TIME-OUT
自動的にブートする前に、ブートプロンプトをどれくらいの時間表示するかを指定します。単位は1/10秒です。タイムアウトは、ユーザがキーボードで何か入力するとキャンセルされます。この場合、ユーザがコマンドを入力するものと見なされます。タイムアウトの値を0に設定すると、タイムアウトは無効になります(これがデフォルトです)。タイムアウトの最大値は35996です(1時間よりほんの少しだけ短い時間です)。
PROMPT flag_val
flag_val
を0に設定すると、ShiftかAltキーが押された場合、またはCaps LockかScroll Lockキーがセットされている場合にのみ、ブートプロンプトを表示します(デフォルト)。flag_val
を1に設定すると、常にブートプロンプトを表示します。F2 FILENAME F1 FILENAME ..etc... F9 FILENAME F10 FILENAME
ブートプロンプトでファンクションキーを押したときに、指定されたファイルを表示します。これは、ブート前のオンラインヘルプ(おそらくはカーネルコマンドラインのオプション)を設定するために使用することができます。以前のリリースとの後方互換性のために、F10を
F0
として入力することもできます。現在のところ、F11とF12にファイル名を関連付けることはできないことに注意してください。
17.4 ターゲットシステムでPXEブートの準備をする #
システムのBIOSで、PXEブートの準備をします。これには、BIOSのブート順でのPXEオプションの設定も含まれます。
BIOSで、PXEオプションをハードディスクブートパラメータの前に指定しないでください。さもないと、システムはブートのたびに再インストールを行おうとします。
17.5 ターゲットシステムでWake on LANの準備をする #
Wake on LAN (WOL)では、インストールの前に適切なBIOSオプションを有効にすることが必要です。また、ターゲットシステムのMACアドレスを記録しておいてください。このデータは、Wake on LANを開始するために必要です。
17.6 Wake on LAN #
Wake on LANを使えば、コンピュータのMACアドレスを含む特別なネットワークパケットを使って、コンピュータの電源を入れることができます。世界中のすべてのコンピュータは固有のMAC識別子を持っているので、間違って別のコンピュータの電源を入れてしまう心配はありません。
制御用のマシンが、WOLコマンドの実行先と同じネットワークセグメント内にない場合には、WOL要求がマルチキャストとして送信されるように設定するか、またはそのネットワークセグメント内にあるマシンをリモートで制御して、要求の送信元として作動させてください。
SUSE Linux Enterprise Serverのユーザは、WOLと呼ばれるYaSTモジュールを使って、簡単にWake on LANを設定することができます。他のバージョンのSUSE LinuxベースのOSユーザは、コマンドラインツールを使用してください。
17.7 YaSTを使ったWake on LAN #
次の手順で、YaSTのWake on LANを設定します。
root
としてログインします。このコンピュータの電源を入れるには、適切な項目を選択して、
をクリックします。