
KIWIを使用して、オペレーティングシステムイメージを作成できます。この章では、空のクライアントマシンにシステムイメージを展開するプロセスについて説明します。このためには、ブート可能なRAWイメージを含むプリロードイメージを作成する必要があります。このファイルにはパーティションテーブルと、実際のオペレーティングシステムという2つの重要な部分が含まれます。このRAWイメージは空のハードディスクに書き込まれ、オペレーティングシステムは残りのディスクスペースを初回起動時に拡張します。
このようなイメージの作成については、http://doc.opensuse.org/projects/kiwi/doc/を参照してください。ISOイメージをビルドする場合は、このRAWファイルを宛先フォルダで見つけることができます。RAWイメージをディスクにダンプするには、多数の方法があります。
ディスクを展開サーバに挿入し、イメージをRAWデバイスにコピーします。
HTTPサーバまたはFTPサーバを介してRAWイメージをダウンロードし、クライアントマシンのディスクにダンプします。
イメージを取得してディスクにダンプするため、netbootイメージを作成します。これは大規模展開にお勧めする方法です。
レスキューディスクを起動し、rescueイメージから手動でダンプを行ないます。
迅速な起動には、23.1項 「レスキューイメージからの手動によるシステムの展開」で説明されている方法のうちいずれかを使用することをお勧めします。
KIWI構築プロセスから取得したISOイメージをCDまたはDVDに書き込みます。
このメディアからクライアントコンピュータにブートします。
インストール用ハードディスクを選択します。
クライアントコンピュータを再起動し、ハードディスクからブートします。
レスキューシステムでクライアントコンピュータをブートします。この種のシステムはすべてのSUSEインストールCDまたはDVDで利用できます。
rootとしてログインします。パスワードは入力しないでください。
ネットワークを設定します。ネットワークでDHCPが使用可能な場合、これはifup-dhcp eth0コマンドを使用するだけで済みます。手動で行なう必要がある場合は、ipコマンドを使用してネットワークを設定します。DHCPを起動する際の出力に、コンピュータのIPアドレスも表示されます。
次のコマンドを使用して、ネットワークの未使用ポート(たとえば、1234)でリッスンし、着信データをディスクにダンプします。
netcat -l -p 1234 > /dev/sda
イメージ処理サーバ上で、次のコマンドを使用してクライアントコンピュータに未加工イメージを送信します。
netcat <IP of client> 1234 < $HOME/preload_image/<image_name>
イメージが転送されたら、レスキューシステムをCDまたはDVDのドライブから取り出し、クライアントマシンをシャットダウンします。リブートすると、ブートロ-ダGRUBがクライアントで起動し、firstbootシステムが引き継ぎます。
同様のハードウェアにオペレーティングシステムを複数インストールする場合、オペレーティングシステムの大規模展開の準備に手間をかけ、実際の展開に必要な時間を最小限にすることが重要です。この章では、このプロセスについて説明します。目標は、コンピュータを電源接続し、ネットワークに接続し、ネットワークブートを開始したら、コンピュータがオフになるまで待機すれば済むようにすることです。
このタスクを完了するには次の操作を行う必要があります。
PXEブートとFTPまたはWebサーバを提供し、プリロードイメージを提供できるよう準備された専用のマシンが必要です。必要なインストールデータをメモリにすべて保持できるように、コンピュータには十分なメモリを用意しておくことをお勧めします。デフォルトのインストールには、少なくとも4GBのメモリを必要とします。必要なタスクはすべて、SUSE Linux Enterprise Serverで行うことができます。詳細については、23.2.1項 「ブートおよびインストール用サーバのセットアップ」を参照してください。
実際のインストールでは、新規のハードディスクにオペレーティングシステムの未加工イメージをコピーします。すべての機能と設定を注意深く準備し、テストする必要があります。このようなイメージの作成には、KIWIを使用できます(KIWIは、SUSE Linux EnterpriseオペレーティングシステムのSDKに含まれています)。KIWIを使用したイメージの作成の詳細については、http://doc.opensuse.org/projects/kiwi/doc/を参照してください。プリロードイメージのシステム要件に関する詳細については、23.2.2項 「プリロードイメージの作成」を参照してください。
このSDKは、SUSE Linux Enterprise向けのアドオン製品であり、http://download.suse.com/からダウンロードできます。「SUSE Linux Enterpriseソフトウェア開発キット」で検索してください。
このタスクにはLinuxの専門知識が必要です。このタスクを達成する方法については、23.2.3項 「プリロードイメージを展開する初期システムの作成」でインストール例を使用して説明しています。
PXEブートはインストールシステムをブートするよう設定されている必要があります。インストールシステムはプリロードイメージをサーバから取得して、ハードディスクにコピーします。
SUSE Linux Enterprise Serverのインストール後にこのタスクを実行するには、4つのステップを完了する必要があります。
14.2項 「インストールソースを保持するサーバのセットアップ」で説明されている方法でインストールソースをセットアップします。HTTPまたはFTPのネットワークサーバを選択します。
ブートイメージ(後で示すステップで作成)を保持するようにTFTPサーバを設定します。これは14.3.2項 「TFTPサーバのセットアップ」で説明されています。
すべてのコンピュータにIPアドレスを割り当て、ターゲットシステムにTFTPサーバの場所を知らせるように、DHCPサーバを設定します。これは14.3.1項 「DHCPサーバのセットアップ」で説明されています。
インストールサーバPXEブートを準備します。この詳細は、14.3.3項 「PXEブートの使用」で説明しています。
このコンピュータにプリロードイメージを保持できる充分なメモリを用意しておけば、実際のインストールプロセスで非常に役立ちます。また、ギガビットEthernetを使用すると、低速のネットワークを使用する場合と比べて、展開プロセスを大幅にスピードアップできます。
KIWIでのイメージの作成については、http://doc.opensuse.org/projects/kiwi/doc/を参照してください。ただし、大規模展開用のイメージを作成するには、次の点を考慮に入れる必要があります。
通常のプリロードイメージでは、次の種類を使用します。
<type primary="true" filesystem="btrfs" boot="oemboot/suse-SLES12">vmx</type>
プリロードイメージイメージのセットアップ中、イメージ作成プロセスは複数回実行されます。イメージのビルドに必要なリポジトリをローカルコンピュータ上で利用できる必要があります。
プリロードの使用に関する希望に応じて、firstbootの設定にはいくらかの労力を要する場合があります。firstbootに関する詳細は、第20章 カスタマイズした事前インストールの配布を参照してください。この方法では、システムの初回起動時に初期設定を行うようユーザに求めることができます。
アップデートリポジトリの追加や初回起動時のアップデートの実行など、イメージには多くの追加機能を設定できます。ただし、本書ですべての可能性を説明することは不可能であり、(要件によっては)プリロードイメージの作成にイメージングシステムKIWIや、SUSE Linux Enterprise Serverで使用される他の技術の詳細な知識が必要になる場合があります。
展開する実際のイメージは、インストールサーバで指定したFTPサーバまたはHTTPサーバから入手できます。
自動展開を実行するには、ターゲットコンピュータで初期Linuxシステムを起動する必要があります。通常のインストール時には、ブートメディアからカーネルおよび初期RAMファイルシステムが読み込まれ、BIOSによって起動されます。必要な機能はRAMファイルシステムに実装できます。このRAMファイルシステムはカーネルと共に初期システムとして動作します。
初期システムが提供する必要のある機能は、主として、ハードウェアへのアクセスを有効にする機能とネットワーク接続を可能にする機能です。これらの機能は両方とも、展開先のハードウェアに依存します。理論的には、初期システムを一から作成することは可能ですが、ブート時にコンピュータによって使用される初期RAMファイルシステムを変更することによって、このタスクを容易にすることができます。
次の手順は、必要な初期RAMファイルシステムを作成する方法の一例にすぎません。
ターゲットシステム上でSUSE Linux Enterprise Serverの標準インストールを行います。
このシステム上にパッケージbusyboxをインストールします。
次のコマンドを使用して、新しいRAMファイルシステムを作成します。
mkinitrd -f busybox -D eth0
ここで、eth0はネットワークケーブルの接続先のEthernetデバイスを表します。パラメータ-f busyboxは、マルチコールバイナリbusyboxをRAMファイルシステムに追加します。これを行った後、このシステム内で多くの標準UNIXコマンドが利用できます。
次のコマンドを使用して、新しいRAMファイルシステムとカーネルをブートサーバにコピーします。
scp /boot/initrd /boot/vmlinuz pxe.example.com:
pxe.example.comは、ご使用のローカルブートサーバの名前またはIPアドレスに置き換えます。
rootユーザとしてブートサーバにログインし、RAMシステムを変更できるディレクトリを作成します。
mkdir ~/bootimage
cd ~/bootimageコマンドで、作業ディレクトリをこのディレクトリに変更します。
次のコマンドを使用して、前にコピーした初期RAMファイルシステムを展開します。
zcat ../initrd | cpio -i
run_all.shファイルを編集します。
次の行を検索し、この行とファイルの残りを削除します。
[ "$debug" ] && echo preping 21-nfs.sh
run_all.shファイルの末尾に次の行を追加します。
[ "$debug" ] && echo preping 92-install.sh
[ "$debug" ] && echo running 92-install.sh
source boot/92-install.sh
[ "$modules" ] && load_modules
次の内容を含む新しいスクリプト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
コンピュータを閉じる前にデバッグシェルが必要な場合は、/bin/bashの前のコメント署名を削除します。
chmod 755 boot/92-install.shコマンドを使用してこのスクリプトを実行可能にします。
次のコマンドを使用して新しい初期RAMファイルシステムを作成します。
mkdir -p /srv/tftpboot find . | cpio --quiet -H newc -o | gzip -9 -n > \ /srv/tftpboot/initrd.boot
カーネルをこのディレクトリにコピーします。
cp ../vmlinuz /srv/tftpboot/linux.boot
これで初期RAMファイルシステムは、2つの新しいカーネルコマンドラインパラメータを使用する準備ができました。パラメータrawimage=<URL>は、プリロードイメージの場所を特定するために使用されます。wgetが理解できるURLはどれでも使用できます。パラメータrawdevice=<device>は、ターゲットコンピュータのハードディスクのブロックデバイスを特定するために使用されます。
ブートサーバの設定に関する詳細は、23.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ネットワークブートを使用して、ターゲットシステムをブートし、セットアップをテストします。これによって、準備されたプリロードイメージが自動的にハードディスクにコピーされ、用意ができた時点でコンピュータが閉じられます。