概要
Linux システムの起動には、様々なコンポーネントが関わっています。ハードウエア それ自身は BIOS で初期化され、その後にブートローダからカーネルを読み込み はじめます。この処理の後 init で起動処理が始まり、オペレーティングシステムから ランレベルが操作されるようになります。ランレベルの考え方により、日々の使用形態 に沿った設定とともに、システムメンテナンス作業を行なうこともできるようになって います。
Linux の起動処理は、それぞれ異なるコンポーネントで提供される複数のステージから 構成されています。下記の一覧では起動処理の概要と、利用されるコンポーネントのうち よく知られたものについて述べています。
BIOS. コンピュータの電源を入れると、 BIOS は画面とキーボードを初期化し、メインメモリの テストを行ないます。この時点では、まだマスストレージメディア (ハードディスクなど) にはアクセスを行ないません。また、現在の日時や重要な周辺機器に関する情報を、 CMOS から読み込みます。 1 台目のハードディスクとそのジオメトリ情報を読み込むと、 システム処理は BIOS からブートローダに渡されます。
ブートローダ. 1 台目のハードディスクにある冒頭の 512 バイトがメインメモリに読み込まれ、 そのセクタの冒頭にある ブートローダ の処理が始まります。 ブートローダで実行するコマンドは、残りの起動処理を行なうための作業になります。 そのため、 1 台目のハードディスクにある冒頭の 512 バイトは、 マスターブートレコード (MBR) と呼ばれます。 ブートローダはその後、実際のオペレーティングシステム (この場合は Linux カーネル) に処理を移します。 Linux のブートローダである GRUB について、 詳しくは 第17章 ブートローダ GRUB をお読みください。
カーネルと initramfs.
システムの制御権を渡す目的で、ブートローダはカーネルと RAM ベースの
初期ファイルシステム (initramfs) をメモリ内に読み込みます。
initramfs の内容はカーネルから直接利用できる形式になっています。
また、 initramfs には init と呼ばれる小さな実行ファイルが
含まれ、実際のルートファイルシステムをマウントするまでの処理を行ないます。
マスストレージ (ハードディスクなど) にアクセスする際に特別なハードウエアドライバが
必要な場合、それらのドライバは initramfs 内に存在していなければ
なりません。 initramfs について、詳しくは
16.1.1項 「initramfs」 をお読みください。
initramfs 内の init.
このプログラムは正しいルートファイルシステムをマウントするために必要な処理を
全て行なうもので、必要なファイルシステム向けのカーネル機能を提供したり、
udev を利用してマスストレージ (ハードディスク) コントローラを読み込む機能を
提供したりしています。ルートファイルシステムが検出されると、エラーがないか
どうかをチェックして、マウントを行ないます。マウントが成功すると
initramfs は解放され、ルートファイルシステム内の
init を実行します。 init について、さらに詳しい情報は
16.1.2項 「initramfs 上の init」 をお読みください。また、 udev について
詳しくは 第19章 udev による動的なカーネルデバイス管理 をお読みください。
init. init は、それぞれ異なる機能を持つ複数のレベルに対して、それぞれ異なる 起動処理を行ないます。 init については 16.2項 「init プロセス」 をお読みください。
initramfs¶
initramfs は小さな cpio 形式のアーカイブで、カーネルは
このアーカイブを RAM 内に読み込むことができます。このアーカイブは、実際のルート
ファイルシステムがマウントされるまでに必要な、最小限の Linux 環境です。この最小限の
Linux 環境は BIOS ルーチンからメモリ内に読み込まれるもので、十分なメモリサイズが
存在すること以外に、ハードウエアに対する要件がありません。また、
initramfs には実際のルートファイルシステム内の init プログラムを
呼び出すことのできる、 init と呼ばれる実行形式が存在しなればなりません。
ルートファイルシステムがマウントできるようになり、オペレーティングシステムが
起動できる状態になるよりも前の段階で、カーネルはルートファイルシステムが
配置されているデバイスにアクセスするため、必要なドライバを読み込む必要があります。
これらのドライバは、ハードディスクドライブの種類に対応した特別なドライバか、
もしくはネットワークファイルシステムにアクセスするためのネットワークドライバ
の形式になっています。つまり、ルートファイルシステムにアクセスするのに必要な
モジュールは initramfs 内の init によって読み込まれることに
なります。モジュールを読み込んだ後は、 udev が initramfs と
それに必要なデバイスを提供します。ルートファイルシステムへの変更が完了した後は、
デバイスを再生成する必要があります。この処理は boot.udev が
実施するもので、 udevtrigger のコマンドを利用しています。
インストール済みのシステムに対してハードウエア (たとえばハードディスク) の
変更を行なう必要があり、カーネルが起動する際に今とは異なるドライバを読み込む
必要がある場合は、 initramfs を更新しなければなりません。
この作業は initrd を最初に作成したときと同じ方法、つまり mkinitrd
を呼び出すことで行なうことができます。なにもパラメータをつけずに mkinitrd
を実行すると、 initramfs を生成します。
mkinitrd -R と入力すると
initrd を生成します。 openSUSE® では、
読み出すべきモジュールの一覧を /etc/sysconfig/kernel
ファイル内の INITRD_MODULES で指定します。
インストールが完了すると、上記の変数は自動的に正しい値に設定されます。
各モジュールは INITRD_MODULES 内に記述した順に
読み込まれます。この順序指定は /dev/sd? のような
デバイス名の命名順序に影響するため、デバイス名に依存して何らかの作業を
行なう場合には重要な項目です。しかしながら現在のシステムでは、
by-id や by-path などの複数の
サブディレクトリから同じディスクを指し示すことのできる、
/dev/disk/ 形式のデバイスファイルを利用することが
できます。これらはインストール時に、関連するオプションを指定することで
変更することができます。
![]() | initramfs や initrd の更新 |
|---|---|
ブートローダは | |
initramfs 上の init¶
initramfs 内にある init は、実際のルートファイルシステムを
マウントするための準備作業と、実際のルートファイルシステムへのアクセス作業を主な目的と
しています。お使いのシステム設定によって、 init はそれぞれ下記のような作業を行ないます。
お使いのハードウエア設定によって、お使いのコンピュータのハードウエアに アクセスするためのドライバが必要となります (最も重要なコンポーネントは ハードディスクです) 。また、最終的なルートファイルシステムにアクセスする ため、カーネルでは適切なファイルシステムドライバも必要です。
それぞれ読み込んだカーネルモジュールでは、デバイスイベントを生成します。
udev はこれらのイベントを処理し、必要なブロックスペシャルデバイスを
/dev 内にある RAM ファイルシステム内に作成します。
これらのスペシャルファイルが存在しないと、ファイルシステムやその他の
デバイスにアクセスすることができません。
お使いのシステムにおけるルートファイルシステムが RAID や LVM の管理下に ある場合、 LVM や RAID を設定して後にアクセスすることになるルートファイル システムを読み込むことができるようにします。 RAID や LVM について、詳しくは 第2章 高度なディスク設定 をお読みください。
お使いのシステムでネットワークマウント型のルートファイルシステム (NFS を 介したマウント) を利用している場合、 init は適切なネットワークドライバを 読み込み、ルートファイルシステムへのアクセス手段を準備しなければなりません。
インストール作業の初期段階で init が呼び出された場合は、上述の手順とは異なる 下記の手順が行なわれます:
インストール処理を開始する際、お使いのマシンはインストールメディア上にある
インストール用のカーネルと YaST インストーラの存在する
initrd を読み込みます。 RAM ファイルシステム内で動作する
YaST インストーラは、インストールメディアにアクセスしてインストール作業を
行なうため、その場所に関する情報を事前に知っておく必要があります。
16.1.1項 「initramfs」 に示しているとおり、起動処理は多くの
ハードウエア環境で動作するドライバを含んだ最低限のドライバセットで行なわれます。
init はお使いのハードウエア環境での適切なドライバを判断するため、初期の
ハードウエア検出処理を行ないます。起動処理に必要であると判断したモジュール
名は、 /etc/sysconfig/kernel 内の
INITRD_MODULES に書き込まれます。モジュール名の
一覧は、システムを起動する際に使用するカスタムな initramfs
の作成に利用します。起動時には必要がないものの、あとから読み出す必要があるモジュール
については、 /etc/sysconfig/hardware/hwconfig-*
内に書き込まれます。このディレクトリ内の設定ファイル内に記述された
全てのデバイスは、起動処理で初期化されます。
ハードウエアを正しく検出して適切なドライバが読み込まれると、 udev は スペシャルデバイスファイルを作成し、 init は実際の YaST インストーラ であるインストールシステムを起動するか、レスキューシステムを起動します。
最後に init は YaST を起動し、パッケージのインストールやシステムの設定を 行ないます。
init プログラムはプロセス ID が 1 であるプロセスで、必要な方法でシステムを初期化 するために利用されます。 init はカーネルから直接起動され、通常はプロセスを kill するために用いられる 9 番目のシグナルを無視して動作します。他のプログラムは全て init から起動されるか、 init から起動されたプログラムの子プロセスとして起動します。
init は ランレベル (16.2.1項 「ランレベル」
を参照) を定義する /etc/inittab ファイルで設定します。
このファイルでは、どのサービスやデーモンがどのランレベルで利用されるのかが
記されています。 /etc/inittab 内に書かれている項目に
従っていくつかのスクリプトが init から起動されます。既定では起動後に開始される
最初のスクリプトは /etc/init.d/boot に設定されています。
システムの初期化フェーズが完了すると、システムは /etc/init.d/rc
スクリプトを利用して既定のランレベルに移行します。 /etc/init.d
ディレクトリ (16.2.2項 「初期化スクリプト」 を参照) 以下にある全ての
スクリプトは、よりわかりやすい呼び方として init スクリプト
と呼ばれています。
システムを起動したりシャットダウンしたりする作業は、 init が全体を管理します。 この観点からすると、カーネルは全ての他のプロセスを管理し、それらのプログラムから 要求される CPU 時間とハードウエアアクセスを管理するバックグラウンドプロセスである と考えられます。
Linux では、システムをどのように起動するかと稼働中のシステムでどのサービスを
有効化するかについて、 ランレベル と呼ばれるものを
使用します。起動後、システムは runlevels ファイル内で
initdefault と書かれた行の設定を読み込んで処理を行ないます。
通常この値は 3 または 5 に設定されて
います。詳しくは 表16.1「利用可能なランレベル」 をお読みください。
また代替手段として、ランレベルを起動時に指定することもできます (たとえば起動
プロンプトでランレベルの数字を追加するなど) 。カーネル自身で直接解釈できない
パラメータは init に渡されますので、ランレベル 3 で起動したい場合は、起動
プロンプトに 3 を記入してください。
表16.1 利用可能なランレベル¶
|
ランレベル |
説明 |
|---|---|
|
0 |
システム停止状態を表わします。 |
|
S または 1 |
シングルユーザモードを表わします。 |
|
2 |
リモートネットワーク (NFS など) を設定しない、 ローカルマルチユーザモードを表わします。 |
|
3 |
ネットワークを利用する完全マルチユーザモードを 表わします。 |
|
4 |
管理者がランレベルを設定しない限り特に利用されることのない、 のランレベルを表わします。 |
|
5 |
ネットワークと X ディスプレイマネージャ (KDM, GDM, XDM など) を起動する、完全マルチユーザモードを表わします。 |
|
6 |
システムの再起動を表わします。 |
![]() | NFS でパーティションをマウントしている場合のランレベル 2 について |
|---|---|
お使いのシステムで | |
システム稼働中にランレベルを変更するには、 telinit コマンドの後ろに移行先のランレベルを指定してください。この作業はシステム管理者 だけが行なうことができます。下記の一覧には、ランレベルの指定に関する重要な コマンドを示しています。
システムは シングルユーザモード に移行します。 このモードは、システムメンテナンスや管理作業を行なう場合に利用します。
必要な全てのプログラムとサービス (ネットワークを含む) が起動し、 通常のユーザがログインできるようになります。 ただしグラフィカルなシステムは利用できません。
グラフィカルな環境が利用できるようになります。通常は XDM, GDM, KDM などの ディスプレイマネージャが起動します。自動ログイン機能が有効に設定されて いると、ローカル環境は事前にウインドウマネージャ (GNOME, KDE やその他の ウインドウマネージャ) で選択しておいたユーザでログインします。
システムが停止します。
システムが停止し、再起動します。
openSUSE の標準インストールでは、ランレベル 5 が
既定値に設定されています。グラフィカルなインターフェイスでログインを求められるか、
既定のユーザで自動ログインします。
![]() | /etc/inittab 内のエラーによる起動時障害 |
|---|---|
| |
一般に、ランレベルを変更すると 2 種類の変更が発生します。まずは現行のランレベル のスクリプトについて、停止処理が動作します。つまり、現在のランレベルで動作している いくつかのプログラムを終了することになります。その後、新しいランレベルで 動作するものを起動します。多くの場合、ここでは複数のプログラムが動き出します。 たとえばランレベル 3 から 5 に移行する際、下記のような処理が動きます:
telinit 5 を実行することで、
管理者 (root) は init に対して
ランレベルの変更を要求します。
init は現在のランレベル (runlevel) を確認し、
新しいランレベルで /etc/init.d/rc に対して
指定するパラメータを判断します。
ここで rc は、新しいランレベルで起動する必要のない
プログラムについて、停止スクリプトを呼び出します。たとえばこの例では、
/etc/init.d/rc3.d (現在のランレベル 3) に存在し、
K で始まる全てのスクリプトを呼び出します。
K の後に続く数字は、 stop
を呼び出す際の実行順序を決めるための値で、プログラム間相互の依存関係が
存在することから付けられているものです。
最後に新しいランレベルで開始すべきスクリプトを実行します。たとえばこの例では
/etc/init.d/rc5.d 内で S で
始まる全てのスクリプトを呼び出します。 S の後に続く数字は
起動順序を決めるためのものです。
現在のランレベルと同じランレベルに変更しようとした場合、 init は
/etc/inittab が変更されていないかどうかを確認し、たとえば
getty などのインターフェイスを起動するなどの必要な処理を
行ないます。 telinit q と実行すると、これと同じことを
行なうことができます。
/etc/init.d 内には、 2 種類のスクリプトが存在します:
全てのスクリプトは /etc/init.d 内に保存されています。
起動時に実行するスクリプトは /etc/init.d/boot.d に
あるシンボリックリンクを介して呼び出され、ランレベルを変更する際の
スクリプトはそれぞれのサブディレクトリ ((/etc/init.d/rc0.d
から /etc/init.d/rc6.d まで) を介して呼び出されます。
これは単にわかりやすさと複数のランレベルでの重複を避けることを意図した
作りになっています。各スクリプトは開始と終了に対応していて、 start
や stop をパラメータとして解釈しなければなりません。
また、スクリプトは restart, reload,
force-reload, status の各オプション
を解釈する場合もあります。それぞれのオプションの意味については、
表16.2「よくある初期化スクリプトのオプション指定」 をお読みください。
init から直接呼び出されるスクリプトにはこのようなリンクは存在せず、
必要に応じてランレベルから独立して実行されます。
表16.2 よくある初期化スクリプトのオプション指定¶
|
オプション |
説明 |
|---|---|
|
|
サービスを起動します。 |
|
|
サービスを停止します。 |
|
|
サービスが実行中の場合はいったん停止し、再起動します。 実行中でなかった場合はそのまま起動します。 |
|
|
サービスを停止したり再起動したりすることなく、 設定を読み込みなおします。 |
|
|
サービスが対応している場合にのみ、設定を読み込みなおします。
対応していない場合は |
|
|
サービスの状態を表示します。 |
それぞれのランレベルのディレクトリ内にリンクを作成することで、異なる
ランレベルに対して各スクリプトを割り当てることができるようになっています。
パッケージをインストールしたりアンインストールしたりした場合は、
insserv (または insserv を呼び出す
/usr/lib/lsb/install_initd プログラム) を利用して
リンクを作成または削除します。詳しくは insserv(8) のマニュアルページを
お読みください。
これらの設定の全ては YaST モジュールから変更することもできます。
コマンドラインから状態を確認したい場合は、 chkconfig
ツールをお使いください。詳しくは chkconfig(8) のマニュアルページを
お読みください。
起動時最初に実行される boot スクリプトや、終了時の最後に実行される stop スクリプトについて、それぞれそのメンテナンス方法と説明を紹介します。
boot
システム起動中に init から直接実行されます。
選択したランレベルとは無関係に一度だけ実行されます。
このスクリプトで /proc ファイルシステムや
/dev/pts ファイルシステムをマウントし、 blogd
((boot logging daemon; 起動ログデーモン) を起動します。更新やインストール
が完了した後の初回起動では、ここから初期システム設定を起動します。
blogd デーモンは boot と rc から起動されるサービスで、他のサービスが
起動されるよりも前に起動します。たとえばブロックスペシャルファイルが利用
できるようにするなど、その他のスクリプトが完了した段階で動作が停止し、
/var ファイルシステムが書き込み可能状態でマウント
されると、画面出力を /var/log/boot.msg に書き込みます。
/var が書き込み可能な状態で無かった場合は、
書き込みが可能になるまで画面出力をバッファし続けます。 blogd について
より詳しい情報は、 blogd(8) のマニュアルページをお読みください。
また boot スクリプトは、 /etc/init.d/boot.d
ディレクトリ以下にあるファイルのうち、 S で始まるものを
起動する処理も行ないます。ここではファイルシステムのチェック作業を行ない、
必要であればループデバイスの設定も行ない、システム時刻の設定も行ないます。
自動チェックの際にエラーが発生していて、ファイルシステムの修復を必要とする場合、
システム管理者は root パスワードの入力後に手動で作業を行なうことができます。
最後に実行するスクリプトが boot.local です。
boot.local
ここには、指定したランレベルに移行する前に実行すべき追加のコマンドを
入力します。 DOS システムで言うところの AUTOEXEC.BAT
に相当するものです。
halt
このスクリプトはランレベル 0 または 6 に移行する際にのみ実行されます。
ここには 停止 や 再起動 の際に
実行されるプログラムを記述します。システムがシャットダウンするか、再起動
するかは、 halt の呼び出し方法に依存します。
シャットダウン時に特別なコマンドが必要である場合、
halt.local スクリプトに追加してください。
rc
このスクリプトは現在のランレベルに対して必要な stop スクリプトを呼び出し、
新しく選択したランレベルに対して必要な start スクリプトを呼び出します。
/etc/init.d/boot と同様に、このスクリプトは
/etc/inittab から呼び出されるもので、パラメータとして
選択したランレベルが指定されます。
上記に示したとおり、独自のスクリプトを作成して仕組みに組み入れることを
簡単に行なうことができます。カスタムスクリプトについての書式や命名方法、
統合方法については、 LSB の仕様説明や init
init.d, chkconfig,
insserv の各マニュアルページをお読みください。
また、 startproc や killproc
のマニュアルページもご覧ください。
![]() | 初期化スクリプトの間違いによる起動障害 |
|---|---|
初期化スクリプト内に間違いがあると、お使いのマシンが起動中に停止してしまい ます。これらのスクリプトを編集する際は特に注意し、可能であればマルチユーザ 環境で厳重なテストを行なってください。初期化スクリプトについて便利な情報が 16.2.1項 「ランレベル」 にありますので、そちらもあわせて お読みください。 | |
特定のプログラムやサービスに対してカスタムな初期化スクリプトを作成するには、
/etc/init.d/skeleton ファイルを雛型にしてください。
このファイルのコピーを新しい名前で作成し、必要なプログラムやファイル名、
パスなどのデータを入力してください。独自の設定でスクリプトの機能を拡張する
必要がある場合は、それぞれ init から適切な動作を記述してください。
冒頭にある INIT INFO ブロックは、スクリプト内に存在
していなければならない部分で、必要に応じて編集を行ないます。詳しくは
例16.1「最小限の INIT INFO ブロック」 をお読みください。
例16.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 新しいスクリプトの名前
と入力してください。 insserv プログラムは INIT INFO
ヘッダを読み込み、ランレベルのディレクトリ (/etc/init.d/rc?.d/)
に対して開始したり停止したりするためのリンクを作成します。また、このプログラムは
それぞれリンクのファイル名で表わされる起動や停止の順序についても取り扱います。
これらのリンクをグラフィカルなインターフェイスで作成したい場合は、
16.2.3項 「YaST を利用したシステムサービス (ランレベル) の設定」 に書かれた YaST のランレベルエディタ
をご利用ください。
既存のランレベルに組み込むべきスクリプトが既に /etc/init.d/
内に存在する場合は、 insserv を利用するか、もしくは YaST ランレベルエディタで
関連するサービスを有効にするかなどの手段で、ランレベルディレクトリ内にリンクを
作成してください。変更内容は次の再起動で適用され、新しいサービスが自動的に
起動されるようになります。
なお、これらのリンクは手動で作成したりはしないでください。 INFO
ブロック内に何らかの間違いがあると、他の何らかのサービスを設定するために
insserv を実行するタイミングで問題が顕在化します。
手動で追加したサービスの場合、 insserv を実行することで
ファイルが削除されます。
++ を選択して YaST ランレベルモジュールを起動すると、 利用可能な全てのサービスについて概要と有効化状態 (無効か有効か) が表示されます。 本モジュールは、 または のいずれかを選択することができます。 では、多くの用途での十分な機能を提供しています。 左側の列にはサービスの名前が、真ん中の列には現在の状態が、右側の列には短い 説明がそれぞれ書かれています。サービスを選択すると、さらに詳しい説明がウインドウの 下部に表示されます。サービスを有効にするには、表内で該当するサービスを選択して、 を選択してください。無効化する場合も同様です。
ランレベルに対してサービスを開始したり停止したりする作業以外のことを行ないたい 場合や、既定のランレベルを変更したりしたい場合は、最初に を選択してください。現在の既定のランレベル (「initdefault」 とも呼ばれます。システムの起動後に何も指定が ない場合に移行するランレベル) が冒頭に表示されます。通常は openSUSE における既定のランレベルは 5 (ネットワークと X システムを有効にした 完全マルチユーザモード) に設定されています。環境によってはランレベルを 3 (ネットワークを有効にした完全マルチユーザモード) にしたほうが適切である場合も あります。
この YaST ダイアログでは、既定のランレベルを 1 つ選択することができます (ランレベルの意味については 表16.1「利用可能なランレベル」 をお読み ください) 。また、このウインドウ内の表では、個別のサービスやデーモンに対して、 有効化や無効化を設定することができます。表には利用可能なサービスやデーモンが 一覧表示されていて、お使いのシステムで有効になっているかどうかと、有効化されて いるランレベルが表示されます。マウスなどで 1 行を選択し、それぞれのランレベル (, , , , , , , ) に対応したチェックボックスを 選択することで、選択したサービスやデーモンがどのランレベルで起動するのかを 設定することができます。なお、ランレベル 4 はカスタムなランレベルを作成する ための空き領域です。また、選択したサービスやデーモンの概要説明については、 表の下側に表示されます。
![]() | ランレベル設定の誤りによるシステム障害 |
|---|---|
ランレベルの設定を誤ると、お使いのシステムが利用できなくなります。設定を 適用する前に、どのような影響があるのかをご確認ください。 | |
を押すと、サービスを開始したり停止 したりすることができます。 を押すと、現在の 状態を表示することができます。また、 を押すと、行なった変更をシステムに適用したり、ランレベルエディタを起動する 前の設定に戻したりすることができます。 を押すと、 変更点をディスクに書き込みます。
openSUSE では、主な設定を /etc/sysconfig
で制御しています。 /etc/sysconfig 内にあるそれぞれの
ファイルは、それを必要とする各スクリプトで読み込まれます。たとえば
ネットワークの設定は、ネットワーク関連のスクリプトで処理されます。
システム設定を編集するには、 2 通りの方法があります。 YaST sysconfig エディタを使用する方法と、エディタなどを使用して手作業で設定ファイルを 編集する方法です。
YaST sysconfig エディタは、システム設定を行なうための使いやすいフロントエンド
です。変更を行ないたい値に対して実際の場所を知らなくても、このモジュールに内蔵
された検索機能を利用するなどを行なうことで、値の変更を行なうことができますし、
それらの変更を適用する際にも sysconfig 内にある設定値を
自動的に変更し、必要なサービスを再起動します。
![]() | /etc/sysconfig/* ファイルの編集によるシステム障害 |
|---|---|
知識や経験のない方の場合は、 | |
YaST sysconfig のダイアログは 3 つのパーツから構成されています。ダイアログの 左側には全ての設定項目に対するツリー構造の表示があります。値を選択すると、右側に 現在選択している設定項目とその現在値が表示されます。その下側にある 3 つめの ウインドウには、その設定項目に対する短い説明と設定可能な値、および既定値と 設定の発信元ファイル名が示されています。また、このダイアログでは設定値を変更した 後に実行される設定スクリプトと、変更結果としてどの新しいサービスが起動されるのか についても表示されます。 YaST は ボタンを押して ダイアログを終了する際、変更点の確認とともに実行されるスクリプトを表示します。 後から起動したい場合は、サービスやスクリプトを飛ばすこともできます。 YaST では自動的に全ての変更点を適用し、変更を反映するために必要なサービスを 再起動することができます。
システム設定を手動で変更するには、下記のように実施します:
root ユーザでログインするか、
もしくは移行します。
telinit 1 でシングルユーザ
モードに移行します。
エディタを使用して、設定ファイルのうち必要な箇所を変更します。
/etc/sysconfig 内にある設定ファイルの変更について
YaST を利用しない場合、何も値を設定しない場合は 2 つの引用符が書かれて
いることをご確認ください (たとえば KEYTABLE=
"" のように) 。また、空白を含む値を設定する場合は、
それらを引用符で括っていることについてもご確認ください。
空白を含まない値である場合にのみ、引用符は不要になります。
変更を反映するため、 SuSEconfig を実行します。
telinit 既定のランレベル
のように実行して、お使いのシステムを以前のランレベルに戻します。ここで
既定のランレベル は、お使いのシステムにおける
既定のランレベル番号を記入します。ネットワークと X システムの設定された
完全マルチユーザ環境の場合は 5 を、ネットワークだけが
設定された完全マルチユーザ環境に戻す場合は 3 を指定します。
上記の作業手順は、システム全体に関わる設定を変更する場合にのみ行なうべき ものです。これにはたとえば、ネットワークの設定などが該当します。 小さな変更程度であればシングルユーザモードへの移行は不要ですが、 関連する全てのプログラムについて正しく再起動を行なわなければならないことに 注意してください。