16

ほとんどのマシンにはSystem.mapファイルがないため、vmlinuzからSystem.mapを生成したいと思います。実際、vmlinuzはvmlinuzまたはbzImageに圧縮されています。

これを実行できるツールやスクリプトはありますか?

私は試した:

dd if=/boot/vmlinuz skip=`grep -a -b -o -m 1 -e $'\x1f\x8b\x08\x00' /boot/vmlinuz | cut -d: -f 1` bs=1 | zcat > /tmp/vmlinux

失敗しました:

zcat: stdin: not in gzip format
32769+0 records in
32768+0 records out
4

4 に答える 4

22

圧縮されていないカーネルをカーネル イメージから抽出するには、カーネル ツリーextract-vmlinuxのディレクトリからスクリプトを使用できscriptsます (少なくともカーネル バージョン 3.5 で利用可能) (次のようなエラーが発生した場合)。

mktemp: 一時ファイル /tmp/vmlinux-XXX を作成できません: 引数が無効です

$(mktemp /tmp/vmlinux-XXX)スクリプトでbyに置き換える必要があり$(mktemp /tmp/vmlinux-XXXXXX)ます)。コマンドは/path/to/kernel/tree/scripts/extract-vmlinux <kernel image> >vmlinux.

抽出されたカーネル バイナリにシンボル情報が含まれている場合は、同じサブディレクトリからスクリプトSystem.mapを使用してファイルを作成できるはずです¹ 。mksysmapここでのコマンドはNM=nm /path/to/kernel/tree/scripts/mksysmap vmlinux System.map.

¹ 私のディストリビューションに同梱されているカーネル イメージは削除されているように見えるため、スクリプトはシンボルを取得できませんでした。

于 2012-08-17T09:00:08.763 に答える