x86 Linux に組み込みシステム (mipsel) 用のクロスコンパイル ツールチェーンがあります。カスタムカーネル(イメージを「vmlinux」と呼びましょう)を構築する方法と、そのイメージを削除する方法を知っています
objcopy -S -O binary vmlinux vmlinux.bin
さらに処理するには、イメージのロード アドレスとエントリ ポイントも必要です。ストリッピングする前にscripts/mksysmap
、それらを介して、またはより明示的に決定することは問題ありません
nm -n vmlinux | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > System.map
次に、ロードアドレスとエントリポイントを決定できます
awk '/A _text/ { print "0x"$1; }' < _System.map
awk '/T kernel_entry/ { print "0x"$1; }' < System.map
ここでの課題は、カーネルを自分でビルドするのではなく、objcopyを介してシンボルを既に削除した後に、事前にビルドされたカーネルを取得することがあるということです。誰でもこれを行う方法を教えてもらえますか? 私はカーネルの構築とツールチェーンの使用にあまり精通していません。nmとobjdumpの両方が、ストリップされたイメージを気に入らず、次のように述べています。
vmlinux.bin: File format not recognized