実質的にそうではなくても、今日のすべてのUNIX系オペレーティングシステムは、マルチユーザーモードとシングルユーザーモードを区別します。シングルユーザーモードは、通常、サービスセットが縮小されてもシステムが正常に実行されている間は実行できない低レベルのシステムメンテナンス(通常はオフライン完了が必要なファイルシステムメンテナンス)に使用されます。
しかし、シングルユーザーモードとマルチユーザーモードを実際に区別するには、誰かが最初のコードを書く必要がありました。
マルチユーザーモードがシングルユーザーモードの後に出てくると考えられます。マルチユーザーモードはより多くの機能を実行し、最初にシングルユーザーモードでシステムを起動してからマルチユーザーモードに切り替えることが合理的であるためです(たとえば、Linuxはどのように機能しますか?)。は「シングルユーザー」モードで動作し、次に効果init=/bin/bash
的にinit
マルチユーザーモードに切り替えます。いつ、どのようなバリエーション/バージョンが2つの間で最初に区別されましたか?
答え1
Unixは、1971年バージョン1がリリースされ、最初からこのような区分を置きました。
システムはマルチユーザーモードで起動しています(つまり、ユーザーは利用可能なシリアルインターフェイスに接続されていますが、tty0
ttytty5
をさらに4つ追加する準備ができています)。
Unix v1 マニュアルセクション4の4ページの注意tty
:
By appropriate console switch settings, it is possible to
cause UNIX to come up as a single—user system with I/O on
this device.
Unixの最初のバージョンでは、各シリアルラインのログインプロセスの作成はハードコーディングされ、initプロセス自体によって行われました。始める前に使用したいモードを選択し、スイッチ設定を変更し、シングルユーザーモードシェルを終了してマルチユーザーモードに切り替えます。
後でUnixバージョン7(1979)では、シングルユーザーシェルがシャットダウンしたときにマルチユーザーモードに切り替わるハードウェアスイッチではなく、シングルユーザーモードでシステムが最初に起動されました。
後でSystem III(1981)でこれを導入しましたinittab
。これにより、複数のランレベルをより適切に定義および設定し、使用するランレベルを選択できます。実行レベル 1 はシングルユーザー、実行レベル 2 はマルチユーザーです。 inittabファイルが存在しない場合、システムはシングルユーザーモードで起動します。
答え2
最初に、initはシングルユーザーモードでコンソールからシェルを起動します。そのシェルがシャットダウンしたら、残りのファイルシステムをマウントし、実行中のすべてのデーモンプロセスを起動および設定しながら、シリアルポートからログイン(実際にはgetty)プログラムを起動します。
これはすべて/etc/inittabのエントリによって制御されます。
これはすべて1970年代初頭にUNIXのPDP-11バージョンで起こり、私は以前にもそう信じていました。
もちろん、細部は無限ですが、それは重要です。
答え3
対。という用語を使用するsingle user
最も可能性の高い理由multi user
は、起動後にUNIXに読み取り専用でマウントされたルートファイルシステムのみがあるためです。
次のことは、ルートファイルシステム(約1 MB)を確認して読み取り/書き込み用に再マウントすることです。
次に、/usr
ファイルシステムを確認してマウントします。
ユーザーは/usr/
マウント後にのみログインできるため、UNIXはマルチユーザー環境をサポートできます。