%20%E3%81%AE%E3%83%96%E3%83%BC%E3%83%88%20%E3%82%BB%E3%82%AF%E3%82%BF%E3%83%BC.png)
HEX ビューアを使用して、bzImage 形式の X86 アーキテクチャの vmlinuz Linux カーネル 3.14.28 を表示しています。ファイルのブート セクターは次のようになります。
2 つのパーティションが定義されています。アクティブなサイズ 18.9 GB の Ext2 ファイル システムを持つパーティション 1 と、内部に論理パーティションのない拡張パーティションです。これは、Linux カーネルが、ユーザーが自分のシステム上にこれらの 2 つのパーティションを作成したと想定していることを意味しますか? Linux カーネルがこれらの 2 つのパーティションを定義しているのはなぜですか?
答え1
このデータ ブロックは、Linux がフロッピーから起動され、ブート ローダーを必要としなかった時代の名残です。確かにこれはブート セクターですが、リアル モードの x86 コードを実行すると、単に「ブート ローダーを使用します。ディスクを取り出し、任意のキーを押して再起動してください」と表示されます。
最後のデータはパーティション テーブルではありませんが、最後のスペースは VGA モード、ルート デバイス、いくつかのフラグなどの設定をカーネルに伝えるために使用されました。値をもう少し詳しく調べると、パーティション テーブルとしては意味がないことがわかります。
ただし、ブート ブロックには依然として何らかの意味があるため、上で「ほとんど」と書きました。ファイルの先頭は、UEFI アプリケーションのようにも見えるように注意深く作成されており、カーネル自体が独自のブート ローダーとして機能することができます。ファイルはマジック ストリング MZ (DOS .exe と同様) で始まり、PE/COFF ヘッダーが含まれています。