/bootパーティションの実際の目的は何ですか?

/bootパーティションの実際の目的は何ですか?

私はLinuxパーティションとファイルシステムに関する比較的古い記事を読んでいます。LPIC 1認証聖書)。それは言う:

Linuxブートローダの一部のバージョンは、ディスクの最初の1024シリンダを超えるカーネルにアクセスできません。 /bootパーティションをドライブの先頭に配置すると、起動時にカーネルにアクセスするのに問題がないことを確認できます。この問題は、最初のパーティションでLinuxと他のオペレーティングシステムをデュアルブートする場合に最も頻繁に発生します。

ブートローダーへ」ディスクの最初の1024シリンダーを超えるカーネルにアクセスできません。「?

しかも「なに?ドライブの先頭に/bootパーティションを配置します。「意味は?

答え1

これは、Linux 自体ではなく、非常に古い BIOS とブートローダによって引き起こされる制限です。 BIOSはディスクの最初の1024シリンダーにのみアクセスできます(参照:ここシリンダ/ヘッド/セクタが何であるかについての詳細は参照)。この制限は、単純な特性のため、独自のディスクドライバがなく、BIOSサービスを使用してディスクにアクセスするブートローダまで拡張されます。

これは、ブートローダとカーネル(これをロードするのがブートローダの作業であるため)の両方がこの制限を持つシステムの最初の1024シリンダ内にあることを意味します。これを行う簡単な方法は、カーネルを含む別々のパーティションを作成して/bootドライブの先頭に置くことです(通常は最初のパーティションにします)。これは、パーティションが大きすぎないと仮定すると、最初の1024シリンダー内に実際に存在することを意味します。

この制限は以前のBIOSにのみ適用されるため、これ以上問題はありません。さらに、多くの最新のブートローダ(GRUBなど)には独自のディスクドライバがあるため、BIOSサービスに頼る必要はありません。最新のブートローダは/boot他の目的に使用できますが、別のパーティションにある必要はなくなりました。そして最初の1024個のシリンダー内(ほとんどの場合、これは/boot別々のパーティションにあります)

答え2

歴史

/bootオペレーティングシステムで使用されていないがオペレーティングシステムで使用されているファイルが含まれています。ブートローダー。ブートローダ自体(/boot/grub/*Grubなど)やLinuxカーネル()のファイルを見つけることができ、/boot/vmlinuz*しばしば関連ファイルも見つけることができます。初期化プログラムまたはファイルシステムの初期化

PCから既存のBIOS(最新バージョンに比べてUEFI最新のコンピュータで利用可能)ROMのソフトウェアは起動ディスクの最初の512バイトをメモリ(ブートセクタ)。 512バイトしかない場合(すべてのコードは含まれておらず、一部はパーティションテーブルなどのデータを含む)、コードは多くの操作を実行できません。物理ディスクドライバが存在できません。この限られたスペースでできることは、BIOSインターフェースを使用してより多くのコードをロードすることです。このインタフェースはディスクのN番目のセクタをロードするコマンドを提供し、Nのサイズは制限されているため、ディスクの先頭にのみ到達できます。

BIOSインターフェースには少し発展した約30年ほどでしたが、サイズ制限がディスクサイズに追いつくのが難しく、結果として古いBIOSとブートローダが32MB、512MB、2GB、8GB(そしておそらく私が知らない他のしきい値)で実行されています。次の衝突を覚えておいてください。)ブートローダは、BIOSインターフェイスを使用してディスクドライブに直接アクセスするために必要なすべての部分をロードできる必要があります。ブートローダには通常、すべてのディスクコントローラ用のドライバが含まれていないため、Linuxカーネル(およびinitrd / initramfs)をロードする前のすべてのエントリはBIOSインターフェイスを使用する必要があるため、ディスクの先頭に収まる必要があります。

これは、Linux自体やディストリビューションではなく、BIOSまたはブートローダの制限です。

/boot今日は別にしてください

最新のBIOSと最新のブートローダまたはUEFIがインストールされているシステムでは、サイズ制限はもはや関連しません。これでディスクサイズに追いつくのに長い時間がかかります。ただし、別の/bootパーティションが役に立つ可能性がある他のユースケースもあります。これにより、メインシステムを次の場所に配置できます。RAIDデバイスブートローダでサポートされていないか、ファイルシステムタイプがブートローダでサポートされていません。これにより、メインシステムが暗号化されたデバイスに存在する可能性があり、Linuxはそれを復号化できますが、ブートローダは復号化できません。

これらの制限事項とユースケースのいずれも適用されない場合は、別々の/bootパーティションを維持することは役に立ちません。ただし、ほとんどのディストリビューションがサポートするのに十分な人に影響を与えます。

答え3

上記のBIOSの問題に加えて、もう1つの理由は、別のパーティションを使用すると、ブートローダが/boot理解できないボリュームに対してファイルシステムを使用できることです(ブロックリストのロードに制限されるのではなく)。/lilo

答え4

ディレクトリの存在は/boot歴史的に決定され、そこから「固定」されます。ファイルシステム階層標準。これらの標準を使用すると、プログラム(およびシステム管理者)が特定のファイルが特定の場所にあると予想することができます。この場合、起動プロセスに関連するファイルです。

古いBIOSでは、利用可能なすべてのドライブのブロック/セクタをインデックスできないため、ディスクの先頭にパーティションを設定することをお勧めし/bootます。したがって、ロードする必要がある情報はインデックス可能なセクタになければならず、したがって、/bootBIOSは別のデータ/プログラムをロードできる別のパーティション(低いセクタ番号)になければなりません(フルデータ/プログラムのアドレスを指定できます) 。 )。 BIOSを使用しないディスクの範囲)。

関連情報