Wikipediaの説明はbzImage
本当に混乱しています。
上の画像はWikipediaからのものですが、その横にある行は次のとおりです。
bzImageファイルは特定の形式になっています。 bootsect.o + setup.o + Misc.o + Piggy.oが接続されて含まれています。
画像に他の人(および)が見つかりませんmisc.o
。また、これらのオブジェクトファイルをより明確に理解したいと思います。 piggy.o
に関する情報この投稿また、ファイルを起動できない理由もvmlinux
本当に混乱しています。
もう一つの疑いはについてです。System.map
どのように接続されていますかbzImage
?vmlinux
createの前にシンボルが含まれていることを知っていますbzImage
。しかし、起動時にどのようにbzImage
接続しますかSystem.map
?
答え1
Linux 2.6.22 までは以下bzImage
が含まれます。
- bブーツセクト(
bootsect.o
): - 設定(
setup.o
) - bvmlinux(
head.o
、misc.o
、piggy.o
)
Linux 2.6.23はbbootsectとbsetupを1つにまとめます(header.o
)。
起動時に、カーネルはシステムを必要な使用可能な状態にするために必要ないくつかのシーケンス(上記のヘッダファイルを参照)を初期化する必要があります。実行時にこれらのシーケンスはもはや重要ではありません(それでは、なぜ実行中のカーネルに含めるのですか?)。
System.map
関連するvmlinux
、bzImage
コンテナを圧縮し、起動時に解凍するだけですvmlinux
(=>bzImage
あまり気にしないSystem.map
)。
Linux 2.5.39がリリースされましたCONFIG_KALLSYMS
。有効にすると、カーネルは独自のシンボルマップ(/proc/kallsyms
)を保持します。
System.map
たとえば、デバッグ目的klogd
でユーザースペースプログラムで主に使用されます。ksymoops
配置される場所は、System.map
それを参照するユーザースペースプログラムによって異なります。または からシンボルマップを取得します
ksymoops
。 、およびで検索してください。/proc/ksyms
/usr/src/linux/System.map
klogd
/boot/System.map
/System.map
/usr/src/linux/System.map
/boot/System.map
カーネル2.6.27.19を使用するLinuxシステムでは、削除しても問題は発生しません。