第9章 Linuxシステムのブートと設定

目次

9.1. Linuxのブートプロセス
9.2. initプロセス
9.3. /etc/sysconfigによるシステム設定

概要

Linuxシステムのブートには、さまざまなコンポーネントが関係しています。ハードウェアはBIOSにより初期化され、BIOSはブートローダでカーネルを起動します。それ以後は、オペレーティングシステムがinitとランレベルを含むブートプロセスを完全にコントロールします。ランレベルのコンセプトにより、日常使用のセットアップを保持できるほか、システム上でタスクを保守することもできます。

9.1. Linuxのブートプロセス

Linuxのブートプロセスは、いくつかの段階から成り、それぞれ別のコンポーネントが実行しています。次のリストに、主要なすべてのコンポーネントが関与するブートプロセスと機能を簡潔にまとめています。

  1. BIOS.  コンピュータの電源を入れた後、BIOSが画面とキーボードを初期化し、メインメモリをテストします。この段階まで、コンピュータは大容量ストレージメディアにアクセスしません。続いて、現在の日付、時刻、および最も重要な周辺機器に関する情報が、CMOS値からロードされます。最初のハードディスクとそのジオメトリが認識されると、システム制御がBIOSからブートローダに移ります。

  2. ブートローダ.  最初のハードディスクの先頭の 512バイト物理データセクタがメインメモリにロードされ、このセクタの先頭に常駐するブートローダが起動します。ブートローダによって実行されたコマンドがブートプロセスの残りの部分を確定します。したがって、最初のハードディスクの先頭 512バイトのことをマスタブートレコード(MBR)といいます。次に、ブートローダは、実際のオペレーティングシステム(この場合はLinuxカーネル)に制御を渡します。GRUB(Linuxブートローダ)の詳細については、 第10章 ブートローダGRUBを参照してください。

  3. カーネルとinitramfs システムに制御を渡すため、ブートローダは、カーネルとRAMベースの初期ファイルシステム(initramfs)をメモリにロードします。カーネルは、initramfsのコンテンツを直接使用できます。initramfsには、実際のルートファイルシステムのマウント処理を行うinitと呼ばれる小さな実行可能ファイルが含まれています。大容量ストレージにアクセスするために特別なハードウェアドライバが必要な場合、それらはinitramfs内になければなりません。initramfsの詳細については、 9.1.1項 「initramfsを参照してください。

  4. initramfs上のinit このプログラムは、適切なルートファイルシステムをマウントするために必要なすべてのアクションを実行します。たとえば、必要なファイルシステムにカーネル機能を提供したり、大容量ストレージコントローラ用のデバイスドライバにudevを提供します。ルートファイルシステムが見つかると、エラーをチェックしてからマウントします。これが正常に実行されれば、initramfsはクリアされ、ルートファイルシステムでinitプログラムが実行されます。initの詳細については、 9.1.2項 「initramfs上のinit」を参照してください。udevの詳細については、第13章 udevによる動的カーネルデバイス管理を参照してください。

  5. init initは、いくつかの異なるレベルでシステムの実際のブートを処理し、さまざまな機能を提供しますinitについては、9.2項 「initプロセス」で説明されています。

9.1.1. initramfs

initramfsは、カーネルがRAMディスクにロードできる、小さなcpioアーカイブです。また、実際のルートファイルシステムがマウントされる前にプログラムを実行できるようにする最低限のLinux環境を提供します。この最小Linux環境は、BIOSルーチンによってメモリにロードされ、十分なメモリを必要とする以外、特定のハードウェア要件はありません。initramfsは、必ず、initという名前の実行可能ファイルを提供する必要があります。このファイルは、ルートファイルシステム上で実際のinitプログラムを実行することによりブートプロセスを進行させます。

ルートファイルシステムをマウントして実際のオペレーティングシステムを起動する前に、カーネルには、ルートファイルシステムが配置されているデバイスにアクセスするための対応ドライバが必要です。こうしたドライバには、特定のハードディスク用の特殊なドライバや、ネットワークファイルシステムにアクセスするためのネットワークドライバが含まれる場合もあります。ルートファイルシステムに必要なモジュールは、initramfs上のinitによってロードされます。モジュールをロードしたら、udevによって必要なデバイスがinitramfsに提供されます。ブートプロセス後半で、ルートファイルシステムが変更された後、デバイスを再生成する必要があります。これには、udevtriggerコマンドでboot.udevを実行します。

