
そうですね、私は80年代後半からコンピューターに触れてきました(実際は3歳くらいでした)。Atari Xl-XE、MS-DOS、Windows 3.1、95など、あらゆるものを試しました。その後、見た目に惹かれてLinuxを使い始めました(ええ、わかっています、Compiz-FusionLinux を探索する本当の理由でした) が、今ではすべてのマシンにインストールされています。Windows 10 にもインストールされています。
以前、マシンを一から組み立てたことがあり、常に「MS-DOS」を起動できたことを覚えていて、それが不思議に思いました。
80 年代や 70 年代後半 (私はまだ生まれていませんでした) に Unix はどのようにインストールされましたか? 大きなフロッピーを起動するだけの簡単な作業だったのでしょうか、それとも黒魔術が関係していたのでしょうか?
たまたまそれに関する参考文献が見つからず、私の国の人々はフリーソフトウェアというものを理解していないのです。
編集:
重要な部分を飛ばしてしまいました。そもそもそのことを考えていなかったので、自分が愚かだと感じています。
すべてはブート シーケンスから始まります。これはオペレーティング システムではありませんが、BIOS (私の考えでは、マシン構成用の非常に最小限の OS) やブート シーケンスなどの他のものと同様に、ROM メモリ内にあります。この段階で、BIOS にリストされているデバイスを検索し、テープにあるようなブート命令で 1 つのデバイスが応答するまで、それらを順番に繰り返します。したがって、初期 OS は必要なく、Unix をインストールできます。
愚かな間違いは、長い道のりを歩むことになりますが、確実により多くのことを学ぶことができます。
答え1
80 年代に PDP-11 で Unix をインストールした経験がありますが、インストール プロセスは実に興味深いものでした。実は今夜 (エミュレーターで)、何年ぶりかでインストールを実行しました...
PDP-11 用の Unix V7 はテープ形式で配布されました。テープには複数のファイルが次々に含まれていました。
- テープ上の最初のファイルはブート ローダーでした。これは 2 つの部分に分かれていました。最初の部分はブート ブロックで、ブート ローダーの 2 番目の部分をテープからメモリに読み込み、制御をそこに渡すのに十分な情報を持っていました。このコードは 512 バイト未満でした。2 番目の部分はそれよりも大きく、いくつかの異なるタイプのディスクとテープ用の簡素化された「スタンドアロン ドライバー」を持っていました。また、テープ上またはハード ドライブ上のファイル システムのルート ディレクトリにあるファイルを検索し、それらをロードして実行できるだけの Unix ファイル システムに関する情報を持っていました。ブート ローダーの完全なサイズ (両方の部分の合計サイズ) は約 8K バイトでした。
- テープ上の 2 番目のファイルはスタンドアロン
cat
プログラムでした。「スタンドアロン」とは、ベア メタル上で直接実行される (オペレーティング システムなしで実行される) という意味です。ブート ローダーと同じスタンドアロン デバイス ドライバーとファイル システム ドライバーを使用して作成されました。ブート ローダーを使用してこれをロードして実行できます。起動時に、どのデバイスからファイルを読み取るか、どのファイルを読み取るかを指定します。ファイルを読み取り、出力して終了します。これがすべてです。これはあまり役に立ちませんでした。 - テープ上の 3 番目のファイルは、テープ上のファイルのリストが入った単なるテキスト ファイルでした。これを見た人はほとんどいませんでした。これらの配布テープを使用していた場合、その内容は既にほぼ分かっていたはずです...
- テープ上の 4 番目のファイルはスタンドアロン
mkfs
プログラムでした。これは、他のスタンドアロン プログラムと同じスタンドアロン デバイス ドライバーとファイル システム ドライバーのライブラリを使用して構築され、オペレーティング システムなしでベア メタル上で実行されました。ブート ローダーを使用してこれをロードして実行できます。ブート ローダーは、ファイル システムを作成するディスク (およびパーティション) とファイル システムのサイズを尋ね、指定されたデバイスとパーティションに初期ファイル システム構造を書き出します。その後、終了します。 - テープ上の 5 番目のファイルはスタンドアロン プログラムでした(はい、システム コール
restor
と同様に、 'e' なしで綴られています...)。ブート ローダーを使用してこれをロードして実行できます。これも、オペレーティング システムのないベア メタルで実行されました。ファイル システム ダンプを含むテープ ファイルと、それを復元するディスク パーティションを要求します。次に、それを実行します。その後、終了します。creat()
restor
- テープ上の 6 番目のファイルは、ルート ファイル システムのファイル システム ダンプにすぎませんでした。
- テープ上の 7 番目のファイルは、/usr ファイルシステムのファイルシステム ダンプにすぎませんでした。
そして、それがあなたが得るものです。
したがって、このテープを持っている場合、何らかの方法でプロセスを開始する必要があります。一部の PDP-11 には、デバイス (テープやディスクなど) の最初のブロックをロードしてジャンプする方法を知っているブート ROM がありました。(このテープの場合、最初のブロックは 512 バイト未満の実行可能コードで、ブート ローダーの残りの部分をロードする方法を知っています。) ただし、私が使用した最初の PDP-11 にはブートストラップ ROM がありませんでした。マシンを起動するたびに、デバイスの最初のブロックをロードしてジャンプするためのブート コードを入力する必要がありました。手動で。バイナリで... 幸い、それはかなり短く (たとえば、TU16 または TE16 テープ ドライブの最初のブロックを読み取ってジャンプするコードは 6 ワード、つまり 12 バイトでした)、マシンにテープで貼り付けた紙にブート コードを書き留めました。言うまでもなく、マシンを再起動する必要がないように最善を尽くしました...
以上のことを踏まえて、システムをインストールするための一般的なプロセスは次のようになります。
- ブート ROM を使用して (または手動でブート コードを入力して)、いわゆる「ブロック ゼロ ブート ローダー」をメモリにロードし、それを使用してブート ローダーの残りの部分をロードします。
- ブート ローダーを使用してスタンドアロン
mkfs
プログラム (テープ上の 4 番目のファイル) をロードし、ハード ディスク パーティションにルート ファイル システムの構造を配置します。 - ブート ローダーを使用してスタンドアロン
restor
プログラム (テープ上の 5 番目のファイル) をロードし、ルート ファイル システムのファイル システム ダンプ (テープ上の 6 番目のファイル) をハード ディスクに復元します。 - ブート ローダーを使用して、ハード ドライブのルート ファイル システム (テープから復元したばかり) のファイルから Unix カーネルをロードし、制御をそのファイルに移します。この時点で、Unix が実行されます。
- 通常の Unix コマンドを使用して
mkfs
、restor
ハードディスクの別のパーティションに /usr ファイルシステムを作成し、/usr ファイルシステムのファイルシステム ダンプを準備したパーティションに復元します。
その後、ハードディスクの最初のディスク ブロックにブート コードをインストールすること (これにより、システムを再起動するたびにブート ROM または手動で入力したブート コードが実行される)、いくつかのシステム チューニング、およびいくつかの項目を希望どおりに設定すること以外は、ほぼ完了です。
このような手順は、1970 年代から 1980 年代にかけて長い間、多くの Unix ディストリビューションのインストールに使用されていました。Berkeley Unix (4.2BSD 以降) は、非常によく似た構造のディストリビューション テープと、非常によく似たインストール手順を提供していました。
Charles HaleyとDennis RitchieによるV7 UnixをPDP-11にインストールするための手順をご覧になりたい場合は、ここ今夜、これらの指示に従ったところ、うまくいきました。 ;-)
答え2
1989 年に私が就いた最初の仕事では、3.5 インチ (約 9 cm) のフロッピー ディスクを使用して、Intel 386 PC に Unix (Interactive、当時は Kodak が所有) をインストールしました。
答え3
どのように初期インストールUnix の導入が行われました。当時のコンピュータの多くは Unix を実行するように設計されており、ハードディスクまたはフロッピーにオペレーティング システムがプリインストールされていました。インストールは、適切な内容のディスクを用意するだけで済みました。
しかし、システムの起動時に、どのような手段でオペレーティング システムをメモリにインストールするのか疑問に思うかもしれません。
ここに例があります。AT&T 3B1 または「Unix PC」には、アドレス 800000-BFFFFF にブートストラップ プログラムを含む ROM がありました。システムがリセットされると、Motorola 68010 CPU はスタック ポインタを 000000-2 からロードし、プログラム カウンタを 000004-6 からロードしてジャンプします。リセット中、ハードウェアはアドレス ビット 23 を強制的に高くし、ROM をメイン メモリに効果的にマッピングするため、システムは実際には ROM 内のプログラムを実行します。ROM 内のプログラムは、さまざまなハードウェア コンポーネントを初期化し、いくつかの診断を実行し、ブートブロックをロードして実行することでフロッピーまたはディスクからオペレーティング システムをロードします。ブートブロック内のコードは、init
現代のシステムと同じようにカーネルをロードして実行を開始します。
(詳細はマニュアルを参照、Philip Pembertonのミラーを参照)AT&T 3B1 エミュレータ)
理論的には、この知識を使用して、マシンに Unix 以外のものをインストールできます。ただし、PC の BIOS のようなハードウェア抽象化レイヤーが常に存在するとは限らなかったため、起動されるプログラムはハードウェアとより密接に結合する必要がありました。
答え4
PC では (IIRC) Interactive Unix のインストールはブートフロッピーで行われ、その後「実際の」インストールはテープから行われました。SCSI カードが Interactive によってサポートされている必要があることに注意してください。
HP ワークステーションでは、テープ/DAT から起動してインストールしました。