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

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

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

SUSE Linuxでは、DHCPサーバのセットアップは、適切な設定ファイルを手動で編集することによって行います。このセクションでは、既存のDHCPサーバの構成を拡張して、TFTP、PXE、およびWOL環境でサービスを行うのに必要なデータを提供する方法について説明します。

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

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

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

  2. /etc/dhcpd.confというDHCPサーバの設定ファイルに、以下の行を追加します。

    group { 
      # PXE related stuff 
      # 
      # "next server" defines the tftp server that will be used 
      next server ip_tftp_server: 
      #
      # "filename" specifiies 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アドレスを明示的に指定してください。そのためには、上記のDHCP設定を、以下の例に従って修正します。

 
group { 
  # PXE related stuff 
  # 
  # "next server" defines the tftp server that will be used 
  next server ip_tftp_server:
  # 
  # "filename" specifiies 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で接続することが可能になります。

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

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

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

  1. rootでログインします。

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

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

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

  5. [Browse]をクリックして、ブートイメージのディレクトリをブラウズします。

    デフォルトのディレクトリ/tftpbootが作成され、自動的に選択されます。

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

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

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

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

  3. 1.3.3項 「PXEブート」で説明されているように、ブートイメージに必要な、適切なファイルを追加します。

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

    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 /tftpboot 
              disable                = no 
      }
      
    3. このファイルを保存し、rcxinetd restartでxinetdをリスタートします。

1.3.3 PXEブート

PXE (Preboot Execution Environment)の仕様書(ftp://download.intel.com/labs/manage/wfm/download/pxespec.pdf)では、いくらかの技術的な背景情報と、PXEの完全な仕様について知ることができます。

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

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

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

    insmod=e100

    このエントリにより、Intel 100MBit/sネットワークカード用のカーネルモジュールがPXEクライアントにロードされます。このエントリはクライアントのハードウェアに依存するので、それに応じて調整してください。Broadcom GigaBitネットワークカードの場合には、このエントリをinsmod=bcm5700にします。

    netdevice=eth0

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

    install=nfs://ip_instserver/path_instsource/CD1

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

    [Important]重要項目

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

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

    default linux 
            
    # default 
    label linux 
      kernel linux 
    	    append initrd=initrd ramdisk_size=65536 insmod=e100 \
    	    install=nfs://ip_instserver/path_instsource/product 
    	    
    # failsafe 
    label failsafe 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 ide=nodma apm=off acpi=off \
      insmod=e100 install=nfs://ip_instserver/path_instsource/product
    
    # apic 
    label apic 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 apic insmod=e100 \
      install=nfs://ip_instserver/path_instsource/product
    
    # manual 
    label manual 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 manual=1 
    
    # rescue 
    label rescue 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 rescue=1 
    
    #  memory test 
    label memtest 
      kernel memtest 
    
    # hard disk 
    label harddisk 
      kernel 
      linux append SLX=0x202 
    
    implicit     0 
    display      message
    prompt       1 
    timeout      100
    

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

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

1.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.30」と「v2.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にファイル名を関連付けることはできないことに注意してください。

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

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

[Warning]警告

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

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

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

1.3.7 Wake on LAN

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

[Important]重要項目

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

1.3.8 手動によるWake on LAN

  1. rootでログインします。

  2. [YaST]+[ソフトウェアの管理]の順に選択して、netdiagパッケージをインストールします。

  3. ターミナルを開き、rootとして次のコマンドを入力して、ターゲットを起動します。

    ether-wake mac_of_target

    mac_of_targetは、ターゲットの実際のMACアドレスで置き換えてください。