インストール済みのシステムのハードウェア(たとえば、ハードディスク)を変更する必要が生じ、このハードウェアはブート時にカーネル内に存在する他のドライバを必要とする場合には、initramfsを更新する必要があります。これは、initramfsの前身であるinitの場合と同様に、mkinitrdを呼び出して行うことができます。引数を付けずに mkinitrd を呼び出すと、initramfsが作成されます。mkinitrd -Rを呼び出すと、initが作成されます。SUSE® Linux Enterprise Desktopでは、ロードするモジュールは/etc/sysconfig/kernel内の変数INITRD_MODULESで指定されます。インストール後、この変数は自動的に正しい値に設定されます。モジュールは、INITRD_MODULESに指定されている順序で正確にロードされます。このことは、デバイスファイルの/dev/sd?の設定の正確性に依存している場合にのみ重要になります。ただし、現在のシステムで/dev/disk/ディレクトリ下にあるデバイスファイルを使用することもできます。これらのファイルは、by-idby-path、およびby-uuidなどのサブディレクトリに分類されており、常に同じディスクを表します。これは、該当するマウントオプションの指定により、インストール時にも可能です。

[Important]initramfsまたは initの更新

ブートローダは、カーネルと同じようにinitramfsまたはinitをロードします。GRUBはブート時に正しいファイルのディレクトリを検索するので、initramfsまたはinitを更新した後にGRUBを再インストールする必要はありません。

9.1.2. initramfs上のinit

initramfs上のinitの主な目的は、実際のルートファイルシステムのマウントとアクセスの準備をすることです。システム設定に応じて、initは次のタスクを実行します。

カーネルモジュールのロード

ハードウェア設定によっては、使用するコンピュータのハードウェアコンポーネント(ハードディスクになる最も重要なコンポーネント)にアクセスするために特殊なドライバが必要になる場合があります。最終的なルートファイルシステムにアクセスするには、カーネルが適切なファイルシステムドライバをロードする必要があります。

ブロック特殊ファイルの提供

ロードされるモジュールごとに、カーネルはデバイスイベントを生成します。udevは、これらのイベントを処理し、RAMファイルシステム上で必要なブロック特殊ファイルを/dev内に生成します。これらの特殊ファイルがないと、ファイルシステムや他のデバイスにアクセスできません。

RAIDとLVMのセットアップの管理

RAIDまたはLVMの下でルートファイルシステムを保持するようにシステムを設定した場合、initはLVMまたはRAIDをセットアップして、後でルートファイルシステムにアクセスできるようにします。第12章 Advanced Disk Setup (↑導入ガイド)でRAIDとLVMに関する情報を参照してください。

ネットワーク設定の管理

ネットワークマウントしたルートファイルシステム(NFSを介してマウント)を使用するようにシステムを設定した場合、initは適切なネットワークドライバがロードされ、ドライバがルートファイルシステムにアクセスできるように設定されていることを確認する必要があります。

初期ブート時にインストールプロセスの一環としてinitが呼び出される場合、そのタスクは上記で説明したタスクと異なります。

インストールメディアの検出

インストールプロセスを開始すると、使用するコンピュータでは、YaSTインストーラでインストールカーネルと特殊なinitがインストールメディアからロードされます。RAMファイルシステムで実行されるYaSTインストーラには、インストールメディアにアクセスしてオペレーティングシステムをインストールするために、そのメディアの場所に関する情報が必要になります。

ハードウェア認識の開始および適切なカーネルモジュールのロード

で説明しているように、ブートプロセスは、ほとんどのハードウェア設定で使用できる最小限のドライバセットで開始されます。initは、ハードウェア設定に適したドライバセットを確定する、初期ハードウェアスキャンプロセスを開始します。9.1.1項 「initramfsブートプロセスに必要なモジュール名は、/etc/sysconfig/kernelディレクトリ中のINITRD_MODULESに書き込まれます。これらの名前は、システムをブートするために必要なカスタムinitramfsを生成するために使用されます。ブートではなくcoldplugで必要なモジュールは、/etc/sysconfig/hardware/hwconfig-*ディレクトリに書き込まれます。ブートプロセス時には、このディレクトリ中の設定ファイルに記述されているすべてのデバイスが初期化されます。

