У меня есть набор инструментов для кросс-компиляции для встроенной системы (mipsel) на моем Linux x86. Я знаю, как создать для него собственное ядро (назовем его образ "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