システムが自動インストールの処理に突入し、制御ファイルが取得されると、 YaST は制御ファイル内に書かれた情報をもとにしてシステムを設定します。 すべての設定は、通常のインストール時に表示され、完全自動インストールの 際は表示されることのない、 1 つのウインドウ内にまとめられます。
YaST が設定の概要を表示する段階では、 YaST は検出したハードウエアに関する 情報と、自動インストールに関連する準備作業のみを行なった状態になります。 この時点ではシステムに対して何も変更を加えていません。ここまでに何らかの エラーが発生すると、処理は中断することになります。
なお、グラフィックアダプタやモニタの搭載されている必要のない環境に対しても、 システムを自動インストールすることができます。クライアントマシンに接続された モニタなどを利用することで、処理の進捗を確認したり、エラー発生時の対応を 行なったりすることができます。この場合、グラフィカルな (Qt または GTK を利用 する) インターフェイスのほか、 Ncurses を利用したテキストベースのインターフェイスも 利用することができます。それ以外にも、シリアルコンソール経由でシステムメッセージを 監視したりすることもできます。
自動インストールを行なう場合、 X11 インターフェイスが既定で動作します。 これを利用する場合は、特に何も設定する必要はありません。
シリアルコンソールを利用してインストールを行なう場合は、カーネルの コマンドラインに対して "console" (例: "console=ttyS0") というキーワードを 追加します。 linuxrc はコンソールモードで起動され、 YaST がシリアル コンソール内に表示されるようになります。
テキストベースで表示する場合にも、コマンドラインからの設定で行ないます。 これは YaST2 を Ncurses モードで起動します。 テキストベースでインストールを行なうには、コマンドラインに textmode=1 を指定してください。
これは特に、クライアントマシンに 64MB 未満のメモリしか搭載されていない ような場合や、グラフィックカードが搭載されておらず X11 を全く設定する ことができない場合に、お勧めです。
インストール作業を行なうクライアントは、様々な方法で起動することが できます。コンピュータに搭載されたネットワークインターフェイスカード (NIC) を利用して、 DHCP や TFTP などのプロトコルを 利用して起動用のイメージを取得することができます。それ以外にも、カーネルや initrd のイメージを、フロッピィディスクや CD-ROM から取得することができます。
ネットワークインターフェイスカード (NIC) に PROM や PXE などの起動環境が 用意されていない場合や、テストや既存環境の救出 (レスキュー) を目的とする 場合、 AutoYaST で起動用のフロッピィディスクを作成することができます。 もちろん自動インストールでフロッピィディスクを使用する場合、フロッピィ ディスク内に保存可能なサイズまでに限られますが、自動インストールを行なう ことができます。もちろんネットワークの接続なども (容量の問題は残りますが) 不要です。
ネットワークに接続されていない単独マシンの場合、通常の SuSE CD-ROM を利用し、フロッピィディスクに制御ファイルだけを保存して利用する、 という方法もあります。カーネルのコマンドラインで制御ファイルの場所を指定 する際、フロッピィディスクを指定すれば実現できます。
起動時のコマンドライン指定を省略する方法もあります。自動インストールを
行なうための制御ファイルを、 autoinst.xml
という名前で
フロッピィディスク内に保存しておくことで、 YaST はその存在を自動的に確認し、
存在していれば自動インストールが開始されます。
他のメディアと合わせて、通常の SuSE CD-ROM を 組み合わせて使用することもできます。たとえば制御ファイルをフロッピィ ディスクや、ネットワーク上離れた場所に配置するなどのやり方があります。
それ以外にも、必要なパッケージと制御ファイル、そしてそれらに必要な ファイルだけを記録した、独自の CD-ROM を作成する方法もあります。 この場合、制御ファイルを修正するには、 CD-ROM を作成しなおす必要が あります。
PXE を利用した起動を行なうには、ネットワーク内に DHCP サーバと TFTP サーバが必要となります。コンピュータ側では、フロッピィディスクや CD-ROM などのメディアを挿入する必要はありません。
下記は /srv/tftp/pxelinux.cfg/default
ファイルの
構成例です:
default SLES9 # install SLES9 label SLES9 kernel linux_sles9 append initrd=initrd_sles9 vga=0x0314 install=.... autoyast=... language=ja_JP # boot harddisc label hd· LOCALBOOT 0
グラフィカル環境でインストールを行なうには、 vga=... パラメータに正しい値を 設定して追加することをお勧めします。これにより、 VESA ドライバ (汎用ドライバ) を利用したインストールや、 ncurses (つまりテキストモード) のインストールを 避けることができます。
また、下記は /etc/dhcp.conf
ファイルの例です:
option domain-name-servers 192.168.66.1; default-lease-time 600; max-lease-time 7200; ddns-update-style none; ddns-updates off; log-facility local7; option grub-menufile code 150 = text; option grub-menufile "(nd)/menu.lst";· subnet 192.168.66.0 netmask 255.255.255.0 { range 192.168.66.100 192.168.66.200; # PXE 関連の設定 # # "next-server" は PXE クライアントに対して、 pxelinux の # イメージを提供するサーバを意味します。 next-server 192.168.66.1; allow booting; allow bootp; option routers 192.168.66.1; # デフォルトゲートウェイ # # "filename" では、 TFTP サーバ上での pxelinux イメージの # ファイル名を指定します。これが PXE クライアント側に # 送信され、このファイルで起動が行なわれます。 filename "pxelinux.0"; }
PXE を利用したインストールを行なう際、注意すべき点はインストールが永久ループ になってしまいかねない点です。これはインストール時の起動もその後の起動も全く 同じ起動処理であるため、そのままでは、第 1 ステージ後の再起動でもハードディスク から起動せず、 PXE による起動が行なわれて最初からインストールしなおしてしまう ことになるためです。
この問題は様々な方法で解決することができます。 1 つは AutoYaST のプロファイルを http サーバから取得するようにする方法です。この場合、 http サーバからは常に同じ プロファイルを提供せず、 Web サーバ内で CGI などを実行させて 1 度だけプロファイルを 提供するとともに、 TFTP サーバの設定を無効にするようにします。これにより PXE からの起動が失敗するようになりますので、インストール対象のマシンはハードディスクから 起動することができます。
もう 1 つの方法は、 AutoYaST を利用して新しい PXE 起動設定をアップロードすることです。 この場合、プロファイルには下記のように記述します:
<pxe> <pxe_localboot config:type="boolean">true</pxe_localboot> <pxelinux-config> DEFAULT linux LABEL linux localboot 0 </pxelinux-config> <tftp-server>192.168.66.1</tftp-server> <pxelinux-dir>/pxelinux.cfg</pxelinux-dir> <filename>__MAC__</filename> <!-- openSUSE 11.2 またはそれ以降のみ (SLES11 を除く) --> </pxe>
上記の項目を設定すると、最初の再起動を実施する直前のタイミングで、 TFTP サーバに対して
ホストに新しい設定をアップロードするようになります。多くの場合、 TFTP デーモンは "nobody"
というユーザで動作しているため、このユーザが pxelinux.cfg
ディレクトリに書き込むことができることを確認する必要があります。この設定では、
たとえばお使いのマシンの IP アドレスが "192.168.66.195" であるとすると、
C0A842C3
という名前のファイルがアップロードされます。
マシンが再起動して DHCP サーバから同じ IP アドレスを取得すると、上記でアップロードした
設定を使用するため、ハードディスクから起動するようになります。
同じマシンに対して再度自動インストールを実行させたい場合は、 上記でアップロードされたファイルを削除します。
openSUSE 11.2 またはそれ以降のバージョン (SLES11 を除く) では、 アップロードするファイルのファイル名を設定することができます。 ファイル名の欄に __MAC__ と記述すると、 "01-08-00-27-79-49-ee" のような マシンの MAC アドレスを使用したファイル名になります。ファイル名の 設定が存在しない場合、従来通り IP アドレスから生成したファイル名を 使用します。
コマンドラインオプションに autoyast を指定すると、 linuxrc は自動化モードで動作するようになります。 linuxrc は、設定ファイルを下記の場所から探します: linuxrc searches for a configuration file
システムの起動時に使用した初期 RAM ディスク (initrd) 内の ルートディレクトリ。
フロッピィディスクドライブのルートディレクトリ。
linuxrc で使用可能な設定ファイルには、下記のキーワードを 設定することができます (linuxrc の動作に関する詳しい説明と、 その他のキーワードについては、 「付録B 高度な linuxrc オプション」 をお読みください):
表7.1 linuxrc に対するキーワード
キーワード |
値 |
---|---|
netdevice |
ネットワーク経由での起動 (BOOTP と DHCP による起動) に使用するネットワークデバイス。 |
server |
ソースディレクトリにアクセスするためのサーバ (NFS サーバ) 。 |
serverdir |
NFS サーバ内のディレクトリ。 |
hostip |
何も指定しない場合、クライアントは BOOTP リクエストを送信して自分自身のアドレスを設定します。 ここで何らかの値を設定すると、その値を自分自身のアドレスと して設定します。 |
netmask |
ネットマスク。 |
gateway |
ゲートウェイ。 |
nameserver |
ネームサーバ。 |
insmod |
読み込むべきカーネルモジュール。 |
autoyast |
自動インストールに使用する制御ファイルの場所 (例: autoyast=http://192.168.2.1/profiles/) |
install |
インストールディレクトリの場所 (例: install=nfs://192.168.2.1/CDs/) |
instmode |
インストールモード (例: "nfs", "http"; install が設定されている場合は指定不要) |
y2confirm |
<confirm>no</confirm> がプロファイル内で設定されて いても、確認用の提案画面を表示する (SUSE Linux 10.1/SLES10 、もしくは それ以降のバージョンで使用可能) 。 |
これらの値とキーワードは、 YaST がメインの制御ファイルにアクセスする までに必要となる情報です。現時点ではインストール元のメディアは自動的に 検出する仕組みであり、 linuxrc に何も指定しなくても 自動インストールを開始することができます。
従来の linuxrc 設定ファイルでは、インストールサーバ とインストールメディアの場所に関する必要なすべての情報を設定することが できるようになっています。多くの場合、何も指定する必要はありませんが、 DHCP や BOOTP を使用しない環境、もしくは特別な カーネルモジュールを読み込む必要があるシステムでは、これらを指定する 必要があります。
また、全ての linuxrc 関連の設定は、カーネルコマンドラインを通して linuxrc に渡すことができます。ここではネットワーク 経由で起動可能なイメージを設定することができるほか、 Etherboot や PXE などとの組み合わせで、特別に 設定した DHCP などを使用する設定なども 設定できます。
コマンドライン変数である autoyast に設定可能な 値について、詳しくは 「表7.2「AutoYaST 向けのコマンドライン変数」」 の表をお読みください。
表7.2 AutoYaST 向けのコマンドライン変数¶
コマンドライン変数 |
説明 |
---|---|
autoyast=default |
既定の自動インストールオプションです。 |
autoyast=file://<パス> |
指定したパスに制御ファイルが存在するかどうかを検索する オプションです。このオプションでは、ソースディレクトリからの 相対パスを指定します。たとえば file:///autoinst.xml のように指定し、 CD-ROM から起動した場合、 CD-ROM のルート ディレクトリに制御ファイルが存在するかどうかを確認します。 |
autoyast=device://<デバイス>/<ファイル> |
指定したストレージデバイス内に制御ファイルが存在するかどうかを 検索するオプションです。このオプションでのデバイスは、 フルパス (たとえば /dev/sda1) ではなく、デバイス名 (たとえば sda1) を指定します。 openSUSE 11.2 またはそれ以降のバージョン (SLES11 を除く) では、デバイスの指定を省略することもできます。この場合は、 AutoYaST がすべてのデバイスを検索し、指定のファイルが存在するかどうかを 検索します。 |
autoyast=floppy://<パス> |
指定したフロッピィディスクドライブ内に制御ファイルが存在するかどうかを 検索するオプションです (特に CD から起動している場合に便利な オプションです) 。 SLES10 SP1 またはそれ以降のバージョンの場合、 フロッピィディスクドライブ内に制御ファイルが存在しないと、 USB デバイスも検索します。 |
autoyast=nfs://<サーバ>/<パス> |
指定した <サーバ> 内に制御ファイルが存在していないかどうかを を検索するオプションです。 |
autoyast=http://[ユーザ:パスワード@]<サーバ>/<パス> |
HTTP プロトコルを利用して、 Web サーバから制御ファイルを 取得するオプションです。 |
autoyast=https://[ユーザ:パスワード@]<サーバ>/<パス> |
HTTPS プロトコル (つまり暗号化された接続) を利用して、 Web サーバから制御ファイルを取得するオプションです (SL 10.1 および SLES10 、もしくはそれ以降のバージョンで利用できます) 。 |
autoyast=tftp://<サーバ>/<パス> |
TFTP プロトコルを利用して制御ファイルを取得するオプションです。 |
autoyast=ftp://[ユーザ:パスワード@]<サーバ>/<パス> |
FTP プロトコルを利用して制御ファイルを取得するオプションです。 |
autoyast=usb://<パス> (SLES10 SP1 またはそれ以降のバージョンのみ) |
USB デバイスから制御ファイルを取得するオプションです (AutoYaST は接続されているすべての USB デバイスを検索します) 。 |
autoyast=relurl://<パス> (openSUSE 11.0 以降のみ) |
制御ファイルをインストール元 (install=.... で指定したもの) から 取得するオプションです。 |
autoyast=slp (openSUSE 11.2 以降 (ただし SLES11 を除く) のみ) |
SLP サーバに対して、プロファイルの場所を問い合わせるための オプションです (service:autoyast:...) 。 openSUSE 11.3 以降の場合、 "description=" で属性を記述し、 URL をよりわかりやすく "翻訳" することができます。 |
autoyast=cifs://<サーバ>/<パス> (openSUSE 11.2 以降 (ただし SLES11 を除く) のみ) |
CIFS プロトコルを利用して <サーバ> から制御ファイルを取得するオプションです。 |
autoyast=label://<ラベル>/<パス> (openSUSE 11.3 以降 (ただし SLES11 を除く) のみ) |
指定したラベルを持つデバイスから制御ファイルを取得するオプションです。 |
自動インストールを行なうにあたって、場合によっては異なるインフラと インストールメディアを使用する場合もあります。この場合、もっともシンプルな 解決方法は、 SuSE 提供のメディアを使用することです。 この場合、必要な全てのパッケージが収録された SuSE DVD または CD-ROM が必要となります。この場合は、自動インストールを行なう ためのコマンドラインは、システムの起動時に入力する必要があります。 下記の一覧には、自動インストールを実行するのに必要な制御ファイルの指定 方法と、設定について説明しています。
SuSE 提供の CD-ROM を利用する場合:
SuSE 提供の CD-ROM を使用するには、制御ファイルの存在するメディアを 用意する必要があります。制御ファイルは下記のような場所に配置できます:
フロッピィディスク:
autoyast=floppy オプションで、
フロッピィディスク内のファイルとして指定し、利用する方法です。
YaST はその起動時、 autoinst.xml
という
ファイル名で検索を行ないます。このファイルが見つかると、 YaST は
それ以外に何も指定されていない状況でも、自動インストールモードに
切り替えます (詳しくは 「7.3.2項 「単一システムの自動インストール」」
をお読みください) 。
ネットワーク: 下記のいずれかを利用して、 制御ファイルを指定することができます: autoyast=nfs://.., autoyast=ftp://.., autoyast=http://.., autoyast=tftp://..
'独自の' CD-ROM を利用する場合:
この場合は、 CD-ROM 内に制御ファイル自体を含めることができる (autoyast=file:// オプションを使用します) ほか、 SuSE 提供の CD-ROM と同様に、様々な方法で 制御ファイルを設定することができます。
CD-ROM を自動インストールに使用する場合、 CD-ROM をインストールに 使用するように指示し、ネットワーク内にインストールファイルを検索 しないように指定する必要があります。 CD-ROM からのインストールを 行なうには、 instmode=cd オプションをカーネルの コマンドラインに設定します (CD 内の isolinux.cfg で設定できます) 。
フロッピィディスク/ネットワーク/CD-ROM を起動に利用し、 NFS を インストールに使用する場合:
このオプションは、多数の PC へインストール作業を行なう場合、通常は NFS サーバと BOOTP や DHCP を併用して実施するため、とても 重要な選択肢になります。この場合、制御ファイルは下記の場所に配置できます:
フロッピィディスク/CD-ROM: autoyast=file://.. オプションを利用して、 制御ファイルを指定することができます。
ネットワーク: 下記のいずれかを利用して、 制御ファイルを指定することができます: autoyast=http://.. autoyast=ftp://.. autoyast=nfs://.. autoyast=tftp://..
ネットワークや DHCP の無効化 | |
---|---|
CD-ROM からの自動インストールなど、インストール作業中にネットワーク 接続が不要である場合や、ネットワークが利用できないような場合、 linuxrc のオプション netsetup を指定して、 ネットワークの動作を無効化することができます。具体的には、 netsetup=0 を指定してください。 |
autoyast=default を指定すると、 YaST は
下記の 3 箇所に対して、 autoinst.xml
が存在して
いないかどうかを確認します:
フロッピィディスクのルートディレクトリ
インストールメディアのルートディレクトリ。
システムの起動時に使用していた、初期 RAM ディスク (initrd) のルートディレクトリ。
default を除くすべての AutoYaST 実行オプションを 利用すると、それぞれ下記の方法で制御ファイルを指定することができます:
制御ファイルに対する正確な場所を指定する:
autoyast=http://192.168.1.1/control-files/client01.xml
制御ファイルが配置されているディレクトリを指定する:
autoyast=http://192.168.1.1/control-files/
この場合、上述のとおり IP アドレスを 16 進数に変換したものを、 制御ファイルのファイル名として使用します。
パス部分しか指定しない場合、 YaST は下記の順序で制御ファイルを 検索します:
まずは自分自身の IP アドレスを 16 進数 (大文字) に変換したものを、 制御ファイルの名前にしてアクセスしようとします (例: 192.0.2.91 -> C000025B) 。
上記のファイルが見つからない場合、 YaST は 1 つずつ桁を減らしてアクセス
を再試行します。この動作は、ファイルが見つかるまで続きます。それでも
見つからないと、クライアントの MAC アドレス (0080C8F6484C
のように、 16 進数の書式です) で制御ファイルを検索します。さらにこれでも
見つからないと、 default
という名前 (小文字) で
制御ファイルを検索します。
たとえば 192.0.2.91 というアドレスの場合、 HTTP クライアントは下記の順序で アクセスを試みます:
C000025B C000025 C00002 C0000 C000 C00 C0 C 0080C8F6484C default
クライアントの IP アドレスから 16 進数表記を作成するには、 syslinux パッケージにある /usr/sbin/gethostip というツールを利用すると よいでしょう。
ネットワークの接続が存在しない環境で、単一のシステムを自動インストール する場合は、 SuSE 提供の CD-ROM とフロッピィディスク を使用するのが最も便利な方法です。ネットワーク環境内にインストールサーバを 構築する必要はありません。
まずは制御ファイルを autoinst.xml
という名前で作成し、
ファイルをフロッピィディスクにコピーします。このとき、フロッピィディスクは
マウントしてもかまいませんし、 mtools のようなツールで
書き込んでもかまいません。
mcopy autoinst.xml a:
info ファイルを利用して linuxrc に情報を渡す場合、その情報を XML 形式の制御ファイル内に統合することが できます。この場合、ファイルは linuxrc からアクセス可能な形式であり、 info という名前を設定する必要があります。
linuxrc は制御ファイル内で特定の文字列 (start_linuxrc_conf) を検索し、見つかった場所を開始点として判断します。そこから読み込みを行ない、 さらに特定の文字列 (end_linuxrc_conf) が見つかるまでの 間を処理します。たとえば制御ファイルは、下記のように記述します:
例7.2 制御ファイル内での linuxrc オプション
.... <install> .... <init> <info_file> <![CDATA[ # # Don't remove the following line: # start_linuxrc_conf # install: nfs://192.168.1.1/CDs/full-i386 textmode: 1 autoyast: file:///info # end_linuxrc_conf # Do not remove the above comment # ]]> </info_file> </init> ...... </install> ....
なお、 "autoyast" キーワードは同じファイルを指し示すものでなければならない ことに注意してください。たとえば制御ファイルがフロッピィディスク内に存在する 場合、プロトコルは floppy になります。また、 info ファイルが初期 RAM ディスク内に保存されている場合、 file オプションを使用します。
自動インストール時のシステム設定は、処理全体でも最も重要な部分をしめるものです。 環境や要件に合わせてシステムをカスタマイズすることは、自動インストールの 仕組みをより魅力的なものにすることができます。
以前の章でも説明したとおり、自動インストールではほぼすべての設定を実施すること ができます。事前に設定した内容に加え、処理後に動作するスクリプトなどで細かい 調整を行なうこともできます。また、必要であればシステム変数を変更したり、 設定ファイルそれ自身をどこかからコピーしたりすることもできます。
インストール後のシステム設定は、ターゲットとなるシステムで全てのパッケージが インストールされ、初回の再起動が行なわれた後に動作します。
システムを初めて再起動する前に、AutoYaST はインストール時に収集したすべての データを書き込み、さらにブートローダを指定した場所に書き込みます。 通常の処理に加え、 AutoYaST は制御ファイルに記載された chroot-scripts ファイルも実行します。ただし、 これらのスクリプトは、システムがマウントされていない状態で実行されます。
既定のカーネル以外がインストールされている場合、ハードウェア的な (kexec を使用しない) 再起動が必要となります。自動インストールの場合は、 カーネルのインストールとは別途に再起動を強制することができます。これは general リソース内の reboot 属性で設定します (汎用オプション をお読みください) 。
インストールの第 2 ステージで、システムに対するほとんどのカスタマイズが 完了します。 AutoYaST のリソース設定では実施することのできないカスタマイズ 項目がある場合は、インストール後スクリプトを利用して、さらなる調整を 実施してください。
制御ファイル内には、独自に実行するスクリプトを必要なだけ設定することが できます。制御ファイル内に直接記入してもかまいませんし、設定システムを 利用してもかまいません。