14.3 ターゲットシステムのブートの準備

このセクションでは、複雑なブートシナリオで必要となる設定タスクについて説明します。DHCP、PXEブート、TFTP、およびWake on LAN用の、すぐに使用できる設定例も含まれています。

14.3.1 DHCPサーバのセットアップ

DHCPサーバを設定するには、2種類の方法があります。YaST には、SUSE Linux Enterprise Serverの操作に使用するGUIが用意されています。設定ファイルは、手動で編集することもできます。DHCPサーバの詳細については、第22章 DHCPも参照してください。

YaSTを使ったDHCPサーバのセットアップ

TFTPサーバの場所をネットワーククライアントにアナウンスし、インストールターゲットが使用するブートイメージファイルを指定するには、DHCPサーバの設定に2つの宣言を追加します。

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

  2. [YaST] > [ネットワークサービス] > [DHCPサーバ]の順に選択します。

  3. 基本的なDHCPサーバのセットアップウィザードを完了します。

  4. [エキスパート設定]を選択し、起動ダイアログ終了の警告メッセージが表示されたら、[はい]を選択します。

  5. [設定済みの宣言]ダイアログで、新しいシステムを配置するサブネットを選択して、[編集].をクリックします。

  6. [サブネットの設定]ダイアログで、[追加]を選択して、サブネットの設定に新しいオプションを追加します。

  7. filenameを選択して、値にpxelinux.0を入力します。

  8. 他のオプション(next-server)を追加して、TFTPサーバのアドレスを値に設定します。

  9. [OK]をクリックした後、[完了]を選択して、DHCPサーバの設定を完了します。

特定のホストに静的IPアドレスを提供するようにDHCPを設定するには、DHCPサーバ設定モジュールの[エキスパート設定]ステップ 4から、ホストタイプの新たな宣言を追加します。このホスト宣言には、hardwareおよびfixed-addressオプションを追加して、適切な値を指定してください。

DHCPサーバの手動セットアップ

すべてのDHCPサーバが行う必要があるのは、ネットワーククライアントへのアドレスの自動割り当てのほかに、TFTPサーバ、およびターゲットマシンがインストールルーチンで取得するファイルのIPアドレスをアナウンスすることです。

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

  2. /etc/dhcpd.confにあるDHCPサーバの設定ファイルのサブネット設定に、次の行を追加します。

    subnet 192.168.1.0 netmask 255.255.255.0 { 
      range dynamic-bootp 192.168.1.200 192.168.1.228;
      # PXE related stuff 
      # 
      # "next-server" defines the tftp server that will be used 
      next-server ip_tftp_server: 
      #
      # "filename" specifies the pxelinux image on the tftp server
      # the server runs in chroot under /srv/tftpboot 
      filename  "pxelinux.0";
    }

    ip_of_the_tftp_serverは、TFTPサーバの実際のIPアドレスで置き換えてください。dhcpd.confで利用可能なオプションの詳細については、dhcpd.confのmanページを参照してください。

  3. rcdhcpd restartを実行して、DHCPサーバをリスタートします。

PXEおよびWake on LANインストールのリモート制御にSSHを使う場合には、DHCPがインストールターゲットに提供するIPアドレスを明示的に指定してください。IPアドレスを明示的に指定するには、上記のDHCP設定を次の例に従って変更します。

group { 
  # PXE related stuff 
  # 
  # "next-server" defines the tftp server that will be used 
  next-server ip_tftp_server:
  # 
  # "filename" specifies the pxelinux image on the tftp server 
  # the server runs in chroot under /srv/tftpboot
  filename "pxelinux.0";
  host test {
    hardware ethernet mac_address; 
    fixed-address some_ip_address;
    }
}

host文は、インストールターゲットのホスト名になります。ホスト名とIPアドレスを特定のホストにバインドするには、そのシステムのハードウェア(MAC)アドレスを調べ、これを指定する必要があります。この例で使用されているすべての変数を、使用する環境にマッチする実際の値で置き換えてください。

DHCPサーバをリスタートすると、サーバは指定されたホストに静的なIPを提供するので、そのシステムにSSHで接続することが可能になります。

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

TFTPサーバの設定では、SUSE Linux Enterprise ServerおよびSUSE Linux Enterprise ServerでYaSTを使用するか、またはxinetdとtftpをサポートしている他のLinuxオペレーティングシステム上で手動で行います。TFTPサーバは、ターゲットシステムがブートして要求を送ったときに、ブートイメージを提供します。

