Howto compile Openmoko kernel for Neo Freerunner/zh tw

From Openmoko

Revision as of 10:16, 19 July 2009 by Glenn (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

怎麼編譯 Openmoko 的 kernel for Neo FreeRunner 呢?請依照以下步驟進行操作。

1. 取得 Neo FreeRunner 的 kernel 原始碼

Openmoko 專案的所有原始碼都存放於 git.openmoko.org,到 [Openmoko 的 kernel 原始碼目錄樹] 底下,可以看到裡頭有完整的 kernel 原始碼,以及開發中的分支。首先執行以下指令,將所有的 kernel 原始碼取出:

$ git clone git://git.openmoko.org/git/kernel.git linux-2.6

所有的原始碼都被放置於 linux-2.6/ 目錄下。

2. 取出 Andy 的 branch

Andy 是 Openmoko 的 kernel 開發者,我們想要使用的是開發中的版本,就要取出 Andy 的分支。Openmoko 的 kernel 開發者,會隨時將新程式碼放置於開發中的版本。Openmoko 的 kernel 也會與 mainline 的 kernel 做合併(patch merge)的動作。取出 Andy branch 的指令如下:

$ cd linux-2.6 $ git checkout origin/andy-tracking

3. 取得 GTA02 的 kernel 設定檔

Openmoko 提供 GTA01/GTA02/GTA03 的 kernel 設定檔,只要將 GTA02(Neo FreeRunner)的設定檔取出使用即可,不需要再自行設定 kernel 選項:

$ cp arch/arm/configs/gta02_moredrivers_defconfig .config

4. 取得 Openmoko 的 toolchain

要編譯 kernel 就需要 cross toolchain,Openmoko 提供一份預先建立好的 ARM9 toolchain,請由 [這裡] 下載。請下載 20080916 的版本,例如:openmoko-i686-20080916-arm-linux-gnueabi-toolchain.tar.bz2。

Toolchain 的安裝方式是先切換到根目錄('/'),再解壓縮:

$ cd / $ sudo tar jxf <your-path>/openmoko-i686-20080916-arm-linux-gnueabi-toolchain.tar.bz2

解壓後,可以在 /usr/local/openmoko 目錄下找到 toolchain。

5. 下載 build-kernel.sh/build-image.sh/mkimage

到 [這裡] 下載二個 script 以及 mkimage 工具,並放置於 kernel 原始碼目錄下。別忘了變更屬性為可執行:

$ chmod a+x build-*.sh

另外,將 mkimage 變更屬性後,搬移到系統標準路徑下:

$ chmod a+x mkimage $ sudo mv mkimage /usr/sbin

Neo FreeRunner 使用 U-Boot 開機程式,所以必須使用 mkimage 工具將 kernel image 包裝成 U-Boot 格式。此工具的原始碼於 U-Boot 原始碼目錄裡可取得。

6. 開始編譯 kernel

先執行 build-kernel.sh 編譯 kernel:

$ ./build-kernel.sh

編譯成功後,再執行 build-image.sh 以產生最後的 image 檔:

$ ./build-image.sh

完成後,可在 kernel 原始碼目錄下找到 'uImage-GTA02.bin' 檔案。uImage-GTA02.bin 就是支援 Neo FreeRunner 的 kernel image 檔,將此檔案以 dfu-util 燒錄到手機裡即可。

以上過程若有任何問題,可以到 [Openmoko 正體中文站] 詢問。

Personal tools

怎麼編譯 Openmoko 的 kernel for Neo FreeRunner 呢?請依照以下步驟進行操作。

1. 取得 Neo FreeRunner 的 kernel 原始碼

Openmoko 專案的所有原始碼都存放於 git.openmoko.org,到 [Openmoko 的 kernel 原始碼目錄樹] 底下,可以看到裡頭有完整的 kernel 原始碼,以及開發中的分支。首先執行以下指令,將所有的 kernel 原始碼取出:

$ git clone git://git.openmoko.org/git/kernel.git linux-2.6

所有的原始碼都被放置於 linux-2.6/ 目錄下。

2. 取出 Andy 的 branch

Andy 是 Openmoko 的 kernel 開發者,我們想要使用的是開發中的版本,就要取出 Andy 的分支。Openmoko 的 kernel 開發者,會隨時將新程式碼放置於開發中的版本。Openmoko 的 kernel 也會與 mainline 的 kernel 做合併(patch merge)的動作。取出 Andy branch 的指令如下:

$ cd linux-2.6 $ git checkout origin/andy-tracking

3. 取得 GTA02 的 kernel 設定檔

Openmoko 提供 GTA01/GTA02/GTA03 的 kernel 設定檔,只要將 GTA02(Neo FreeRunner)的設定檔取出使用即可,不需要再自行設定 kernel 選項:

$ cp arch/arm/configs/gta02_moredrivers_defconfig .config

4. 取得 Openmoko 的 toolchain

要編譯 kernel 就需要 cross toolchain,Openmoko 提供一份預先建立好的 ARM9 toolchain,請由 [這裡] 下載。請下載 20080916 的版本,例如:openmoko-i686-20080916-arm-linux-gnueabi-toolchain.tar.bz2。

Toolchain 的安裝方式是先切換到根目錄('/'),再解壓縮:

$ cd / $ sudo tar jxf <your-path>/openmoko-i686-20080916-arm-linux-gnueabi-toolchain.tar.bz2

解壓後,可以在 /usr/local/openmoko 目錄下找到 toolchain。

5. 下載 build-kernel.sh/build-image.sh/mkimage

到 [這裡] 下載二個 script 以及 mkimage 工具,並放置於 kernel 原始碼目錄下。別忘了變更屬性為可執行:

$ chmod a+x build-*.sh

另外,將 mkimage 變更屬性後,搬移到系統標準路徑下:

$ chmod a+x mkimage $ sudo mv mkimage /usr/sbin

Neo FreeRunner 使用 U-Boot 開機程式,所以必須使用 mkimage 工具將 kernel image 包裝成 U-Boot 格式。此工具的原始碼於 U-Boot 原始碼目錄裡可取得。

6. 開始編譯 kernel

先執行 build-kernel.sh 編譯 kernel:

$ ./build-kernel.sh

編譯成功後,再執行 build-image.sh 以產生最後的 image 檔:

$ ./build-image.sh

完成後,可在 kernel 原始碼目錄下找到 'uImage-GTA02.bin' 檔案。uImage-GTA02.bin 就是支援 Neo FreeRunner 的 kernel image 檔,將此檔案以 dfu-util 燒錄到手機裡即可。

以上過程若有任何問題,可以到 [Openmoko 正體中文站] 詢問。