[ubuntu] vmlinux to uImage - 2탄
앞서 mkimage를 설치하여 만반의 준비가 되었다.
그러나!!!!!
uImage는 그냥 만드는 것이 아니었다.
vmlinux -> linux.bin(바이너리 파일) -> linux.bin.gz(압축파일) -> uImage (완성!!)
(arm-linux-objcopy사용) (gzip사용)(mkimage사용)
의 순으로 완성이 되는 것이었다.
그래서 순서대로 하였다.
1. 먼저 바이너리 이미지 만들기: arm-linux-objcopy
root@ubuntu:/home/lebych/works/ARM/linux/temp/kernel-2.6.13# /usr/local/arm/3.4.1/bin/arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
root@ubuntu:/home/lebych/works/ARM/linux/temp/kernel-2.6.13# ll
total 8316
-rwxr-xr-x 1 root root 3295600 2009-12-10 07:44 linux.bin
-rwxr-xr-x 1 root root 4190069 2009-12-10 07:11 vmlinux
위와 같이 linux.bin 파일이 생겨났다. 크기는 25% 줄었다.
2. 압축하기: gzip
root@ubuntu:/home/lebych/works/ARM/linux/temp/kernel-2.6.13# gzip -9 linux.bin
root@ubuntu:/home/lebych/works/ARM/linux/temp/kernel-2.6.13# ls linux.bin.gz
linux.bin.gz
3. 마지막 uImage 만들기: mkimage
root@ubuntu:/home/lebych/works/ARM/linux/temp/kernel-2.6.13# mkimage -A arm -O linux -T kernel -C gzip -a 0x30008000 -e 0x30008000 -n "Linux Kernel Image" -d linux.bin.gz uImage
Image Name: Linux Kernel Image
Created: Thu Dec 10 07:46:19 2009
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1524645 Bytes = 1488.91 kB = 1.45 MB
Load Address: 0x30008000
Entry Point: 0x30008000
root@ubuntu:/home/lebych/works/ARM/linux/temp/kernel-2.6.13#ll-rwxr-xr-x 1 root root 4190069 2009-12-10 07:11 vmlinux
-rwxr-xr-x 1 root root 1524645 2009-12-10 07:44 linux.bin.gz
-rw-r--r-- 1 root root 1524709 2009-12-10 07:46 uImage
일단 'uImage'가 잘 만들어졌다.
테스트를 위해 시작번지는 임의로 넣었다.
내가 가지고 있는 mini2440 platform에서와는 다를 것이라고 생각되지만,
같을 가능성도 다분히 있을 것 같다. 일단, 보드 스펙을 보기 전이라서 업로드 할 때 확인 해야겠다.
그리고, 예전에 알기로는 이미지를 압축을 할 것인지 안할 것인지에 따라서도 gzip과정을 생략할 수 있었던 것 같았다.
자세한 내용은 이후 다시 올릴 때 확인해야겠다.