Ich habe eine Crosscompiling-Toolchain für ein eingebettetes System (Mipsel) auf meinem x86-Linux. Ich weiß, wie ich einen benutzerdefinierten Kernel (nennen wir das Image "vmlinux") für dieses System erstellen kann und wie ich dieses Image über
objcopy -S -O binary vmlinux vmlinux.bin
Für die weitere Verarbeitung benötige ich auch die Ladeadresse und den Eintrittspunkt des Bildes. Vor Abisolieren ist es kein Problem, sie über scripts/mksysmap
oder, genauer gesagt, über
nm -n vmlinux | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > System.map
Dann kann ich die Ladeadresse und den Einstiegspunkt über
awk '/A _text/ { print "0x"$1; }' < _System.map
awk '/T kernel_entry/ { print "0x"$1; }' < System.map
Die Herausforderung besteht nun darin, dass ich den Kernel manchmal nicht selbst baue, sondern einen vorgefertigten Kernel bekomme nach die Symbole wurden bereits über objcopy . Kann mir jemand sagen, wie man das macht? Ich bin nicht sehr bewandert in der Erstellung von Kerneln und der Verwendung von Toolchains. Beide nm y objdump mögen das gestrichene Bild nicht und sagen
vmlinux.bin: File format not recognized