インストールシステムまたはレスキューシステムのロード

ハードウェアが適切に認識されると、適切なドライバがただちにロードされ、udevは特殊なデバイスファイルを作成し、initは実際のYaSTインストーラでインストールシステムを起動するか、またはレスキューシステムを起動します。

YaSTの開始

最後に、initはYaSTを起動し、これによってパッケージのインストールとシステム設定が開始されます。

9.2. initプロセス

initプログラムは、プロセスIDが1のプロセスです。このプロセスでは、要求された方法でシステムの初期化を行います。initは直接カーネルから起動され、プロセスを強制終了するsignal 9で終了することはできません。他のすべてのプログラムは、initまたはその子プロセスの1つによって直接起動されます。

initは、/etc/inittabファイルで一元的に設定されます。ランレベルはこのファイルで定義されます(9.2.1項 「ランレベル」を参照)。このファイルはまた、各ランレベルで利用可能ななサービスとデーモンを指定しています。etc/inittabのエントリに応じて、initはいくつかのスクリプトを実行します。デフォルトでは、ブート後に最初に開始するスクリプトは、/etc/init.d/bootです。システムの初期設定が完了すると、/etc/init.d/rcスクリプトで、ランレベルがデフォルトのランレベルに変更されます。わかりやすくするために、これらのinitスクリプトと呼ばれるスクリプトはすべて、ディレクトリ/etc/init.dにあります(9.2.2項 「initスクリプト」を参照)。

システムの起動からシャットダウンまでのプロセス全体がinitによって保持されます。この見地から、カーネルは、他のプログラムからの要求に従って、他のすべてのプロセスを保持し、CPU時間とハードウェアアクセスを調整するバックグラウンドプロセスと考えることができます。

9.2.1. ランレベル

Linuxでは、ランレベルはシステムの起動方法および稼動中のシステムで使用可能なサービスを定義します。ブート後、システムは/etc/inittabinitdefault行での定義に従って起動します。通常のランレベルは3または5です。参照先表9.1「ランレベルの種類」.別の方法として、ランレベルをブート時に(たとえばブートプロンプトにランレベル番号を追加する)指定することもできます。パラメータは、カーネル自体が直接評価するのもの以外はすべて、initに渡されます。ランレベル3にブートするには、ブートプロンプトに単一の番号3を追加します。

表9.1 ランレベルの種類

ランレベル

説明

0

システム停止

Sまたは1

シングルユーザモード

2

リモートネットワーク(NFSなど)なしのローカルマルチユーザモード

3

ネットワークを使用するフルマルチユーザモード

4

[ユーザ定義]。管理者が設定しない限り使用されないランレベル。

5

ネットワークとXディスプレイマネージャのKDM、GDM、またはXDMを使用するフルマルチユーザモード

6

システム再起動


[Important]パーティションがNFSマウントされている場合にはランレベル2は避ける

システムでNFSを介して/usrなどのパーティションをマウントする場合は、ランレベル 2を使用しないでください。NFSサービスは、ランレベル2(リモートネットワークのないローカルマルチユーザモード)では使用できないため、プログラムファイルまたはライブラリがない場合、システムは予想しない動作をする可能性があります。

システムの稼動中にランレベルを変更するには、telinitの後に、ランレベルに対応する番号を引数として入力します。これができるのは、システム管理者だけです。次のリストは、ランレベルに関連した最も重要なコマンドの概要です。

telinit 1またはshutdown now

システムはシングルユーザモードに入ります。このモードは、システムメンテナンスや管理タスクで使用します。

telinit 3

(ネットワークを含む)すべての重要なプログラムとサービスが起動します。グラフィック環境はありませんが、一般ユーザは、システムにログインして作業することができます。

telinit 5

グラフィック環境は有効になります。通常、XDM、GDMまたはKDMなどのディスプレイマネージャが起動します。自動ログインが有効な場合、ローカルユーザは事前に選択されているウィンドウマネージャ(GNOME、KDEまたはその他のウィンドウマネージャ)にログインします。

telinit 0またはshutdown -h now

システムは停止します。

telinit 6またはshutdown -r now

