这次实验主要完成一个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.aspGeneral setup --->
() 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 => 64KB, 17 => 128KB)
[*] Support for hot-pluggable devices
[*] Kernel Userspace Events
[*] Kernel .config support
[*] Configure standard kernel features (for small systems) --->
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中。
接下来进行操作系统的学习,系统了解操作系统的概念,并且开始学习一个小的但是典型的操作系统。