
最近、Debian をいじっています。Ubuntu で Linux の旅を始めた後、Debian が最も論理的なステップのように思えたからです (Unity は好きではないので、Unity と一緒に GNOME をインストールするのは面倒です。Unity を完全にアンインストールすると、残りのデスクトップ機能の多くを台無しにしてしまうからです)。インストール中にいつも悩まされているのは、GRUB をインストールするオプションです。
私には、これは必要ないように思えます。Ubuntu や Windows のように、カーネルを選択するのではなく、カーネルに直接起動するだけでよいのですが、私の選択は常に同じ、つまりデフォルトのオプションです。
インストール中に、オプションを説明するテキストに「Debian を起動可能にする必要があります」というような内容のメッセージが表示されます。これが、私が「いいえ」を選択するのをためらう主な理由です。私は間違いなく Debian を起動させたいのです。時間をかけて「いいえ」を選択した場合に何が起こるか確認することもできますが、まずは皆さんに質問するのが賢明だと思います。
GRUB のインストールで「いいえ」を選択しても安全ですか? GRUB がインストールされていなくても Debian は起動しますか? 「いいえ」を選択しても安全である場合、このオプションに欠点はありますか?
答え1
うーん... なんと言えばいいでしょうか。Debian はコンピュータ上で動作する Linux ディストリビューションですが、動作を開始できる状態にするにはブートローダが必要です。基本的に、このディストリビューションは実行準備ができるまで GRUB または他のブートローダに依存します。GRUB の代わりに syslinux を使用することもできます。
答え2
受け入れられた答えを詳しく説明すると…
x86 PC が起動すると、CPU は 16 ビット リアルモードで実行され、BIOS に格納されているコードを実行します。BIOS は POST と初期構成を実行した後、ブート ディスクの先頭から最初の 512 バイトを読み取り、そこに実行を転送します。これは、残りの処理を実行するブート ローダーの初期コードです。
さて、考えてみましょう休息とは何か。 最も単純なケースでは、ブートローダーはカーネルのイメージを見つけてロードし、そこに実行を転送できるはずです。古いデファクトスタンダードの Linux ローダーは、lilo
カーネルが格納されているすべてのセクターの連続マップを保持していました。しかし、それ以来、状況はかなり変わりました。より多くのファイルシステムが使用されるようになり、カーネルを RAID デバイスまたは LVM 論理ディスクまたはこれらすべてのスタックに保存することが慣例になりました。コンピューターには、初期化の順序が任意であるため、名前付けの問題が発生する、プラグ可能なディスクが多く搭載されるようになりました。今日では、Linux ベースの汎用システムを立ち上げるには、初期利用可能ないくつかのツールが必要であることを考慮してください。ユーザー空間ツールはいわゆる「initrd」(初期 RAM ディスク)または「initramfs」(初期 RAM ファイルシステム)に保存されるため、実際にはブートローダーは Linux カーネルだけでなく、それに対応する initramfs もロードします。
したがって、ブートローダーのタスクは次のようになります。
- Bootstrap 自体 — この 512 バイトは、より複雑なものを見つけて読み込むことしかできません。
- ブート ファイルシステム (カーネルとその initramfs を含むファイルシステム) にアクセスするために必要なすべてのレイヤーを検出し、初期化します。
- すべてをロードしてから、制御をカーネルに転送します。
さて、ほとんどの人は、このプロセスを何らかの方法で視覚化して制御できることが便利だと考えているので、ブートローダーには、ある種のメニューを表示し、ロードされる内容と方法を調整する機能が必要です。代替カーネルをロードする機能もボーナスになるかもしれません (たとえば、Debian セキュリティ更新のリポジトリからインストールされた新しいカーネルは、既存のカーネルを削除することはありません。むしろ、そのカーネルは別に保持され、新しいカーネルで回帰が見つかった場合にブートに使用できます)。
したがって、メモリ/ストレージ スペースの要件が非常に厳しく、カーネルのロード方法を誰も制御できない組み込みシステムを扱うのでない限り、この機能をカーネルに直接組み込むのは不合理です。ブート ローダーは本質的にハードウェア プラットフォームに大きく依存するソフトウェアであるため、なおさらです。ブート ローダーが存在するのはそのためであり、汎用システムではブート ローダーを使用する必要性が基本的に避けられないのもそのためです。