システムは停止した後、再起動します。

ランレベル5は、すべてのSUSE Linux Enterprise Desktop標準インストールにおけるデフォルトのランレベルです。ユーザは、グラフィカルインタフェースでログインするように求められます。デフォルトユーザの場合は自動的にログインされます。

[Warning]/etc/inittabのエラーのため、システムブートが失敗することがある

/etc/inittabが破損した場合、システムが正しく起動しないことがあります。そのため、/etc/inittabを編集する場合は細心の注意を払ってください。また、コンピュータを再起動する前には、常にtelinit qコマンドを使用して、init/etc/inittabを再読み込みさせてください。

ランレベルを変更するときには、一般に2つの操作が行われます。1つは、現在のランレベルの停止スクリプトが起動し、現在のランレベルに必要なプログラムを終了します。次に、新しいランレベルの起動スクリプトが起動します。ここで、ほとんどの場合、プログラムがいくつか起動します。たとえば、ランレベルを3から5に変更する場合、次の操作が行われます。

  1. 管理者(root)がtelinit 5を入力して、initにランレベルを変更するように要求します。

  2. initは現在のランレベル(runlevel)を調べ、新しいランレベルをパラメータとして/etc/init.d/rcを起動する必要があるかどうか判断します。

  3. ここでrcは、現在のランレベルの停止スクリプトであって、新しいランレベルの起動スクリプトがないものを呼び出します。この例では、元のランレベルが3なので、/etc/init.d/rc 3.dの中のKで始まるすべてのスクリプトが対象となります。Kの次の番号は、stopパラメータを使ってスクリプトを実行する順番を示します(検討する必要がある依存関係が存在するため)。

  4. 最後に、新しいランレベルの起動スクリプトを起動します。この例では/etc/init.d/rc5.dの中のSで始まるスクリプトがそれにあたります。この場合も、Sの次の番号が、スクリプトの実行順序を表します。

現在のランレベルと同じランレベルに変更する場合、init/etc/inittabで変更部分だけをチェックし、適切な手順を開始します。たとえば、別のインタフェースでgettyを起動します。telinit qコマンドを使用しても同じ操作を実行できます。

9.2.2. initスクリプト

/etc/init.d内に、2種類のスクリプトがあります。

initによって直接実行されるスクリプト

これは、ブートプロセスの実行中、または即座のシステムシャットダウンを行ったとき(電源障害またはユーザが<Ctrl> + <Alt> + <Del>キーを押した場合)にのみ適用されます。こうしたスクリプトの実行は、/etc/inittabで定義されます。

initによって間接的に実行されるスクリプト

これらは、ランレベルの変更時に実行され、関連スクリプトの正しい順序を保証するマスタスクリプト/etc/init.d/rcを常に呼び出します。

すべてのスクリプトは、/etc/init.dにあります。ブート時に実行されるスクリプトは、/etc/init.d/boot.dからのシンボリックリンク経由で呼び出されます。ランレベルを変更するスクリプトもサブディレクトリの1つからのシンボリックリンク(/etc/init.d/rc0.dから/etc/init.d/rc6.dへ)経由で呼び出されます。これは単にわかりやすくして、複数のランレベルで使用されている場合にスクリプトが重複するのを防ぐためです。すべてのスクリプトは、起動スクリプトとしても停止スクリプトとしても実行できるので、これらのスクリプトはパラメータのstartstopを認識する必要があります。また、これらのスクリプトはrestartreloadforce-reload、およびstatusのオプションも認識します。これらのオプションについては、表9.2「initスクリプトのオプション」で説明します。initによって直接実行されるスクリプトには、これらのリンクはありません。こうしたスクリプトは、必要なときにランレベルとは無関係に実行されます。

表9.2 initスクリプトのオプション

オプション

説明

start

サービスを起動します。

stop

サービスを停止します。

restart

サービスが実行中の場合は、停止して再起動します。実行中でない場合は、起動します。

reload

サービスの停止や再起動をせずに、設定を再ロードします。

force-reload

サービスが設定の再ロードをサポートする場合は、それを実行します。サポートしない場合は、restartが指定された場合と同じ操作を行います。

status

サービスの現在のステータスを表示します。


