目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Serverマニュアル / 展開ガイド / インストールサーバのセットアップ / ネットワークブート環境の準備
適用項目 SUSE Linux Enterprise Server 15 SP5

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サーバはこの情報に基づいて、クライアントでブート用にダウンロードする必要があるファイルを決定します。

警告
警告: PXEおよびAutoYaSTのインストールの失敗

SUSE Linux Enterprise 15.0以降、PXEブートおよびAutoYaSTインストールが失敗する原因となる特別な状態があります。詳細および解決策については、17.1.3項 「PXEおよびAutoYaSTのインストールの失敗」を参照してください。

17.1.1 動的アドレス割り当て

次の例は、IPアドレスをクライアントに動的に割り当て、サーバ、ルータ、ドメイン、およびブートファイルをアドバタイズするDHCPサーバを設定する方法を示しています。

  1. DHCPサーバのホストとなるマシンにrootとしてログインします。

  2. systemctl enable dhcpdコマンドを実行して、DHCPサーバを有効にします。

  3. /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と、IP 192.168.1.1のサーバ上のDHCP、DNS、ゲートウェイを使用しています。ネットワークレイアウトに従って、すべてのIPアドレスが変更されていることを確認します。dhcpd.confで利用可能なオプションの詳細については、dhcpd.confのマニュアルページを参照してください。

  4. 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 固有識別子(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 Guideを参照してください。また、man 4 initrd、およびman 5 wicked-configwicked duid --help、ならびにwicked iaid --helpのオプションdhcp4 "create-cid"dhcp6 "default-duid"のドキュメントも参照してください。

17.2 TFTPサーバのセットアップ

次の手順では、UEFIとBIOSを備えたクライアントマシンがTFTPによってエクスポートされたファイルを使用してリモートでブートできるように、サーバを準備する方法について説明します。

17.2.1 TFTPサーバのインストール

TFTPサーバをインストールするには、次の手順に従います。

  1. tftpパッケージをインストールします。

    > sudo zypper in tftp
  2. /etc/sysconfig/tftptftpdの設定を確認し、必要に応じてオプションの追加や変更を行います。詳細については、man 8 tftpdを参照してください。TFTPデーモンは設定変更なしで機能します。ファイルのデフォルトのルートディレクトリは/srv/tftpbootです。

  3. ブート時にtftpdの起動を確認したら、それを再起動して新しい設定を読み込みます。

    > sudo systemctl enable tftp.socket
    > sudo systemctl restart tftp.socket

17.2.2 ブート用ファイルのインストール

SUSE Linux Enterprise Serverは、BIOSまたはUEFIを搭載したマシンでPXEを介してブートするために必要なファイルを提供しています。次のハードウェアアーキテクチャがサポートされています。

  • AMD64/Intel 64

  • AArch64

  • POWER

  • IBM Z

特定のハードウェアアーキテクチャからブートするために必要なファイルは、RPMパッケージに含まれています。TFTPサーバが稼働するマシンにファイルをインストールするには、次のコマンドを使用します。

> sudo zypper in tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE

OS_VERSIONSUSE Linux Enterprise Serverインストール環境のバージョン(SLE-15-SP3-x86_64など)で置き換え、ARCHITECTUREはシステムのアーキテクチャ(x86_64など)で置き換えます。したがって、結果のテキストは次のようになります。tftpboot-installation-SLE-15-SP3-x86_64zypper se tftpbootを実行して、使用可能なすべてのバージョンとアーキテクチャを検索します。

ファイルは/srv/tftpboot/SLE-OS_VERSION-ARCHITECTUREにインストールされます。/srv/tftpbootディレクトリへは、SUSE Linux Enterprise Serverの他のバージョンとアーキテクチャのファイルをコピーすることもできます。

ヒント
ヒント: 異なるアーキテクチャの提供

クライアントとサーバのハードウェアアーキテクチャは異なる場合があります。たとえば、tftpboot-installation-SLE-15-SP3-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を開きます。installで説明している設定方法に従って、第16章 「ネットワークインストールソースをセットアップするパラメータのパスを置き換えます。また、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パラメータを指定する必要があります。7.3.3項 「インストールソースの指定」パラメータの詳細については、installを参照してください。

17.3 PXELINUXの設定オプション

ここに記されているのは、PXELINUX設定ファイルで利用可\'94\'5cなオプションの一部です。

APPEND OPTIONS

カーネルのコマンドラインに1つまたは複数のオプションを追加します。これらは、自動ブートと手動ブートのどちらの場合でも追加されます。オプションはカーネルコマンドラインの先頭に追加されるので、通常は、明示的に入力したカーネルオプションによって上書きすることができます。

APPEND -

何も追加しません。APPENDセクション内で、LABELに引数として1つのハイフンを付ければ、グローバルなAPPENDを上書きすることができます。

DEFAULT KERNEL_OPTIONS...

デフォルトのカーネルコマンドラインを設定します。PXELINUXが自動ブートするときに、指定されたエントリを実行し、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.30v2.6.31という2つのラベルは、PXELINUXでは区別できません。これらは切り詰められるとどちらも同じDOSファイル名になるからです。

カーネルはLinuxカーネルである必要はありません。ブートセクタまたはCOMBOOTファイルを使用することもできます。

LOCALBOOT TYPE

PXELINUXでは、 LOCALBOOT 0 オプションの代わりに KERNEL を指定すると、 この特定のラベルが呼び出されて、カーネルブートの代わりにローカルディスクのブートが行われます。

引数

説明

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に設定すると、ShiftAltキーが押された場合、またはCaps LockScroll Lockキーがセットされている場合にのみ、ブートプロンプトを表示します(デフォルト)。flag_valを1に設定すると、常にブートプロンプトを表示します。

F2  FILENAME
F1  FILENAME
..etc..
F9  FILENAME
F10 FILENAME

ブートプロンプトでファンクションキーを押したときに、指定されたファイルを表示します。これは、ブート前のオンラインヘルプ(おそらくはカーネルコマンドラインのオプション)を設定するために使用することができます。以前のリリースとの後方互換性のために、10F0Fとして入力することもできます。現在のところ、F11F12にファイル名を関連付けることはできないことに注意してください。

17.4 ターゲットシステムにおけるPXEブートの準備

システムのBIOSで、PXEブートの準備をします。これには、BIOSのブート順でのPXEオプションの設定も含まれます。

警告
警告: BIOSブートオーダー

BIOSで、PXEオプションをハードディスクブートパラメータの前に指定しないでください。さもないと、システムはブートのたびに再インストールを行おうとします。

17.5 Wake-on-LANを利用したリモート起動

WOL (Wake-on-LAN)は、ネットワーク経由でウェイクアップ信号を送信して、コンピュータをリモートでウェイクアップするためのEthernet標準です。この信号はマジックパケットと呼ばれます。リモートでウェイクアップを有効化するクライアントマシンと、ウェイクアップ信号の送信に使用したいすべてのマシンにWOLをインストールします。マジックパケットは、クライアントマシンのネットワークインタフェースのMACアドレスに、UDPポート9を介してブロードキャストされます。

コンピュータをシャットダウンする場合は、通常、完全に電源が切れるのではなく、低電力モードのままになります。ネットワークインタフェースがWOLをサポートする場合、マシンの電源が切れている間、マジックパケットのウェイクアップ信号をリスンします。手動でマジックパケットを送信することも、送信側マシンのcron jobでウェイクアップのスケージュールを設定することもできます。

17.5.1 前提条件

WOLをサポートするEthernetカードであれば、有線でも無線でもWOLを利用できます。

使用するシステムのBIOS/UEFIでWOLを有効化する必要がある場合があります。

PXEブートのBIOS/UEFI設定をチェックし、誤って再インストールされないようにするため、無効になっていることを確認してください。

UDPポート9を介してトラフィックを許可するように、ファイアウォールを調整します。

17.5.2 有線Ethernetのサポートの確認

次のコマンドを実行して、有線EthernetインタフェースがWOLをサポートしているかを確認します。

> sudo ethtool eth0 | grep -i wake-on
Supports Wake-on: pumbg
Wake-on: g

この例の出力では、g行のSupports Wake-onフラグから、eth0がWOLをサポートしていることがわかります。Wake-on: gは、WOLがすでに有効であることを示します。すなわち、このインタフェースはウェイクアップ信号を受け取る準備ができています。WOLが有効化されていない場合は、次のコマンドを実行して有効化します。

> sudo ethtool -s eth0 wol g

17.5.3 無線インタフェースのサポートの確認

Wakeup-over-wifi (WoWLAN)を使用するには、WoWLANをサポートする無線ネットワークインタフェースが必要です。iwコマンドを使用してテストします。このコマンドは、iwパッケージで提供されます。

> sudo zypper in iw

デバイス名を検索するには次のコマンドを実行します。

> sudo iw dev
phy#0
        Interface wlan2
                ifindex 3
                wdev 0x1
                addr 9c:ef:d5:fe:01:7c
                ssid accesspoint
                type managed
                channel 11 (2462 MHz), width: 20 MHz, center1: 2462 MHz
                txpower 20.00 dBm

この例では、WoWLANサポート可否の問い合わせに、phy#0というデバイス名を使用しています。この例は、WoWLANをサポートしていないことを示しています。

> sudo iw phy#0 wowlan show
command failed: Operation not supported (-95)

次の例は、インタフェースはWoWLANをサポートしているが、有効化されていないことを示しています。

> sudo iw phy#0 wowlan show
WoWLAN is disabled

有効化するには、次のコマンドを実行します。

> sudo iw phy#0 wowlan enable magic-packet
WoWLAN is enabled:
* wake up on magic packet

17.5.4 WOLのインストールとテスト

WOLを使用するには、クライアントと送信側のマシンにwolパッケージをインストールします。

> sudo zypper in wol

クライアントマシンにwol-udev-rulesをインストールします。このパッケージは、ウェイクアップ時に自動的にWOLを有効化するudevルールをインストールします。

クライアントマシンのネットワークインタフェースのMACアドレスを取得します。

> sudo ip addr show eth0|grep ether
link/ether 7c:ef:a5:fe:06:7c brd ff:ff:ff:ff:ff:ff

この例の出力では、MACアドレスは7c:ef:a5:fe:06:7cです。

クライアントマシンをシャットダウンし、同じサブネット上の別のコンピュータからウェイクアップ信号を送信します。

> wol 7c:ef:a5:fe:06:7c

ターゲットマシンとセカンドデバイスが同じネットワーク上にあるが、サブネットが異なる場合、ターゲットマシン用のブロードキャストアドレスを指定します。

> wol -i 192.168.0.63 7c:ef:a5:fe:06:7c

WOLはブロードキャストドメインに依存するため、送信用のマシンは同じネットワーク上に置かれている必要があります。ただし、ネットワークセグメントは異なっていてもかまいません。

異なるネットワークからマジックパケットを送信することもできます。1つは、ポートフォワーディングを使用する方法です。この場合、使用するルータがブロードキャストアドレスへのポートフォワーディングをサポートしている必要があります。より安全な方法としては、SSHを介してネットワーク上のホストに接続し、そこからマジックパケットを送信します。