Determine o endereço de carregamento e o ponto de entrada da imagem do Kernel Linux removido
Tenho uma cadeia de ferramentas de compilação cruzada para um sistema incorporado (mipsel) no meu x86 Linux. Eu sei como construir um kernel personalizado (vamos chamar a imagem "vmlinux") para ele e como remover essa imagem via
objcopy -S -O binary vmlinux vmlinux.bin
Para processamento adicional, também preciso do endereço de carregamento e do ponto de entrada da imagem.Ante decapagem não é problema para determiná-los viascripts/mksysmap
ou, mais explicitamente, via
nm -n vmlinux | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > System.map
Em seguida, posso determinar o endereço de carga e o ponto de entrada via
awk '/A _text/ { print "0x"$1; }' < _System.map
awk '/T kernel_entry/ { print "0x"$1; }' < System.map
Agora, o desafio é que às vezes eu não construo o kernel sozinho, mas obtenho um kernel pré-construídodepois d já foi despojado de seus símbolos via objcopy. Alguém pode me dizer como fazer isso? Eu não sou muito proficiente na construção de kernel e no uso de cadeias de ferramentas. Ambos nm e objdump não gosta da imagem despojada, dizendo
vmlinux.bin: File format not recognized