ランレベル固有のサブディレクトリにあるリンクによって、スクリプトを複数のランレベルに関連付けることができます。パッケージのインストールまたはアンインストール時に、プログラムinsservを使用して(またはこのプログラムを呼び出す/usr/lib/lsb/install_initdスクリプトを使用して)、このようなリンクを追加または削除することができます。詳細については、「 man 8 insserv」を参照してください。

これらの設定は、YaSTモジュールにより変更されることもあります。コマンドラインからステータスを確認するには、chkconfigツールを使用します。このツールについては、man 8 chkconfigのマニュアルページで説明されています。

次に、最初または最後に起動するブートスクリプトおよび停止スクリプトの概略を示すとともに、保守スクリプトについて説明します。

boot

initを直接使用してシステムの起動時に実行されます。選択したランレベルから独立で、一度だけ実行されます。これによって /proc ファイルシステムと/dev/ptsファイルシステムがマウントされ、blogd(ブートログ出力デーモン)が有効化されます。システムがアップデートまたはインストール後初めてブートされる場合、初期システム設定が起動します。

blogdデーモンは、bootおよびrcによって最初に起動されるサービスです。このサービスは、これらのスクリプトにより開始されたアクション(たとえば特殊なブロックファイルを利用可能にするなど、多数のサブスクリプトの実行)が完了すると停止します。blogdは、/varが読み書き可能でマウントされている場合にのみ、画面出力をログファイル/var/log/boot.msgに出力します。そうでない場合は、/varが利用できるようになるまで、blogdがすべての画面データをバッファします。 blogdの詳細情報を取得するには、man 8 blogdを使用します。

bootスクリプトは、/etc/init.d/boot.dの中のSで始まる名前のスクリプトもすべて起動します。そこで、ファイルシステムがチェックされ、必要に応じてループデバイスが設定されます。加えて、システム時間が設定されます。ファイルシステムの自動チェックや修復中にエラーが発生した場合、システム管理者はルートパスワードを入力して介入することができます。最後に実行されるスクリプトは、boot.localです。

boot.local

ブート時、ランレベルへの移行前に実行する追加コマンドを入力します。これは、DOSシステムのAUTOEXEC.BATに相当します。

halt

このスクリプトは、ランレベル0または6への移行時にのみ実行されます。initまたはinitのいずれかとして実行されます。システムがシャットダウンするかリブートするかは、haltの呼び出され方に依存します。シャットダウン時に特別なコマンドが必要な場合は、それらのコマンドをinitスクリプトに追加してください。

rc

このスクリプトは、現在のランレベルの適切な停止スクリプトと、新しく選択したランレベルの起動スクリプトを呼び出します。/etc/init.d/bootスクリプトと同様、このスクリプトは、目的のランレベルをパラメータとして使用して、/etc/inittabから呼び出します。

独自のスクリプトを作成して、先に説明したスキーマに容易に組み込むことができます。カスタムスクリプトの形式設定、名前付け、および構成方法については、LSBの仕様と、initinit.dchkconfig、およびinsservのマニュアルページを参照してください。加えて、startprocおよびkillprocのマニュアルページも参照してください。

[Warning]initスクリプトのエラーはシステムの停止につながる場合がある

initスクリプトに問題があると、コンピュータがハングアップする場合があります。このようなスクリプトは最大限の注意を払って編集し、可能であれば、マルチユーザ環境で徹底的にテストします。initスクリプトの有益な情報については、9.2.1項 「ランレベル」を参照してください。

所定のプログラムまたはサービス用のカスタムinitスクリプトを作成する場合は、テンプレートとしてファイル/etc/init.d/skeletonを使用します。このファイルのコピーを別名で保存し、必要に応じて、関連のプログラムやファイル名、パス、その他の詳細を編集します。場合によっては、initプロシージャで正しいアクションが開始されるように、独自の改良をスクリプトに加える必要があります。

最初に記載されているINIT INFOブロックはスクリプトの必須部分で、次のように編集する必要があります。詳細については、例9.1「最低限のINIT INFOブロック」を参照してください。

例9.1 最低限のINIT INFOブロック

### BEGIN INIT INFO
# Provides:          FOO
# Required-Start:    $syslog $remote_fs
# Required-Stop:     $syslog $remote_fs
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Description:       Start FOO to allow XY and provide YZ
### END INIT INFO

