核心的引導步驟如下:
(1)用U-boot 的mkimage 工具處理核心映像zImage。
(2)通過網路、串口、USB 磁碟機、SD 記憶卡等方式將處理過的核心映像傳輸到SDRAM 的一定
位置(一般使用0x30008000)
(3)然後使用”bootm"等核心引導命令來啟動核心。
為什麼要用U-boot 的mkimage 工具處理核心映像zImage?
因為在用bootm 命令引導核心的時候,bootm 需要讀取一個64 位元組的檔案頭,來擷取這
個核心映象所針對的CPU 體繫結構、OS、載入到記憶體中的位置、在記憶體中進入點的位置以
及映象名等等資訊。這樣bootm 才能為OS 設定好啟動環境,並跳入核心映象的進入點。而
mkimage 就是添加這個檔案頭的專用工具。具體的實現請看U-boot 中bootm 的源碼和
mkimage 的源碼。
mkimage 工具的使用:
參數說明:
-A 指定 CPU 的體繫結構,可用值有:alpha、arm 、x86、ia64、mips、mips64、
ppc 、s390、sh、sparc 、sparc64、m68k 等
-O 指定作業系統類型,可用值有:openbsd、netbsd、freebsd、4_4bsd、linux、
svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、
rtems、artos
-T 指定映象類型,可用值有:standalone、kernel、ramdisk、multi、firmware、script、
filesystem
-C 指定映象壓縮方式,可用值有:
none 不壓縮(一般使用這個,因為zImage 是已經被bzip2 壓縮過的自解壓核心)
gzip 用gzip 的壓縮方式
bzip2 用bzip2 的壓縮方式
-a 指定映象在記憶體中的載入地址,映象下載到記憶體中時,要按照用 mkimage 製作映象
時,這個參數所指定的地址值來下載
-e 指定映象啟動並執行進入點地址,這個地址就是-a 參數指定的值加上0x40(因為前面有個
mkimage 添加的0x40 個位元組的頭)
-n 指定映象名
-d 指定製作映象的源檔案
以下是製作核心映像的命令樣本:
mkimage -n 'tekkaman' -A arm -O linux -T kernel -C none -a 0x30008000 -e
0x30008040 -d zImage zImage.img