x86システムのLinuxカーネル(vmlinuz)のブートセクタ、bzImage形式

x86システムのLinuxカーネル(vmlinuz)のブートセクタ、bzImage形式

16進ビューアを使用して、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ヘッダーが含まれています。

おすすめ記事