linuxrc
オプション #Edit sourcelinuxrc
はカーネルが読み込まれた直後、 AutoYaST やその他のステージが動作するよりも前に動作する小さなプログラムです。このプログラムはインストール向けにシステムの準備を行います。このプログラムはモジュールの読み込みのほか、インストール済みのシステムの起動やレスキュー (救出) システムの起動、そして YaST の操作ガイドなどの機能を提供します。
linuxrc
の設定が等価ではない件についてlinuxrc
の設定項目によっては、 autoyast.xml
ファイル内で記述する AutoYaST の設定項目と偶然に名前が一致しているものがあります。ですが、これは単なる偶然であって、 linuxrc
と AutoYaST の設定が同一というわけではありませんし、取り得る値も場合によっては異なります。たとえば AutoYaST には self_update
という設定がありますが、これを 1
に設定すると、もう 1 つの設定である self_update_url
が読み込まれ、解釈されます。 linuxrc
にも同じ self_update
という設定がありますが、こちらの場合は 0
もしくは URL を指定します。
このようなことから、 AutoYaST のパラメータを linuxrc
にそのまま渡してはなりません。このようにしてしまうと、ほとんどの場合において予期しない結果になってしまいます。
linuxrc
がマシンにインストールされていれば、 /usr/share/doc/packages/linuxrc/
ディレクトリ内に linuxrc
に関する情報が書かれたファイルがあります。それ以外にも、 https://ja.opensuse.org/SDB:Linuxrc でも情報が提供されています。
linuxrc
の実行についてlinuxrc
をインストール済みのシステムで動作させた場合は、インストール済みのシステムを破壊することがないよう、少し異なる動作になります。そのため、インストール済みのシステムでは全ての機能をテストすることができません。
なお、 linuxrc
のバイナリファイルをできる限り小さくまとめたい目的により、ライブラリとその他のファイルはバイナリファイル内に全て組み込まれています。このような構造により、初期 RAM ディスク (initrd
) 内で動作させるような場合でも、共有ライブラリを別途インストールする必要がなくなっています。
linuxrc
へパラメータを渡す方法 #Edit sourcelinuxrc
を手動モードで動作させた場合を除いて、 linuxrc
を動作させると info
ファイルを検索する処理を行います。 info
ファイルはまず外付けストレージ (USB メモリなど) 内のルートディレクトリ (/info
) を検索し、そこに存在しなかった場合は initrd
内のルートディレクトリを検索します。その後、カーネルのコマンドラインを処理してパラメータを取得します。なお、 linuxrc
が読み込むべき info
ファイルは、 info
というコマンドラインパラメータで変更することができます。また、 linuxrc
でカーネルのコマンドラインを読み込まないように設定したい場合 (たとえば linuxrc
側でも解釈されてしまうようなパラメータをカーネルに指定したい場合) は、 linuxrc=nocmdline
を設定してください。
linuxrc
は /linuxrc.config
と呼ばれるファイルを常に検索して処理します。このファイルには必要な既定値を設定しておいてください。また、一般的には info
ファイルを使用したほうがよいでしょう。なお、 /linuxrc.config
ファイルは info
ファイルよりも先に読み込まれるほか、手動モードであっても読み込まれます。
info
ファイルの書式 #Edit source#
で始まる行はコメント行です。また、項目は下記の書式で記述します:
キー: 値
なお、 値 は行の終わりまでを読み込む仕組みであることから、行末にスペースが入っていてもかまいません。また、 キー は大文字と小文字を区別しません。
linuxrc
の設定はカーネルのコマンドラインからも設定することができます。カーネルのコマンドラインで設定する場合は、 キー=値
の書式となります。ただし、カーネルのコマンドラインではスペースはパラメータの終わりとみなされます。
下記に主なキーと値の例を示しています。全ての linuxrc
パラメータの一覧を読みたい場合は、 https://ja.opensuse.org/SDB:Linuxrc をお読みください。
linuxrc
のキーワード #
キー: 値の例 |
説明 |
---|---|
|
0 を指定すると、スワップ領域に関する問い合わせを行いません。正の整数 |
|
自動インストールファイルの場所を指定し、自動インストール機能を有効化します。詳しくは AutoYaST の制御ファイルの場所 をお読みください。 |
|
BOOTP リクエストに対するタイムアウト (この例では 10 秒) を指定します。 |
|
ネットワークの有効化から BOOTP の開始を行うまでの待機時間 (この例では 5 秒) を指定します。 |
|
メニューの色スキームを指定します。 |
|
コマンド を実行します。 |
|
|
|
インストールシステムを RAM ディスク内に読み込むようにします。 |
|
ネットワークを設定して開始します。詳しくは C.3項 「高度なネットワーク設定」 をお読みください。 |
|
モジュール で指定したモジュールを読み込みます。 |
|
URL で指定したリポジトリからインストールを行います。 URL の書式については https://ja.opensuse.org/SDB:Linuxrc#パラメータ一覧 をお読みください。 |
|
読み込むべき仮想コンソールのキーボードマップを指定します。 |
|
インストール時にあらかじめ選択する言語を設定します。 |
|
syslog (UDP ポート番号 514) を介してリモートにログを書き込むようにします。 |
|
syslog (TCP ポート番号 514) を介してリモートにログを書き込むようにします。 |
|
空きメモリ量が指定した値 (単位: キロバイト, この例では 50000 KB) より多い場合、インストールシステムを RAM ディスクに読み込むようにします。 |
|
空きメモリ量が指定した値 (単位: キロバイト, この例では 10000 KB) より少ない場合、スワップ領域を追加すべきかどうかを尋ねるようにします。 |
|
空きメモリ量が指定した値 (単位: キロバイト, この例では 20000 KB) より少ない場合、 YaST をテキストモードで動作させるようにします。 |
|
空きメモリ量が指定した値 (単位: キロバイト, この例では 10000 KB) より少ない場合、 YaST を開始する前にスワップ領域を追加すべきかどうかを尋ねるようにします。 |
|
HTTP プロキシサーバを指定します。書式に関する詳細は https://ja.opensuse.org/SDB:Linuxrc をお読みください。 |
|
レスキュー (救出) システムを読み込みます。 URL を指定する場合は、レスキューイメージの場所を明示的に指定します。 |
|
レスキュー (救出) システムのイメージの場所を指定します。 |
|
インストールシステムのイメージの場所を指定します。 |
|
YaST をテキストモードで動作させるかどうかを指定します。 |
|
USB モジュールの読み込み後に待機する時間を秒単位で指定します。 |
|
制御ファイル内の |
linuxrc
に対して hostip
, nameserver
, gateway
のようなパラメータを指定した場合でも、ネットワークは必要な場合 (たとえば SSH や VNC 経由でインストールを行う指定をしている場合など) にしか開始されません。これは、 autoyast
は linuxrc
のパラメータではないためで、 linuxrc
から YaST にそのまま渡されるためです。そのため、 AutoYaST のプロファイルとしてリモートの場所を指定しても、ネットワークが自動的に有効化されることは ありません 。
そのため、ネットワーク機能を使用する場合は、明示的に有効化する必要があります。ネットワークを明示的に有効化するには ifcfg
パラメータを使用します。 ifcfg
は /etc/sysconfig/network/ifcfg-*
ファイルに含まれる内容を直接制御することができます。
DHCP を使用する場合は、下記のような書式を使用します:
ifcfg=インターフェイス名=DHCP*,オプション_1=値_1,オプション_2=値_2
ここで、 インターフェイス名 にはインターフェイスの名前を指定します。 eth0
のように明示的に指定することができるほか、 eth*
のように指定すると、全てのインターフェイスをまとめて指定することができます。また、 DHCP* には dhcp
(IPv4 および IPv6 での DHCP), dhcp4
(IPv4 のみでの DHCP), dhcp6
(IPv6 のみでの DHCP) のいずれかを指定します。
たとえば eth0
に対して DHCP を設定するには:
ifcfg=eth0=dhcp
全てのインターフェイスに対して DHCP を設定するには:
ifcfg=eth*=dhcp
固定アドレスを使用する場合は、下記のような書式を使用します:
ifcfg=インターフェイス名=IP_リスト,ゲートウエイリスト,ネームサーバリスト,ドメイン検索リスト,\ オプション=値_1,...
ここで、 インターフェイス名 にはインターフェイスの名前を指定します。 eth0
のように明示的に指定することができるほか、 eth*
のように指定すると、最初に見つかったデバイスを使用します。その他のパラメータは上記の順序で指定する必要があります。たとえば下記のようになります:
ifcfg=eth0=192.168.2.100/24,192.168.5.1,192.168.1.116,example.com
パラメータに複数のアドレスを指定したい場合は、アドレス間をスペースで区切り、かつ文字列全体を引用符で括ってください。たとえば下記の例では、 2 つのネームサーバと 2 つのドメイン検索リストを指定しています。
ifcfg="eth0=192.168.2.100/24,192.168.5.1,192.168.1.116 192.168.1.117,example.com example.net"
詳しくは https://ja.opensuse.org/SDB:Linuxrc をお読みください。