システムが自動インストールを起動して制御ファイルを取得すると、 YaST は制御ファイル内に書かれた情報をもとにして、システムの設定を始めます。全ての設定は既定で表示されるウインドウ内にまとめられますが、完全にインストールを自動化したい場合には無効化することもできます。
YaST が設定の概要を表示したタイミングでは、 YaST はハードウエアの検出を行って自動インストールのための準備を行っただけの状態になります。この時点ではまだシステムに対して、何も変更を加えていない状態になります。ここまでで何らかのエラーが発生しても、処理を安全に中止することができます。
システムを自動インストールする場合は、グラフィックアダプタやモニタを使用せずに行うこともできます。ただし、クライアントマシンに自動インストールするような場合は、進捗状況やエラー時の対応を行う必要があることから、モニタを接続しておくことをお勧めします。また、グラフィカルなインターフェイスだけでなく、テキストベースの ncurses インターフェイスを使用することもできます。このほか、キーボードやマウス、ディスプレイの存在しないクライアントであれば、シリアルポートをコンソールとして使用することもできます。
自動インストールを行う場合、これが既定のインターフェイスとなります。このインターフェイスを使用する場合には、特に何も設定を行う必要はありません。
シリアルコンソールを利用してインストールを行いたい場合は、カーネルのコマンドラインに対して console キーワード (例: console=ttyS0 ) を追加します。これにより linuxrc がコンソールモードで動作するようになり、 YaST についてもシリアルコンソール経由で表示されるようになります。
このオプションについても、コマンドラインから有効化することができます。 YaST をテキストモードで起動したい場合は、コマンドラインに textmode=1 を指定してください。
YaST のテキストモードによる起動は、 64 MB よりも少ないメモリしか搭載していないクライアントや、ディスプレイの接続がなく、 X11 を設定すべきではないクライアントを使用しているような場合にお勧めです。
クライアントの起動に際してはさまざまな方式を使用することができます。コンピュータによっては搭載されているネットワークインターフェイスカード (NIC) を利用して、 DHCP 経由もしくは TFTP 経由で起動イメージを取得できるものもあります。このほか、 USB メモリなどからカーネルと initrd イメージを読み込んだり、起動可能な DVD-ROM から起動を行ったりすることもできます。
YaST はその起動時、起動メディアもしくは initrd 内のルートディレクトリに、 autoinst.xml ファイルが存在していないかどうかを確認します。存在していた場合には、自動インストール処理に移行します。制御ファイルが異なるファイル名であったり、どこか別の場所に配置したりしているような場合は、カーネルのコマンドラインパラメータに AutoYaST=URL を指定してください。
それ以外にも、 autoinst.xml ファイルを保存した物理デバイスや論理デバイスに OEMDRV というラベルを設定する方式があります。この場合、カーネルのコマンドラインで autoinst.xml の場所を指定する必要はありません。なお、 autoinst.xml ファイルはデバイスのルートディレクトリに配置しなければなりません。
テストやシステムの救出を目的とする場合、もしくはお使いのネットワークインターフェイスカードに PROM や PXE が搭載されていないような場合でも、 AutoYaST を使用することができます。フラッシュメモリであれば制御ファイルを含めることもできます。
下記のコマンドを実行することで、インストールメディアのイメージをリムーバブルメディアに書き込むことができます。
>sudodd if=イメージ of=リムーバブルメディアのパス bs=4M && sync
イメージ には SLE-15-SP7-Online-ARCH-GM-media1.iso もしくは SLE-15-SP7-Full-ARCH-GM-media1.iso のイメージファイルのパスを、 リムーバブルメディアのパス にはリムーバブルメディアのパスをそれぞれ指定します。デバイス名がわからない場合は、下記のように入力して実行してください:
# grep -Ff <(hwinfo --disk --short) <(hwinfo --usb --short)
disk:
/dev/sdc General USB Flash Diskなお、デバイスのサイズがイメージのサイズに対して十分かどうかを確認しておいてください。デバイスのサイズを確認したい場合は、下記のように入力して実行します:
# fdisk -l /dev/sdc | grep -e "^/dev"
/dev/sdc1 * 2048 31490047 31488000 15G 83 Linux上記の例では、デバイスのサイズは 15 GB あることになります。この場合、 SLE-15-SP7-Full-ARCH-GM-media1.iso を書き込む際のコマンドは下記のようになります:
dd if=SLE-15-SP7-Full-ARCH-GM-media1.iso of=/dev/sdc bs=4M && sync
なお、 dd コマンドを実行する際には、デバイスがマウントされていてはなりません。また、デバイス内の全てのデータが消去されることにも注意してください。
SUSE Linux Enterprise のインストールメディア ( SLE-15-SP7-Online-ARCH-GM-media1.iso もしくは SLE-15-SP7-Full-ARCH-GM-media1.iso ) と他のメディアを併用することもできます。たとえば制御ファイルを USB メモリやネットワーク内の場所に配置しておき、 DVD-ROM から起動して場所を指定することもできます。また、インストールメディアそのものを修正して、制御ファイルを入れておくこともできます。
PXE 起動を行うには、ネットワーク内に DHCP サーバと TFTP サーバを用意する必要があります。これにより、物理メディアを使用せずに起動を行うことができます。
なお PXE 経由でインストールを行う場合、インストールを繰り返し続けてしまうという問題が発生することがあります。これはインストール後の再起動で、 通常は第 2 ステージのインストール処理が動作すべきはずのところ、 PXE 経由の起動が再度行われてしまい、第 1 ステージに戻ってきてしまうことによるものです。
このような問題を解決する方法はいくつかあります。 1 つは HTTP サーバ内に AutoYaST の制御ファイルを配置する方法で、通常のファイルではなく CGI スクリプトとして AutoYaST の制御ファイルを提供するように構成し、 2 度目の起動では TFTP サーバの設定を変更して、ハードディスクから起動するように設定します。
もう 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.1.115</tftp-server>
<pxelinux-dir>/pxelinux.cfg</pxelinux-dir>
<filename>__MAC__</filename>
</pxe>上記のように設定すると、初回の再起動が行われる直前に、インストール先のホストから TFTP サーバに対して新しい設定ファイルがアップロードされるようになります。ほとんどのインストール環境では TFTP デーモンが nobody で動作していますので、このユーザから pxelinux.cfg ディレクトリに書き込むことができるように設定します。また、アップロードするファイルのファイル名を指定することもできます。上記の例では __MAC__ と指定していますが、これは 01-08-00-27-79-49-ee のような実際の MAC アドレスに置き換えられます。なお、ファイル名の設定が無い場合は、ファイル名に IP アドレスが設定されます。
同じマシンに対して自動インストールを再度行わせたい場合は、 TFTP サーバ内で該当のファイルを削除してください。
コマンドライン変数 autoyast を設定することで、 linuxrc を自動モードにすることができます。その場合、 linuxrc プログラムは設定ファイル (制御ファイルとは別のものです) を検索します。そのときの場所は下記のとおりです:
システムを起動する際に使用していた初期 RAM ディスクのルートディレクトリ
起動メディアのルートディレクトリ
linuxrc の設定ファイルには、複数のキーワードが用意されています。 linuxrc の詳しい説明とキーワードの一覧については、 付録C 高度な linuxrc オプション をお読みください。主なものは下記のとおりです:
AutoYaST を利用した自動アップグレードの開始については、 4.10項 「アップグレード」 をお読みください。
自動インストールの際に使用する制御ファイルの場所を指定します。詳しくは AutoYaST の制御ファイルの場所 をお読みください。
ネットワークを設定し、起動するようになります。 AutoYaST に対して、ネットワーク上離れた場所から取得を行う必要がある場合に必要となります。詳しくは C.3項 「高度なネットワーク設定」 をお読みください。
読み込むべきカーネルモジュールを指定します。
インストールに使用するディレクトリを指定します (例: install=nfs://192.168.2.1/CDs/) 。
HTTPS を使用している場合、既定では SSL のチェックが有効化されます。必要であれば、 HTTPS の URL 内に ssl_verify=no を追加して、 SSL のチェックを無効化してください。たとえば下記のようになります:
install=https://192.168.2.1/CDs/?ssl_verify=no
なお、複数のクエリ文字列を指定している場合は、それらをアンパサンドで区切ってください:
install=https://192.168.2.1/CDs/?foo=bar&ssl_verify=no
詳しくは man 8 zypper で表示されるマニュアルページ内の、 "FTP/HTTP/HTTPS directory tree" セクションをお読みください。
インストールモードを指定します。たとえば nfs , http などを指定します (install が指定されていれば不要です) 。
AutoYaST プロファイル内で指定されていない場合、ここで root のパスワードを設定することができます。
ソースディレクトリとして使用するサーバ (NFS) を指定します。
NFS サーバ内のディレクトリを指定します
制御ファイル内に <confirm>no</confirm> が設定されていても、確認メッセージを表示するようにします。
これらの値やキーワードはシステムを起動する際に使用され、 YaST がメインの制御ファイルを得るまでの間使用されます。現時点ではソースメディアは自動検出されるようになっていますので、場合によっては linuxrc に特段の設定を行わなくても、自動インストールの処理を開始することができるようになっています。
従来の linuxrc の設定ファイル ( info ) には、インストールサーバやソースの場所など、クライアントに対して十分な情報を提供する機能が用意されてきました。通常はこのファイルを用意する必要はありませんが、 DHCP も BOOTP も使用していないような環境であったり、特殊なカーネルモジュールを読み込む必要があったりするような環境では、必要となる場合もあります。
linuxrc にキーワードを渡したい場合は、カーネルのコマンドラインを使用することができます。これはいくつかの方法で設定することができます。通常のメディアからの起動時に、その他のカーネルパラメータとともに linurc キーワードを指定することができるほか、ネットワーク経由で起動するディスクイメージを作成して、そこにカーネルパラメータを設定する方法もあります。また、 Etherboot や PXE との組み合わせで、 DHCP サーバ側でカーネルのパラメータを設定することもできます。
autoyast ではなく autoyast2 のオプションを使用すべき点についてautoyast2 オプションと autoyast オプションは似通った仕組みですが、 linuxrc は指定された値を処理するだけでなく、必要に応じてネットワークの設定も行おうとします。このオプションについては本文書内では説明していません。 AutoYaST での違いと linuxrc URI の書式について、詳しくは 付録C 高度な linuxrc オプション にある linuxrc の付録をお読みください。ここでは AutoYaST のルールやクラスには 対応していません 。
コマンドライン変数 autoyast には、下記の表に示すような書式を使用することができます。
使用したい制御ファイルの場所を指定するために autoyast で指定する URI の書式は、少し混乱を生むものになってしまっています。書式は一般に スキーマ://ホスト/ファイルへのパス の形式で記述しますが、スキーマの後ろに付与するスラッシュ記号の数は、使用するスキーマによって異なります。たとえば NFS サーバ内を指定する場合は、 autoyast=nfs://SERVER/PATH のようにスラッシュを 2 つ並べます。
ローカルのファイルシステム内に制御ファイルを配置する場合は、たとえば autoyast=usb:///profile.xml のような書式になります。これは autoyast=usb://localhost/profile.xml と同じ意味になります。このとき、 localhost を省略するためにスラッシュ記号を 3 回繰り返していることに注意してください。もしも autoyast=usb://profile.xml のように記述してしまうと、 profile.xml がホスト名として扱われてしまいます。
アップグレード: 自動オフラインアップグレードの場合は、 autoyast 変数を指定する必要はありません。詳しくは 手順4.1「オフラインアップグレードモードでの AutoYaST の起動」 をお読みください。
新規インストール: autoinst.xml ファイルが下記 3 箇所のうちのいずれかの場所に存在すると、 AutoYaST が開始されます:
インストールに使用する外付けストレージ (USB メモリなど) のルートディレクトリ
インストールメディアのルートディレクトリ
システムを起動する際に使用する初期 RAM ディスクのルートディレクトリ
autoyast=file:///パス指定したパス内の制御ファイルを読み込みます。この場合、ソースメディアのルートディレクトリからの相対パスを指定します。たとえば CD や USB メモリから起動している場合、 それが外付けのドライブであったとしても、 file:///autoinst.xml のように指定すると、任意のローカルファイルシステム内のルートディレクトリにあるファイルを読み込むようになります (これは file://localhost/autoinst.xml と同じ意味になります) 。
autoyast=device://デバイス/ファイル名指定したストレージデバイス内の制御ファイルを読み込みます。この場合、デバイスに対するフルパスではなく、デバイス名のみを指定してください (例: vda1/autoyast.xml) 。また、デバイス名を省略する (例: autoyast=device://localhost/autoinst.xml , もしくは autoyast=device:///autoinst.xml) と、 AutoYaST は全てのデバイスを検索するようになります。
autoyast=nfs://サーバ/パスNFS サーバ内の制御ファイルを読み込みます。
autoyast=http://[ユーザ名:パスワード@]サーバ/パスHTTP プロトコルを利用して、 Web サーバから制御ファイルを取得します。ユーザ名とパスワードの指定は任意です。
autoyast=https://[ユーザ名:パスワード@]サーバ/パスHTTPS プロトコルを利用して、 Web サーバから制御ファイルを取得します。ユーザ名とパスワードの指定は任意です。
autoyast=tftp://サーバ/パスTFTP 経由で制御ファイルを取得します。
autoyast=ftp://[ユーザ名:パスワード@]サーバ/パスFTP プロトコルを利用して制御ファイルを取得します。ユーザ名とパスワードの指定は任意です。
autoyast=usb://パスUSB デバイスから制御ファイルを取得します (AutoYaST は接続されている全ての USB デバイスを検索します) 。
autoyast=relurl://パスインストール元から制御ファイルを取得します。これは既定のインストール元のほか、 install=インストール元のパス で指定したものでもかまいません。
autoyast=repo:/パス指定したパスから制御ファイルを取得します。パスはインストール元からの相対パスでなければなりません。
autoyast=cifs://サーバ/パスCIFS サーバ内にある制御ファイルを読み込みます。
autoyast=label://ラベル/パス指定したラベルのデバイス内にある制御ファイルを読み込みます。
自動インストールでは、異なる種類のインフラストラクチャとソースメディアを使用するさまざまなシナリオが考えられます。最もシンプルな方法は openSUSE Leap のインストールメディア ( SLE-15-SP7-Online-ARCH-GM-media1.iso もしくは SLE-15-SP7-Full-ARCH-GM-media1.iso ) を使用する方法ですが、この場合は自動インストールを開始するのにコマンドライン変数を入力する必要があるほか、 YaST からアクセス可能な場所に制御ファイルを配置する必要もあります。
スクリプトという観点では、マシンに対してシリアルコンソールを使用することで、テキストモードによるインストールを行う方法もあります。この場合、必要なパラメータを expect スクリプトなどで問い合わせることができます。
それぞれの起動方法に対して利用可能な、制御ファイルの提供方法を示します:
インストールメディア ( SLE-15-SP7-Online-ARCH-GM-media1.iso もしくは SLE-15-SP7-Full-ARCH-GM-media1.iso が必要です) を使用する場合、制御ファイルは外付けストレージ (USB メモリなど) やネットワーク内に存在している必要があります:
外付けストレージ (USB メモリなど): autoyast=usb://パス オプションを指定して制御ファイルにアクセスさせてください。
ネットワーク: 下記のいずれかのコマンドで制御ファイルにアクセスすることができます: autoyast=nfs://.. , autoyast=ftp://.. , autoyast=http://.. , autoyast=https://.. , autoyast=tftp://.. , or autoyast=cifs://.. 。ネットワークへのアクセスを使用する場合は、 linuxrc の起動オプションで設定を行う必要があります。たとえば DHCP を使用する場合、 netsetup=dhcp autoyast=http://163.122.3.5/autoyast.xml のようになります。
この方法では、制御ファイルをインストールメディア内に直接含めることができます。制御ファイルはルートディレクトリ内に配置し、 autoinst.xml というファイル名にしておいてください。これにより、インストール時に自動検出され、使用されるようになります。もちろん autoyast=file:///パス のように指定すれば、他のパスにある制御ファイルを指定して使用することもできます。
自動インストールではこのインストール方法が最も多いでしょう。複数のマシンにインストールを行う場合、 SLP や NFS のサーバのほか、 BOOTP や DHCP などのネットワークサービスを併用することが多いためです。この場合、制御ファイルの配置にあたって最も簡単な方法は、インストールソースとして使用するディレクトリのルートに、制御ファイルを配置する方法です。ファイル名は autoinst.xml というファイル名にしてください。この場合、インストール時に自動検出され、自動インストールが行われるようになります。制御ファイルは下記のような場所に配置することもできます:
外付けストレージ (USB メモリなど): autoyast=usb://パス オプションを指定して制御ファイルにアクセスさせてください。
ネットワーク: 下記のいずれかのコマンドで制御ファイルにアクセスすることができます: autoyast=nfs://.. , autoyast=ftp://.. , autoyast=http://.. , autoyast=https://.. , autoyast=tftp://.. , autoyast=cifs://..
インストール時にネットワークが不要である場合や利用できない場合、たとえば DVD-ROM から自動インストールを行うような場合、ネットワークを無効化するには、 linuxrc オプションに netsetup=0 を指定することで、ネットワークの設定を無効化することができます。
全ての AutoYaST オプションでは、下記のような方式で制御ファイルの場所を指定することができます:
制御ファイルの正確な場所を指定する方法:
autoyast=http://192.168.1.1/control-files/client01.xml
複数の制御ファイルが配置されているディレクトリを指定する方法:
autoyast=http://192.168.1.1/control-files/
この場合、対応する制御ファイルは IP アドレスの 16 進数表記によるファイル名で取得することになります (後述) 。
ディレクトリであることを表すため、パスは / で終わる必要があります。
また、このディレクトリ内のファイルには、 .xml などの拡張子を付けてはなりません。つまり、ファイル名は IP アドレスや MAC アドレスそのものになります。
> ls -r control-files
C00002 0080C8F6484C defaultパスのプレフィクスのみを指定した場合、 YaST は下記の流れで制御ファイルへのアクセスを試みます:
まずは自分自身の IP アドレスを 16 進数に変換したファイル名の制御ファイルを検索します。たとえば 192.0.2.91 -> C000025B のようになります。
このファイルが見つからない場合、 YaST は 16 進数表記から 1 桁を削って再試行します。この処理は、ファイルが見つかるまで繰り返されます。それでも見つからない場合は、クライアント側の MAC アドレスからファイル名を生成してアクセスしようとします (MAC アドレスは 0080C8F6484C のような書式になります) 。それでも見つからない場合は、 default というファイル名 (全て小文字) でアクセスを試みます。
たとえば 192.0.2.91 であれば、 HTTP クライアントは下記の順序でアクセスしようとします:
C000025B C000025 C00002 C0000 C000 C00 C0 C 0080C8F6484C default
"\n \n"
クライアントの IP アドレスを 16 進数に変換するには、 syslinux パッケージに含まれる /usr/bin/gethostip ユーティリティをお使いください。
> /usr/bin/gethostip 10.10.0.1
10.10.0.1 10.10.0.1 0A0A0001ネットワーク接続がない場合、自動インストールを行うのに最も簡単な方法は、 openSUSE Leap の DVD-ROM と外付けストレージ (USB メモリなど) を使用する方法です。この場合、インストールサーバもネットワーク環境も用意する必要がありません。
制御ファイルを作成して autoinst.xml というファイル名で保存します。あとは USB メモリに autoinst.xml ファイルをコピーします。
linuxrc info ファイルの組み合わせ #Edit sourceinfo ファイルや起動オプションを利用して linuxrc に情報を渡す場合、 XML の制御ファイルから設定を行うことができます。下記に示す例のようにして、 info_file セクションを設定してください。このセクションには 1 行に 1 つずつ、コロン区切りでキーワードと値の対を指定します。
linuxrc オプション #....
<install>
....
<init>
<info_file>
install: nfs://192.168.1.1/CDs/full-x86_64
dud: https://example.com/driver_updates/filename.dud
upgrade: 1
textmode: 1
</info_file>
</init>
......
</install>
....ただし、 autoyast2 キーワードは同じファイルを参照するようにしなければならないことに注意してください。たとえば外付けのストレージ (USB メモリなど) であれば、 usb:/// を指定する必要があります。また、 info ファイルが初期 RAM ディスク内に配置されている場合は、 file:/// を指定する必要があります。
自動インストール時のシステム設定は、処理全体の中で最も重要な部分となります。これまでの章で説明してきたとおり、インストール先のシステムはほぼ全て自動設定することができます。また、あらかじめ定義されているディレクティブに加えて、さまざまな事後スクリプトを使用することで、さまざまなシステム設定を調整することができます。必要であればシステムの変数を変更したり、インストール先のシステムに設定ファイル全体をコピーしたりするようなことも実現できます。
インストール後の処理やシステムの設定処理は、インストール先のシステムへのパッケージインストールが完了すると即時に実行され、初回の再起動後にも続けて行われます。
システムの初回起動よりも前に、 AutoYaST はインストール時に収集した全てのデータと、ブートローダの設定を指定された場所に保存します。これらの通常の処理に加え、 AutoYaST では制御ファイル内に指定された chroot 環境スクリプトも実行されます。ただし、これらのスクリプトはシステムがまだマウントされていない状態で実行されます。
既定とは異なるカーネルをインストールしている場合は、ハードウエアレベルでの再起動が必要となります。ハードウエアレベルでの再起動は、インストールされているカーネルとは無関係に強制することもできます。ハードウエアレベルでの再起動を強制したい場合は、 general リソース内の reboot を設定してください (詳しくは 4.1項 「一般オプション」 をお読みください) 。
インストールの第 2 ステージでは、ほとんどのシステムのカスタマイズを完了させます。 AutoYaST リソースでは実現できないようなカスタマイズが必要となる場合は、インストール後スクリプトを設定して、その中でカスタマイズを実施してください。
制御ファイル内には独自のスクリプトを必要な数だけ定義することができます。また、この設定を行うにあたっては、制御ファイルの編集のほか、設定システムを使用して行うこともできます。