UNIX のシングルユーザー モードとマルチユーザー モードの区別が最初に導入されたのはいつですか?

UNIX のシングルユーザー モードとマルチユーザー モードの区別が最初に導入されたのはいつですか?

事実上、今日の UNIX 系オペレーティング システムはすべて、マルチユーザー モードとシングルユーザー モードを区別しています。シングル ユーザー モードは、通常、システムが正常に稼働している間は、サービス セットを減らしても実行できない低レベルのシステム メンテナンス (通常はオフラインで行う必要があるファイル システムのメンテナンスなど) を対象としています。

しかし、実際にシングルユーザー モードとマルチユーザー モードを区別するための最初のコードを誰かが書く必要があったことは明らかです。

マルチユーザー モードはシングル ユーザー モードの後に​​登場したのではないかと思います。これは、マルチ ユーザー モードの方が多くの機能があり、システムを最初にシングル ユーザー モードで起動し、後でマルチ ユーザー モードに移行するのが合理的だからです (少なくとも Linux ではそのように動作します。たとえば、カーネルinit=/bin/bashに渡すとわかるように、カーネルは「シングル ユーザー」モードで動作し、その後、効果的にinitマルチ ユーザー モードに切り替わります)。しかし、私の質問は次のとおりです。いつ、どの変種/バージョンで、この 2 つの区別が最初に行われたのでしょうか?

答え1

Unix は当初から、つまり 1971 年にバージョン 1 がリリースされて以来、その区別を行ってきました。

システムはマルチユーザー モード (つまり、利用可能なシリアル インターフェイスにユーザーが接続され、さらに 4 つの tty を追加する準備が整った) で起動していましtty0tty5

Unix v1 マニュアルセクション 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 uservs.という用語を使用する最も可能性の高い理由multi userは、起動直後、UNIX には読み取り専用でマウントされたルート ファイル システムしかなかったことです。

次に実行されたのは、ルート ファイル システム (約 1 MB) をチェックし、読み取り/書き込みで再マウントすることでした。

次に、/usrファイルシステムがチェックされ、マウントされました。

マウントされた後にのみユーザーがログインできるため/usr/、この時点で UNIX はマルチユーザー環境をサポートできるようになりました。

関連情報