我的 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