Mam cross-toolchain toolchain dla systemu wbudowanego (mipsel) na moim systemie x86 Linux. Wiem, jak zbudować własne jądro (nazwijmy obraz „vmlinux”) dla niego i jak rozebrać ten obraz poprzezOkreśl adres ładowania i punkt wejściowy usuniętego obrazu jądra systemu Linux
objcopy -S -O binary vmlinux vmlinux.bin
Dla dalszego przetwarzania muszę również adres obciążenia oraz punkt wejścia obrazu. Przed stripping to nie ma problemu, aby określić je poprzez scripts/mksysmap
lub bardziej wyraźny, poprzez
nm -n vmlinux | grep -v '\([aNUw] \)\|\(__crc_\)\|\(\$[adt]\)' > System.map
Wtedy mogę określić adres obciążenia oraz punkt wejścia poprzez
awk '/A _text/ { print "0x"$1; }' < _System.map
awk '/T kernel_entry/ { print "0x"$1; }' < System.map
Teraz wyzwaniem jest to, że czasami Nie buduję jądra samodzielnie, ale otrzymuję gotowe jądro po zostało już pozbawione jego symboli poprzez objcopy. Czy ktoś może mi powiedzieć, jak to zrobić? Nie jestem biegły w budowaniu jądra i używaniu toolchain. Zarówno nm i objdump nie podoba się uproszczoną obraz, mówiąc
vmlinux.bin: File format not recognized
Opłakane dzięki za tę odpowiedź.Niestety nie otrzymałem powiadomienia o odpowiedzi przez e-mail, przepraszam. Właściwie udało mi się znaleźć inny sposób na znalezienie adresu ładowania i punktu wejścia, ale moje rozwiązanie było specyficzne dla sytuacji i nie można go zastosować ogólnie, więc nie cytuję go tutaj. Powiem tylko, że proponowane przez ciebie rozwiązanie tworzy plik ELF, ale plik nie zawiera pożądanych informacji o relokacji. W związku z tym informacji nie można wyodrębnić z niego za pomocą 'nm -n'. Dzięki za odpowiedź mimo to. – kriegaex