[Linux] Kernel 이미지(zImage) 구조

gzip 으로 압축된 ramdisk 를 포함하는 zImage 는 다음과 같은 구조를 가진다.
zImage
– decompression code
– piggy.gz + piggy trailer
 + piggy.gz
  + piggy
   + kernel image
   + initramfs.cpio.gz + part3
    + initramfs.cpio.gz
     + initramfs.cpio
      + initramfs/
    + padding3
    + part3
  + padding piggy
  + piggy trailer

[Android] boot.img 구성

Android 에서 사용되는 boot.img 는 다음과 같이 구성되어 있다(ICS 기준).
각 구성부는 Page 크기에 맞춰 Align 되어 있다.
– Boot Image Header(1 page) (system/core/mkbootimng/bootimg.h 참고)
 + magic(8 bytes) : ANDROID!
 + kernel size(4 bytes)
 + kernel address(4 bytes)
 + ramdisk size(4 bytes)
 + ramdisk address(4 bytes)
 + second stage size(4 bytes)
 + second stage address(4 bytes)
 + kernel tags physical address(4 bytes)
 + page size(4 bytes)
 + reserved(8 bytes) : Should be 0
 + product name(16 bytes)
 + cmdline(512 bytes)
 + id(32 bytes) : timestamp, checksum, sha1, etc
– Kernel(zImage)
– Ram Disk
– Second stage