Ich habe mal hierzu ein wenig was gefummelt:
Code: Alles auswählen
#
# TODO: kernel.bin besorgen und nach HD51 kopieren.
#
Es gibt eine Norm für das ARM Linux zImage :
0x24 0x016F2818 > Magic number used to identify this is an ARM Linux zImage
0x28 start address >The address the zImage starts at
0x2C end address > The address the zImage ends at
Mit end address erhält man also die Kernel Länge für das zImage.
Bei den E2 Kernel reicht das schon, aber die NI / DDT Images haben noch den DTB hinten dran hängen den man auch auslesen muss. Markiert ist die Magic Start und Länge, das muss man hier von rechts nach links lesen also : 0x004c2488 für die Kernel Länge.
Ab der Adresse hängt der DTB: Hier die DTB-Magic und DTB Länge markiert, muss man hier von links nach rechts lesen also : 0x00001891 für die DTB Länge.
Die beiden Längen addiert > erhält man die Kernel Länge von NI / DDT Kernel.
Das macht das kleine Bash Script:
Ermittelt die Root Partition > daraus logisch die passende Kernel Partition.
Ermittelt Kernel und DTB Länge, addiert die beiden.
Liest den Kernel mit dd aus der Kernel Partition, und speichert den in /tmp/hd51 ( <- klein ) Rechte 755, .txt entfernen, klar.
So landet immer der passende Kernel im Image Backup.