YaSTによるTFTPサーバのセットアップ

  1. rootとしてログインします。

  2. [YaST] > [ネットワークサービス] > [TFTPサーバ]の順に選択して、要求されたパッケージをインストールします。

  3. [有効にする]をクリックして、サーバが起動し、ブートルーチンに含まれるようにします。この. xinetdがブート時にtftpdを起動するようにするために必要なユーザ操作はありません。

  4. [ファイアウォール内でポートを開く]をクリックして、マシンで動作しているファイアウォールで適切なポートを開きます。サーバでファイアウォールが動作していない場合には、このオプションは利用できません。

  5. [参照]をクリックして、ブートイメージのディレクトリを参照します。デフォルトのディレクトリ/tftpbootが作成され、自動的に選択されます。

  6. [完了]をクリックして、設定内容を適用し、サーバを起動します。

TFTPサーバの手動セットアップ

  1. rootとしてログインして、tftpおよびxinetdパッケージをインストールします。

  2. もしまだ存在していなければ、/srv/tftpbootおよび/srv/tftpboot/pxelinux.cfgディレクトリを作成します。

  3. セクション 14.3.3, PXEブートの使用で説明されているように、ブートイメージに必要な、適切なファイルを追加します。

  4. /etc/xinetd.d/にあるxinetdの設定ファイルを変更して、ブート時にTFTPサーバが起動するようにします。

    1. もしまだ存在していなければ、touch tftpコマンドで、このディレクトリにtftpというファイルを作成します。それからchmod 755 tftpを実行します。

    2. tftpファイルを開いて、次の行を入力します。

      service tftp 
      { 
              socket_type            = dgram
              protocol               = udp 
              wait                   = yes 
              user                   = root 
              server                 = /usr/sbin/in.tftpd 
              server_args            = -s /srv/tftpboot 
              disable                = no 
      }
      
    3. このファイルを保存し、rcxinetd restartでxinetdをリスタートします。

14.3.3 PXEブートの使用

