Qemu-ARM-Ubuntu 實驗二 Linux內核編譯

 

這次實驗主要完成一個linux內核的編譯

 

1. 下載內核文件

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2 tar jvxf linux-2.6.18.1.tar.bz2 cd linux-2.6.18.1   2. 清理已有的設置 make mrproper   3. 下載configure文件 wget http://opencsl.openfoundry.org/setting/linux-2.6.18.config make menuconfig ARCH=arm   4. 編譯內核 make ARCH=arm CROSS_COMPILE=arm-linux-uclibc- 這裏需要在sumversion.c中加入#include <linux/limits.h>   注意需要將auditing選項去掉,參見http://www.shx-arm.com/qianjichu26.asp  

General setup ---&gt;
() Local version - append to kernel release
[*] Support for paging of anonymous memory (swap)
[*] System V IPC
[*] POSIX Message Queues
[*] BSD Process Accounting
[*]  BSD Process Accounting version 3 file format
[*] Sysctl support
[ ] Auditing support
(15) Kernel log buffer size (16 =&gt; 64KB, 17 =&gt; 128KB)
[*] Support for hot-pluggable devices
[*] Kernel Userspace Events
[*] Kernel .config support
[*] Configure standard kernel features (for small systems) ---&gt;

 

http://forum.ubuntu.org.cn/viewtopic.php?f=97&t=231443&start=0

 

嘗試交叉編譯了ARM-Linux內核,基本方法網上已經有論述,就是下載kernel源代碼,然後
make ARCH=arm menuconfig
make bzImage
然後加載module之類

最後,kernel的image成功生成,但是加載module的時候失敗。分析原因是一些驅動的ko文件沒有
生成,基本的解決思路是在menuconfig裏取消這些驅動。這個問題沒有繼續往下做了,因爲已經花費
了較多時間了。

這個實驗基本瞭解了Kernel內核編譯的流程。注意很多時候,解決Kernel中的問題只需要簡單的取消對應
的選項就好了。因爲現在的Kernel規模很大,對應的drivers之類的也很多,全部選擇很容易出現編譯錯誤。
事實上並不是所有的驅動都需要編譯到Kernel中。

接下來進行操作系統的學習,系統瞭解操作系統的概念,並且開始學習一個小的但是典型的操作系統。

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