INFOブロックの最初の行では、Provides:の後に、このinitスクリプトで制御するプログラムまたはサービスの名前を指定します。Required-Start:行とRequired-Stop:行では、サービス自体が停止しても実行中の状態を維持する必要のあるすべてのサービスを指定します。この情報は後で、ランレベルディレクトリに表示するスクリプト名に対し、番号を生成するために使用します。Default-Start:およびDefault-Stop:の後に、サービスが自動的に起動または停止する際のランレベルを指定します。最後に、Description:の下に、対象のサービスについての簡単な説明を記載します。

ランレベルディレクトリ(/etc/init.d/rc?.d/)から/etc/init.d/内の対応するスクリプトへのリンクを作成するには、コマンドinsserv new-script-nameを入力します。insservプログラムは、INIT INFOヘッダを評価して、ランレベルディレクトリ(/etc/init.d/rc?.d/)内の起動スクリプトと停止スクリプトに必要なリンクを作成します。このプログラムはまた、必要な番号をこれらのリンクの名前に取り込むことによって、ランレベルごとに正しい起動、停止の順序を管理します。グラフィックツールを使用してリンクを作成する場合は、9.2.3項 「YaSTでのシステムサービス(ランレベル)の設定」の説明に従って、YaSTのランレベルエディタを使用します。

/etc/init.d/にすでに存在するスクリプトを既存のランレベルスキーマに統合する場合は、はじめにinsservを使用するか、YaSTのランレベルエディタで対応するサービスを有効にすることにより、ランレベルディレクトリにリンクを作成します。変更内容は、次回のブート時に適用され、新しいサービスが自動的に起動します。

作成したリンクは手動で設定しないでください。INFOブロック内に誤りがある場合は、後で他のサービスに対してinsservを実行すると問題が生じます。手動で追加されたサービスは、このスクリプトに対するinsservの次回実行時に削除されます。

9.2.3. YaSTでのシステムサービス(ランレベル)の設定

[YaST]+[システム]+[システムサービス(ランレベル)]の順に選択して、このYaST moduleを起動すると、利用可能なすべてのサービスの概要と、各サービスの現在のステータス(有効か無効か)が表示されます。モジュールを[単純モード][エキスパートモード]のどちらで使用するかを決定します。ほとんどの場合、デフォルトの[単純モード]で十分です。左の列にはサービスの名前、中央の列にはその現在のステータス、右の列には簡単な説明が表示されます。ウィンドウの下部には、選択したサービスについての詳細な説明が表示されます。サービスを有効にするには、表でそれを選択し、[有効にする]を選択します。同じ手順で、サービスを無効にできます。

サービスの起動または停止時のランレベルを詳細に制御する場合、またはデフォルトのランレベルを変更する場合は、最初に[エキスパートモード]を選択します。上部には、現在のデフォルトのランレベル、つまりinitdefault (システムのブート時にデフォルトで入るランレベル)が表示されます。通常、SUSE Linux Enterprise Desktopシステムのデフォルトのランレベルは、5(ネットワークありフルマルチユーザモードおよびX)です。適切な代替の設定は、ランレベル3 (ネットワークありフルマルチユーザモード)です。

YaSTのダイアログボックスでは、ランレベルのいずれか1つを新しいデフォルトとして選択できます(表9.1「ランレベルの種類」を参照)。また、このウィンドウのテーブルを使用して、個々のサービスやデーモンを有効、無効にできます。テーブルには、利用可能なサービスとデーモンが一覧表示され、現在ご使用のシステム上で有効かどうか、有効な場合はそのランレベルが表示されます。マウスで行を選択し、ランレベルを表すチェックボックス([B][0][1][2][3][5][6][S])をクリックして、選択しているサービスまたはデーモンが実行されるランレベルを定義します。ランレベル4は、カスタムランレベルを作成できるように未定義になっています。最後に現在選択しているサービスまたはデーモンの簡単な説明が、テーブルの概要の下に表示されます。

[Warning]ランレベルの設定を誤るとシステムに害が及ぶことがある

ランレベルの設定が誤っていると、システムを使用できなくなることがあります。変更を実際に適用する前に、どういう結果が出るかをよく確認してください。

図9.1 システムサービス(ランレベル)

システムサービス(ランレベル)

