2. ubuntu下載編譯運行linux kernel

一. 引言

誠如老羅所言,android源代碼裏面並沒有帶linux kernel代碼。它使用的是預先編譯好的kernel,大家可以使用adb shell cat proc/version就可以查看到,如下:

android@ubuntu:~/working_directory$ adb shell cat proc/version

Linux version 2.6.29-00261-g0097074-dirty ([email protected]) (gcc version 4.4.0 (GCC) ) #20 Wed Mar 31 09:54:02 PDT 2010

android@ubuntu:~/working_directory$ 


從kernel版本可以看到現在使用的還是google在2010編譯的kernel,那怎麼下載/編譯/運行自己的kernel呢?


二. 下載kernel

下載方法請參考老羅的博客

http://blog.csdn.net/luoshengyang/article/details/6564592

不過有個地方要注意,跟第1篇帖子類似,由於地址被牆,不能下載成功(至少我沒有成功...)

所以得去清華大學的鏡像站下載


下載地址https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git

1. 新建kernel目錄

mkdir kernel 

cd kernel


2. git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git


clone完成後進入goldfish目錄

3. cd goldfish


4. git branch -a 查看遠程分支

android@ubuntu:~/working_directory/kernel/goldfish$ git branch -a

* master

  remotes/origin/HEAD -> origin/master

  remotes/origin/android-3.10

  remotes/origin/android-3.18

  remotes/origin/android-3.4

  remotes/origin/android-goldfish-2.6.29

  remotes/origin/android-goldfish-3.10

  remotes/origin/android-goldfish-3.10-l-mr1-dev

  remotes/origin/android-goldfish-3.10-m-dev

  remotes/origin/android-goldfish-3.18-dev

  remotes/origin/android-goldfish-3.4

  remotes/origin/android-goldfish-3.4-l-mr1-dev

  remotes/origin/linux-goldfish-3.0-wip

  remotes/origin/master

android@ubuntu:~/kerle_test/goldfish$ 


5. 切換到android-goldfish-2.6.29分支,因爲這個分支和2.3版本是最相近的。

git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29  


6. 查看本地分支和遠程分支對應情況

git branch -avv


wKioL1bDCxKhJFfZAAI9TZphAv8948.png



可以看到我們本地所處的android-goldfish-2.6.29分支和遠程分支“4bb8fa0 [origin/android-goldfish-2.6.29] goldfish: Add encrypted SD Card support.”是對應的。


至此,kernel代碼就下載完成了。


另外,我發現默認下載的kernel文件夾是goldfish,不知道爲啥老羅的是common,也許他的git命令指定了文件夾吧。


三. 編譯kernel

編譯kernel的話請參考老羅的方法,配置交叉編譯環境,使用make命令編譯

http://blog.csdn.net/luoshengyang/article/details/6564592


ps:

make menuconfig是啓動配置菜單,可以配置編譯選項。


四. 運行自己的kernel

emulator -kernel ./kernel/common/arch/arm/boot/zImage


老羅的命令是emulator -kernel ./kernel/common/arch/arm/boot/zImage &


但是發現沒有這個&也是可以運行的


五. 驗證是不是自己的kernel

等模擬器啓動完成後,跟第一步一樣,在命令行裏面輸入adb shell cat proc/version

查看輸出的內容和第一步是不是不一樣了呢?



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章