Wikipedia によると、GRUBは1995年にリリースされました。その時点で、LinuxとxBSDは数年間存在していました。初期のUnixバージョンは70年代にハードウェアに関連付けられていたと私は知っています。 80年代ですが、LinuxとxBSDは無料で配布およびインストールできましたが、当時Linuxをどのように起動するかという疑問を投げかけていますか?ディストリビューションには、独自のブートローダーの実装が同梱されていましたか?
私が90年代に使用した最初のLinuxディストリビューション(Slackware 3.0
IIRC)使用 [〜#〜] lilo [〜#〜] ブートローダーとして。そして、多くのディストリビューションは、LILO
が「デフォルト」のブートローダーになっているときでも、何年もGRUB
を使用していました。
さらに、Linuxの初期の頃には、ブートローダー/デュアルブートに依存する代わりに、別のOS(つまり、DOSまたはWindows)からLinuxをブートすることが一般的でした。たとえば loadlin がありました。
Syslinux を忘れないでください。これは、USBセルフブートインストール/リカバリディストリビューションでよく使用される、よりシンプルなブートローダーです。または Isolinux (同じプロジェクトから)多くの「ライブ」ディストリビューションで使用されています。
今日GRUB
は多くのオペレーティングシステムをロードするために使用できますが、LILO
はより限定的で、特にLinux(つまりLInux LOader)をターゲットにしており、Windowsへのデュアルブートをサポートしています。 。GRUB
は、多くの構成可能なオプション、スクリプト機能などがあるため、デュアル/マルチブートに非常に役立ちます。
マシンに単一のOSが必要な場合は、「任意」(つまり、Linux/BSDディストリビューションのデフォルトであるブートローダー)で十分です。
[〜#〜] lilo [〜#〜] は、Grubより前のPCでLinuxを非常に早い段階からブートするための事実上の標準でした(MCC、最初のLinuxディストリビューションの1つで、これを使用していました) 。他のさまざまなブートローダーが同時に使用されました。 Loadlin はかなり一般的でした。 DOSからLinuxを起動し、 umsdos
を使用して一部の構成で使用され、DOSファイルシステムでLinux環境をホストしました...別の一般的な構成には、ブートローダーが含まれていませんでした。 all:カーネルはフロッピーからブートすることができ、ほとんどのLinuxユーザーは「ブートとルート」フロッピーの既知の適切なペアを保持しました。1つはカーネルを含み、もう1つはレスキュー目的の基本的なルートファイルシステムです。
他のオペレーティングシステムのブートローダーを使用してLinuxをブートする方法もいくつかありました。たとえば、OS/2のブートマネージャやWindows NTのNTLDRなどです。
他のシステムには独自のブートローダーがありました:
現在でも、Grubだけが表示されるブートローダーではありません。カーネルをフロッピーから直接ブートすることはあまり便利ではありませんが(フロッピーに収まるほど小さいカーネルを構築できると仮定して、それがまだ可能かどうかは確認していません)、EFIから直接ブートできます(これは事実上、他のオペレーティングシステムをロードするように設計された独自の小さなオペレーティングシステム(Grubと同様)。多くの小規模なシステム(組み込みシステム、シングルボードコンピュータ...)には、 -Boot があります。 (そして -BootのEFIレイヤー もあります。)
カーネル2.6の中頃まで、フロッピーディスクにコピーした場合、x86カーネルは(ディスクイメージのように)直接ブート可能でした。
これは実際、Linuxを起動する最初の方法でした。
今日x86カーネルのヘッダーを見ると、そのようなフロッピーからの起動が機能しないというエラーメッセージが表示されます。
私は90年代後半にLinuxを使い始めました。前述のように、lilo
がデフォルトでした。 DOSシステムでデュアルブートしたい場合は、HIMEMにデータをロードしたり、CDドライバーをロードしたりせずに、ベアブートを実行し、loadlin
を使用できます。 Win95デュアルブートの場合、最初にDOSでドライブをブート可能にしてから、'95をインストールします。'95 'のブートローダーを使用すると、DOSカーネルを引き続きブートでき、loadlin
を使用できます。
NT4でのデュアルブートのトリックは、LILOを/
パーティションに書き込み、dd
(dd if=/dev/sda2 of=/path/to/file bs=512 count=1
)を使用して最初の512バイトを取り除き、結果のファイルをntldr
はそれを見ることができ、WinNTのブートローダーからそれを使うことができます。これを行う際の問題は、カーネルをアップグレードしたときに、リブートする前にすべての手順を繰り返すことを忘れてはなりませんでした。そうしないと、Linuxシステムに戻るときに問題が発生します。同じプロセスがWin2kでも機能しました。
LILOでは、カーネルが更新されるたびに、LILOを更新することを覚えておく必要がありました。
loadlin
を使用すると、カーネルが更新されるたびに、カーネルをDOSパーティションにコピーすることを覚えておく必要がありました。
他の回答で示唆されている他の1つのオプションは、dd if=/path/to/vmlinuz of=/dev/fd0
を使用してカーネルをフロッピーに直接書き込むことでしたが、ルートデバイスは、コンパイル時またはrdev
ユーティリティ。
GRUB
が登場したとき、LILOを更新したり、LILOを更新してブート情報を再ストリップしたりする必要がなくなったので、大きな喜びがありました。ブートローダー情報を更新するのを忘れました...
そして、LILOとGRUBの前は、なんらかのカスタムブートローダーユーティリティを使用してコマンドラインから起動する必要がありました。
例として、AmigaにはLinuxがありました。カーネルELFをメモリにロードしてそこにジャンプするには、amibootと呼ばれるコマンドラインユーティリティを使用する必要がありました。
これは、コマンドラインから Amiga 600でLinuxを起動する にamibootを使用している人のビデオです。彼のStartInstallスクリプトは、amiboot実行可能ファイルを呼び出しています。 amibootの構成メモリを監視し、目的のロードアドレスを把握し、パラメータをカーネルに約0:55で渡すことができます。