GNU GRUB
GRUBは動的に設定でき、コンピュータのブートタイム中に異なるカーネルや初期RAMディスク (initrd) を選択するといった柔軟な設定変更が可能である。そのような目的を実現するために、GRUBはシンプルかつBashライクなコマンドラインインタフェースを提供しており、ユーザーは通常のブートメニューリストにその場で新たなブートシーケンスを追加することもできる。
GRUBは(起動処理の初期のコードがアセンブリ言語を利用しているのを除き、)移植性が極めて高く、複数の実行可能フォーマットをサポートしており、ディスクのジオメトリ変換に依存していない。GRUBはLogical Block Address(LBA)モードのサポートに加え、ほぼ全ての主要なUNIXファイルシステム、並びにVFAT及びNTFSなどMicrosoft Windowsで使用するファイルシステムもサポートしている。GRUBを利用することで、サポートしている任意のファイルシステム上に存在するファイルの中身をユーザーは見ることができる。
GRUBは様々なユーザインタフェースを用いて設定することができる。多くのLinuxディストリビューションではGRUBのブートメニューに表示される背景画像のカスタマイズなどを行うグラフィカルな設定ツールを用意している。またGRUBのテキストインタフェースを利用すると、リモート・ターミナルからシリアルポート経由で接続できる。
GRUBはネットワーク経由でのOSイメージのダウンロードも可能で、従ってディスクレスシステムもサポートしている。GRUBはローカルから起動するだけではなく、起動前の自動的なOSイメージの伸長もできる。
GRUBをインストールしたコンピュータならば、通常GRUBの初期ブートプログラムであるStage 1ローダがMBRにインストールされている。しかし、チェーンロード可能な別のブートローダ(例: MBM)がMBRにインストールされていても構わない。後者の場合は、パーティションのボリュームブートレコード(英語版)(Volume boot record, VBR、またはパーティションブートレコード、 Partition boot record, PBRとも呼ばれる)のような別のブートセクタにGRUBのStage 1ローダをインストールし、このStage 1ローダをMBR上のブートローダからチェーンブートすればよい。ブートセクタのサイズは限られており、更にStage 1ローダが使用するBIOS割り込みルーチンの制限から、このタイミングでは、ディスクの先頭1024シリンダー(英語版)以内の固定領域から2、3のディスクセクタを読み込み、GRUBの次のStageローダをロードする程度のことしかできない。
GRUBはスクロール可能なOSブート選択画面を表示する。GRUBは設定ファイル"menu.lst"(または"grub.cfg"など)にエントリーを追加することで150またはそれを超えるブート選択を容易に行うことが可能であり、矢印キーでブートするOSを選択する。
GRUBはマルチブートに対応しているが、チェーンロード(英語版)を利用しマルチブート非対応のOSをもサポートしている。ブートOSの追加と同じく、2、3行のコマンドシーケンスを設定ファイルに書き込む、またはGRUBシェルでその場で適切なコマンドを実行することで、MS-DOS、Windows、Linux、BSD、または、Solarisオペレーティングシステムをいとも簡単に起動させることができる。これらUnix系OSやDOS、Windowsなどを起動するためのチェーンローダがGRUBに組み込まれている。
前述の通り、通常のブートメニューに加え、Bashライクなターミナルコマンドプロンプトが利用でき、ブートプロセスの一部または全部をチェックしたり変更することが可能な豊富なコマンドセットを持っている。これらの手法を活用することで、コンピュータにインストールされているOSの特別な知識が事前になくとも、インストールされているOSを起動する目的でフロッピーディスク、USB、またはCD-ROMデバイスからGRUBを利用し起動することもできる。
GRUBは一般的なUnix系OS上においてインストール可能であり、また特定の実装を用いてDOSやWindowsからのインストールも可能である。
Brady, Pádraig. “Details of GRUB on the PC”. pixelbeat.org. 2006年11月22日閲覧。
Okuji, Yoshinori. “GNU GRUB”. gnu.org. 2007年11月29日閲覧。