[スタート]、[中止]、または[更新]をクリックして、サービスを有効化するかどうかを決定します。現在の状態が自動的に確認されなかった場合は、[状態を更新]を使用して確認することができます。[設定]または[リセット]をクリックすると、変更をシステムに適用するか、ランレベルエディタの起動前に存在していた設定を復元するかを選択できます。[OK]を選択すると、設定の変更がディスクに保存されます。

9.3. /etc/sysconfigによるシステム設定

SUSE Linux Enterprise Desktopの主な設定は、/etc/sysconfigに格納されている設定ファイルで指定できます。/etc/sysconfigディレクトリの個々のファイルは、それらが関係するスクリプトによってのみ読み込まれます。これにより、たとえば、ネットワークはネットワーク関連のスクリプトでのみ解析されるようになります。

システム設定を編集するには、2通りの方法があります。YaSTのsysconfigエディターを使う方法と、設定ファイルを手動で編集する方法です。

9.3.1. YaSTのsysconfigエディターを使ってシステム設定を変更する

YaSTのsysconfigエディタは、使いやすい、システム設定のフロントエンドです。変更する必要のある設定用変数の実際の場所がわからなくても、このモジュールに内蔵された検索機能を使うだけで、必要に応じて設定用変数の値を変更できます。また、これらの変更の適用、sysconfigで設定されている値に基づく設定の更新、サービスの再起動は、YaSTが行います。

[Warning]/etc/sysconfig/*ファイルの変更はインストールに害を及ぼすことがある

知識や経験が豊富でない限り、/etc/sysconfigファイルは変更しないでください。システムに相当なダメージを与えることがあります。/etc/sysconfigのファイルには、各変数が持つ実際の効果を説明する簡単なコメントが付いています。

図9.2 sysconfigエディタを使用したシステム設定

sysconfigエディタを使用したシステム設定

YaSTのsysconfigダイアログは、3つの部分に分かれています。ダイアログの左側には、すべての設定変数がツリー表示されます。変数を選択した段階で、右側に現在選択されている変数と、この変数の現在の設定が表示されます。その下の3番目のウィンドウには、変数の目的、有効な値、デフォルト値、およびこの変数が設定されている実際の設定ファイルについての簡単な説明が表示されます。このダイアログボックスには、変数の変更後に実行された設定スクリプトや、変更の結果起動された新しいサービスについての情報も表示されます。YaSTにより変更の確認が求められ、[完了]を選択してダイアログを終了した後にどのスクリプトが実行されるかが通知されます。現在は実行しないサービスやスクリプトを選択すると、それらが後で実行されます。YaSTはすべての変更を自動的に適用し、変更と関係のあるすべてのサービスをリスタートします。

9.3.2. システム設定を手動で変更する

システム設定を手動で変更するには、以下の手順に従います。

  1. rootになります。

  2. telinit 1コマンドで、システムをシングルユーザモード(ランレベル 1)にします。

  3. 必要に応じて、設定ファイルを、自分が使っているエディタで変更します。

    /etc/sysconfigの設定ファイルの変更にYaSTを使用しない場合、空の変数値は2つの引用符(KEYTABLE="")によって表し、空白を含む値ヘ引用符で囲むことに注意してください。語の値は、引用符で囲む必要はありません。

  4. SuSEconfigを実行して、変更が有効になっていることを確認します。

  5. telinit default_runlevelなどのコマンドで、システムを以前のランレベルに戻します。default_runlevelの部分は、システムのデフォルトのランレベルで置き換えてください。ネットワークとXのあるフルマルチユーザモードに戻るには5を、ネットワークのあるフルマルチユーザで作業するには3を選択します。

この手順は主に、ネットワーク設定など、システム全体の設定を変更する場合に必要です。小さな変更であれば、シングルユーザモードに移行する必要はありませんが、関与するすべてのプログラムが正しく再起動することを絶対的に保証する必要がある場合は、移行しても差し支えありません。

[Tip]自動システム設定機能の設定

SuSEconfigの自動システム設定機能を無効にするには、/etc/sysconfig/suseconfigENABLE_SUSECONFIGnoに設定します。SUSEのインストールサポートを使用する場合は、SuSEconfigを無効にしないでください。無効にすると、自動設定も部分的に無効になる可能性があります。