initをスキップする
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/24 14:45 UTC 版)
initはマシンを立ち上げる唯一の方法ではない。最近のブートローダ(たとえばLILOやGRUB)では、カーネルが初期化の最後に何を起動するかを指定することができる(既定値はもちろん/sbin/initである)。これは、ブートローダのプロンプトにinit=/foo/barなどと打ち込むことで実現される。これは直接シェル(Bashやzsh)を使いたい場合に便利な機能である。たとえば、init=/bin/bashを使えば、シェルが使える状態で立ち上がり、パスワードを入力する必要もない。システム管理者がこれを安全でないと判断する場合は、ブートローダのパスワードを設定すればよい。 BSD系では、ブート処理は途中で割り込むことができ、boot -sコマンドでシングルユーザーモードで立ち上げることができる。シングルユーザーモードは技術的にはinitをスキップするわけではない。/sbin/initはやはり実行されるが、この場合exec()に指定するプログラムのパスを聞いてくる(デフォルトでは/bin/sh)。ブートが行われている端末が/etc/ttysファイルで "insecure" とされている場合(システムによっては現在の "securelevel" も関係する)、initは最初にrootのパスワードを聞いてくる(あるいは、ユーザーがCTRL+Dを押下すると通常のマルチユーザー立ち上げに戻る)。このプログラムが終了させられた場合、カーネルはマルチユーザーモードでの再立ち上げを行う。通常動作中にマルチユーザーモードからシングルユーザーモードへ移行させようとしたときも同様のことが起きる。カーネルのブート処理後、initを起動できない場合はパニックが発生して、システムは利用できなくなる。initのパス指定方法はオペレーティングシステム (OS) によって異なる(NetBSDではboot -a、FreeBSDではinit_pathというローダー変数である)。
※この「initをスキップする」の解説は、「init」の解説の一部です。
「initをスキップする」を含む「init」の記事については、「init」の概要を参照ください。
- initをスキップするのページへのリンク