22.2 PXEブートを使用した自動展開

同様のハードウェアにオペレーティングシステムを多数インストールする場合、オペレーティングシステムの大規模展開の準備をして、実際の展開に必要な時間を最小限に抑えると便利です。この章ではその方法について説明します。目標は、コンピュータを電源につないでネットワークに接続し、ネットワークブートを起動して、再び閉じるまで待つことです。

このタスクを完了するには次の操作を行う必要があります。

ブートおよびインストール用のサーバをセットアップします。

PXEブートとFTPまたはWebサーバを提供し、プリロードイメージを提供できるよう準備された専用コンピュータが必要です。必要なインストールデータをメモリにすべて保持できるように、コンピュータには十分なメモリを用意しておくことをお勧めします。デフォルトのインストールには、少なくとも4GBのメモリを必要とします。必要なタスクはすべて、SUSE Linux Enterprise Serverで行なえます。詳細については、セクション 22.2.1, ブートおよびインストール用サーバのセットアップを参照してください。

プリロードイメージを準備する

実際のインストールは、新規のハードディスクにオペレーティングシステムのRAWイメージをコピーすることで行なえます。機能と設定はすべて、注意深く準備しテストする必要があります。こうしたイメージを提供するには、KIWIを使用できます。KIWIはSUSE Linux EnterpriseオペレーティングシステムのSDKで入手できます。KIWIを使用したイメージの作成の詳細については、セクション 17.0, KIWIを参照してください。プリロードイメージのシステム要件に関する詳細については、セクション 22.2.2, プリロードイメージの作成を参照してください。

展開のための初期システムの作成

このタスクにはLinuxの専門知識がいくらか必要です。インストールの例を使用してLinuxの専門知識を得る方法に関する詳細は、セクション 22.2.3, プリロードイメージを展開する初期システムの作成をご覧ください。

ブートサーバで自動展開を行うよう設定する

最後に、すべてをまとめます。PXEブートはインストールシステムをブートするよう設定されている必要があります。インストールシステムはプリロードイメージをサーバから取得して、ハードディスクにコピーします。

22.2.1 ブートおよびインストール用サーバのセットアップ

SUSE Linux Enterprise Serverをインストールした後、このタスクを実行するには次の4つの手順があります。

このタイプのインストールを実行するには、以下の手順に従います。

  1. セクション 14.2, インストールソースを保持するサーバのセットアップで説明されている方法でインストールソースをセットアップします。HTTPまたはFTPネットワークサーバを選択します。

  2. 後のセットアップで作成されるブートイメージを保持するようTFTPサーバを設定します。これはセクション 14.3.2, TFTPサーバのセットアップで説明されています。

  3. すべてのマシンにIPアドレスを提供し、ターゲットシステムにTFTPサーバの場所を知らせるためのDHCPサーバをセットアップします。これはセクション 14.3.1, DHCPサーバのセットアップで説明されています。

  4. インストールサーバPXEブートを準備します。この詳細は、セクション 14.3.3, PXEブートの使用で説明しています。

このコンピュータでプリロードイメージをメモリに保持するために充分なメモリを用意しておけば、実際のインストールプロセスにたいへん役立ちます。また、ネットワーク全体でギガビットEtherenetがサポートされている場合、ギガビットEtherenetを使用すると、速度の遅いネットワークに比べて展開プロセスを大幅に短縮できます。

22.2.2 プリロードイメージの作成

KIWIでのイメージの作成については、セクション 17.4.2, イメージの作成を参照してください。ただし、大規模展開に役立つイメージを作成するには、いくつか考慮すべきことがあります。

  • 通常のプリロードイメージでは、次の種類を使用します。

    <type primary="true" filesystem="ext3" boot="oemboot/suse-SLES11">vmx</type>
  • プリロードイメージイメージのセットアップ中、イメージ作成プロセスは複数回実行されます。イメージを作成するのに必要なリポジトリは、ローカルコンピュータ上で使用できる必要があります。

  • プリロードの使用に関する希望に応じて、firstbootの設定にはいくらかの労力を要する場合があります。firstbootに関する詳細は、セクション 20.0, カスタマイズした事前インストールの配布を参照してください。この方法では、システムの初回起動時に初期設定を行うようユーザに求めることができます。

  • アップデートリポジトリの追加、あるいは初回起動時のアップデートの実行など、イメージには多くの追加機能を設定できます。しかしここでそのすべてを説明することは不可能であり、また、要件によってはプリロードイメージの作成にはイメージングシステムKIWIや、SUSE Linux Enterprise Serverで使用されている他のいくつかの技術に関する詳細な知識が必要になる場合があります。

展開される実際のイメージは、インストールサーバで指定したFTPまたはHTTPサーバから利用できます。

22.2.3 プリロードイメージを展開する初期システムの作成

自動展開を実行するには、ターゲットコンピュータ上で初期Linuxシステムを起動する必要があります。通常のインストール中は、カーネルおよび初期RAMファイルシステムが何らかのブートメディアから読み込まれ、BIOSによって起動されます。必要な機能はRAMファイルシステムに実装できます。RAMファイルシステムはカーネルと共に初期システムとして動作します。

