예전서부터 계속 질문이 들어오기도 하고(몇년 되었습니다)
근래도 계속 질문이 들어오네요....
zImage = small bootloader + self extract code + kernel image
이고
u-boot용 image인
uImage = u-boot용 kernel header + kernel image
입니다.(aesop용은 aesopk라고 제가 이름을 바꿨습니다)
u-boot를 쓰신다면 되도록이면 uImage를 쓰시는게 편하고
zImage의 경우는 다른 부트로더나 아니면 특정 번지로 zImage를
다운로드만 하는 프로그램을 사용할 때 좋습니다.
그리고, u-boot에서 zImage를 사용할때는 go 명령을 쓰고
uImage를 사용할때는 bootm 명령을 씁니다.
u-boot용image의 경우는 self extract code가 없습니다. 압축해제가
u-boot에서 이루어 지기 때문이지요.
두개의 가장 큰 차이는
zImage는 u-boot에서 아무것도 파라미터가 넘어가지 않습니다.
즉, 완전 독립적인 녀석입니다.
해서 zImage에서 손대려면 zImage를 만들때 사용하는
arch/arm/boot/compressed/head.S에서 손을 대야합니다.
u-boot를 쓰는 이유는 그런 부분들을 좀 더 부트로더로 내리고, 커널과의
communication을 편하게 하기 위함입니다.
head.S와 같은 asm을 손대지 않고, C에서 처리하거나, 아니면 define
하나만으로 처리하기 위한 것이지요.
예전 2.4.x대의 pxa255나 strongARM의 영향으로 아직도 zImage를
많이 사용합니다.
제가 뭐라고 할 얘기는 아니지만 u-boot를 쓰신다면 u-boot에서 할 수 있는
부분은 좀 편하게 u-boot의 기능을 이용했으면 하는 겁니다.
실제로 몇가지만 세팅해 주면 알아서 넘어가거든요.
예를 들어 ethernet mac address의 경우도 u-boot에서 커널로 넘겨서
자동세팅하도록 할 수 있습니다.
^^