PXE (Preboot Execution Environment)の仕様書(http://www.pix.net/software/pxeboot/archive/pxespec.pdf)では、いくらかの技術的な背景情報と、PXEの完全な仕様について知ることができます。

  1. インストールリポジトリのディレクトリboot/<architecture>/loaderに移動し、次のコマンドの入力により、linuxinitrdmessagebiostest、およびmemtestの各ファイルを/srv/tftpbootディレクトリにコピーします。

    cp -a linux initrd message biostest memtest /srv/tftpboot
  2. YaSTを使い、インストールCDまたはDVDから直接syslinuxパッケージをインストールします。

  3. 次のコマンドを入力して、/usr/share/syslinux/pxelinux.0ファイルを/srv/tftpbootディレクトリにコピーします。

    cp -a /usr/share/syslinux/pxelinux.0 /srv/tftpboot
         
  4. インストールリポジトリにディレクトリに移動し、次のコマンドを入力して、isolinux.cfgファイルを/srv/tftpboot/pxelinux.cfg/defaultにコピーします。

    cp -a boot/<architecture>/loader/isolinux.cfg /srv/tftpboot/pxelinux.cfg/default
         
  5. /srv/tftpboot/pxelinux.cfg/defaultファイルを編集して、gfxbootreadinfo、およびframebufferで始まる行を削除します。

  6. デフォルトのfailsafeおよびapicラベルのappend行に、以下のエントリを挿入します。

    insmod=kernel module

    このエントリを使って、PXEクライアントにネットワークインストールを行うために必要なネットワークカーネルモジュールを指定します。kernel moduleには、ネットワークデバイスの適切なモジュール名を指定してください。

    netdevice=interface

    このエントリは、ネットワークインストールで使用する、クライアントのネットワークインタフェースを定義します。これは、クライアントに複数のネットワークカードが装着されている場合にのみ必要です。適切に調整してください。ネットワークカードが1枚の場合には、このエントリは省略できます。

    install=nfs://ip_instserver/path_instsource/CD1

    このエントリは、NFSサーバとクライアントインストールのインストールソースを定義します。ip_instserverをインストールサーバの実際のIPアドレスと置き換えます。path_instsourceは、インストールソースの実際のパスと置き換えます。HTTP、FTP、またはSMBソースも同様の仕方で指定できます。プロトコルのプレフィックスはhttpftp、またはsmbになります。

    重要: SSHまたはVNCブートパラメータなどの、他のブートオプションをインストールルーチンに渡す必要がある場合には、それらをinstallエントリに追加します。パラメータの概要といくつかの例は、セクション 14.4, ターゲットシステムをインストールのためにブートするを参照してください。

    ヒント: カーネルとInitrdのファイル名の変更

    カーネルとinitrdのイメージに異なるファイル名を使用することは可能です。これは、同じブートサーバから異なるオペレーティングシステムを提供する場合に便利です。ただし、PXE Boot用にtftpで設定されるファイル名では、ドットは1つしか許可されないので注意してください。

    /srv/tftpboot/pxelinux.cfg/defaultファイルの例は、次のようなものです。インストールソースのプロトコルプレフィックスは、ネットワークのセットアップにマッチするように調整してください。そして、使用する接続方法を指定するために、installエントリにvncvncpasswordまたはusesshsshpasswordオプションを追加してください。\で区切られている行は、改行や\なしに、連続する1行として入力する必要があります。

    default harddisk 
            
    # default
    label linux 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 \
         install=nfs://ip_instserver/path_instsource/product/DVD1 
    	    
    # repair
    label repair
      kernel linux
      append initrd=initrd splash=silent repair=1 showopts
    
    # rescue 
    label rescue 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 rescue=1 
    
    # bios test
    label firmware
      kernel linux
      append initrd=biostest,initrd splash=silent install=exec:/bin/run_biostest showopts
    
    #  memory test 
    label memtest 
      kernel memtest 
    
    # hard disk 
    label harddisk
      localboot 0
    
    implicit     0 
    display      message
    prompt       1 
    timeout      100
    

    ip_instserverpath_instsourceは、セットアップで使用した値で置き換えてください。

    以下のセクションは、このセットアップで使用するPXELINUXオプションの簡単なリファレンスとなっています。使用可能なオプションの詳細については、/usr/share/doc/packages/syslinux/にある、syslinuxパッケージのドキュメントを参照してください。

14.3.4 PXELINUXの設定オプション

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

DEFAULT kernel options...

デフォルトのカーネルコマンドラインを設定します。PXELINUXが自動的にブートする場合には、DEFAULTの後のエントリがブートプロンプトに対して入力されたときのように動作します。加えて、自動ブートであることを示すautoオプションも自動的に追加されます。

設定ファイルが存在しない、または設定ファイル内にDEFAULTエントリが存在しない場合には、オプションの付かないカーネル名linuxがデフォルトとなります。

APPEND options...

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

LABEL label KERNEL image APPEND options...

ブートするカーネルとしてlabelが入力された場合、PXELINUXは代わりにimageをブートし、ファイルのグローバルセクション(最初のLABELコマンドの前)で指定されたものの代わりに、指定されたAPPENDオプションを使用します。imageのデフォルトはlabelと同じです。また、APPENDが指定されなかった場合には、グローバルエントリがデフォルトとして使用されます(あれば)。最大で128のLABELエントリが使用できます。

GRUBは次の構文を使用することに注意してください。

title mytitle 
  kernel my_kernel my_kernel_options 
  initrd myinitrd

PXELINUXは次の構文を使用します。

label mylabel 
  kernel mykernel 
  append myoptions
      

ラベルは、ファイル名の場合のように切り詰められるので、切り詰められた後も一意性が保たれるように決める必要があります。たとえば、v2.1.30v2.1.31という2つのラベルは、PXELINUXでは区別できません。これらは切り詰められるとどちらも同じDOSファイル名になるからです。

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

APPEND -

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

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

F2  filename
F1  filename 
..etc... 
F9  filename
F10 filename

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

14.3.5 ターゲットシステムでPXEブートの準備をする

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

警告: BIOSブートオーダー

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

14.3.6 ターゲットシステムでWake on LANの準備をする

Wake on LAN (WOL)では、インストールの前に適切なBIOSオプションを有効にすることが必要です。また、ターゲットシステムのMACアドレスを記録しておいてください。このデータは、Wake on LANを開始するために必要です。

14.3.7 Wake on LAN

Wake on LANを使えば、コンピュータのMACアドレスを含む特別なネットワークパケットを使って、コンピュータの電源を入れることができます。世界中のすべてのコンピュータは一意のMAC識別子を持っているので、間違って別のコンピュータの電源を入れてしまう心配はありません。

重要: 異なるネットワークセグメントにまたがるWake on LAN

制御用のマシンが、起動すべきインストールターゲットと同じネットワークセグメント内にない場合には、WOL要求がマルチキャストとして送信されるように設定するか、またはそのネットワークセグメント内にあるマシンをリモートに制御して、要求の送信元として作動させてください。

SUSE Linux Enterprise Serverのユーザは、WOLと呼ばれるYaSTモジュールを使って、簡単にWake on LANを設定することができます。他のバージョンのSUSE LinuxベースのOSユーザは、コマンドラインツールを使用してください。

14.3.8 YaSTを使ったWake on LAN;

  1. rootとしてログインします。

  2. [YaST] > [ネットワークサービス] > [WOL]の順に選択します。

  3. [追加]をクリックして、ターゲットシステムのホスト名とMACアドレスを入力します。

  4. このコンピュータの電源を入れるには、適切な項目を選択して、[起動]をクリックします。