初期システムで提供する必要がある主な機能は、ハードディスクへのアクセスを有効にし、ネットワーク接続を利用可能にする機能です。これらの機能はいずれも、展開先のハードウェアによって異なります。原則として初期システムを一から作成することは可能ですが、このタスクを容易にするために、ブート時にコンピュータで使用している初期RAMファイルシステムを変更することもできます。

次の手順は、必要な初期RAMファイルシステムの作成方法の一例です。初期RAMファイルシステムの作成には多くの方法がありますが、この例は比較的複雑ではないものです。

  1. ターゲットシステム上でSUSE Linux Enterprise Serverの標準インストールを行います。

  2. システム上にパッケージbusyboxをインストールします。

  3. 次のコマンドを使用して、新しいRAMファイルシステムを作成します。

    mkinitrd -f busybox -D eth0

    eth0はユーザのネットワークケーブルが接続されているEthernetデバイスを示します。パラメータ-f busyboxは、マルチコールバイナリbusyboxをRAMファイルシステムに追加します。これを行なった後、このシステム内で多くの標準UNIXコマンドが利用できます。

  4. 次のコマンドを使用して、新しいRAMファイルシステムとカーネルをブートサーバにコピーします。

    scp /boot/initrd /boot/vmlinuz pxe.example.com:

    pxe.example.comは、ご使用のローカルブートサーバの名前かIPアドレスに置き換えます。

  5. rootユーザとしてブートサーバにログインし、RAMシステムを変更できるディレクトリを作成します。

    mkdir ~/bootimage
  6. cd ~/bootimageコマンドを使用して、作業ディレクトリをこのディレクトリに変更します。

  7. 次のコマンドを使用して前にコピーした初期RAMファイルシステムを展開します。

    zcat ../initrd | cpio -i
  8. run_all.shファイルを編集します。

  9. 次の行を検索し、この行とファイルの残りを削除します。

    [ "$debug" ] && echo preping 21-nfs.sh 
  10. run_all.shファイルの末尾に次の行を追加します。

    [ "$debug" ] && echo preping 92-install.sh
    [ "$debug" ] && echo running 92-install.sh
    source boot/92-install.sh
    [ "$modules" ] && load_modules
         
  11. 次の内容を含む新しいスクリプトboot/92-install.shを作成します。

    #!/bin/bash
    if [ "$(get_param rawimage)" ]; then
      rawimage=$(get_param rawimage)
      if  [ "$(get_param rawdevice)" ]; then
        rawdevice=$(get_param rawdevice)
        echo "wget -O ${rawdevice} ${rawimage}"
        wget -O ${rawdevice} ${rawimage}
        sync
        sleep 5
        echo "DONE"
      fi
    fi
    # /bin/bash
    /bin/poweroff -f
    
  12. コンピュータを閉じる前にデバッグシェルが必要な場合は、/bin/bashの前のコメント署名を削除します。

  13. chmod 755 boot/92-install.shコマンドを使用してこのスクリプトを実行可能にします。

  14. 次のコマンドを使用して新しい初期RAMファイルシステムを作成します。

    mkdir -p /srv/tftpboot
    find . | cpio --quiet -H newc -o | gzip -9 -n > \
    /srv/tftpboot/initrd.boot
  15. また、カーネルを次のディレクトリにコピーします。

    cp ../vmlinuz /srv/tftpboot/linux.boot

これで初期RAMファイルシステムは、2つの新しいカーネルコマンドラインパラメータを使用する準備ができました。パラメータrawimage=<URL>は、プリロードイメージの場所を特定するために使用されます。wgetが理解できるURLはどれでも使用できます。パラメータrawdevice=<device>は、ターゲットコンピュータのハードディスクのブロックデバイスを特定するために使用されます。

22.2.4 ブートサーバの設定

ブートサーバの設定に関する詳細は、セクション 22.2.1, ブートおよびインストール用サーバのセットアップにリストされているように複数の章で説明されてます。このセクションは、システムの設定に最低限必要な手順を確認し、チェックリストとして使えます。

  • DHCPサーバのセットアップコンピュータがインストールされているサブネットには、次の追加行が必要です。

    filename "pxelinux.0";
    next-server 192.168.1.115;

    この例の192.168.1.115は、PXEサーバpxe.example.comのIPアドレスです。

  • セクション 14.3.3, PXEブートの使用で説明されているように、PXEサーバを設定します。/srv/tftpboot/pxelinux.cfg/defaultの編集時には次のエントリを追加します。

    default bootinstall
    label bootinstall
      kernel linux.boot
      append initrd=initrd.boot \
      rawimage=ftp://192.168.1.115/preload/preloadimage.raw rawdevice=/dev/sda
  • FTPサーバを設定し、準備済みのプリロードイメージを/srv/ftp/preload/preloadimage.rawにコピーします。

PXEネットワークブートを使用して、ターゲットシステムをブートし、セットアップをテストします。これによって、準備されたプリロードイメージが自動的にハードディスクにコピーされ、用意ができた時点でコンピュータが閉じられます。