私は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
ます。したがって、ロードする必要がある情報はインデックス可能なセクタになければならず、したがって、/boot
BIOSは別のデータ/プログラムをロードできる別のパーティション(低いセクタ番号)になければなりません(フルデータ/プログラムのアドレスを指定できます) 。 )。 BIOSを使用しないディスクの範囲)。