第二章开始进入到实际的编程了。第一个测试代码:Hello World。
第一件事就是建立测试系统。
我安装的系统是rhel-5.1-server-i386-dvd.iso,你可以到网上下载其他版本。里面自带的内核版本是2.6.18-53.e15。我觉得不爽,在kernerl.org镜像网站上下了linux-2.6.29.tar.bz2安装包,准备安装自己的内核。
(1)将其解压到/home目录下
#tar xjvf linux-2.6.29.tar.bz2
#cd linux-2.6.29
# pwd
/home/linux-2.6.29
(2)清理内核中间文件,配置文件
#cd linux-2.6.29
#make distclean
(3)选择参考配置文件
使用正在运行的RHEL5的内核配置作为参考
#cp /boot/config-2.6.18-53.el5 .config
解释一下,这里是将当前内核运行的配置文件拷贝出来作为我们的配置文件。
(4)配置内核
#make menuconfig
这里使用默认的配置即可,退出。
(5)编译内核
#make bzImage
一片片字符飘过……..,完成后,生成的内核映像bzImage位于arch/x86/boot/目录下。
(6)编译和安装内核模块
#make modules
#make modules_install
又是一片片字符飘过…….,完成安装后,编译好的内核模块会从内核源代码目录拷贝至/lib/modules下,可以看到在目录/lib/rnodules生成了2.6.29目录。
(7)制作init ramdisk
#cd /home
#mkinitrd initrd-2.6.29 2.6.29
完成操作后,在当前目录下会生成initrd-2.6.29
(8)安装内核
Linux启动时,会从/boot目录下来寻找内核文件与init ramdisk,所以需要将内核和init ramdisk拷贝至/boot目录下。
#cp /home/linux-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29
#cp /home/initrd-2.6.29 /boot/
(9)修改grub配置文件
为了让grub在启动时能提供一项我们自己制作的linux内核的选择项,需要修改grub的配置文件
#vim /etc/grub.conf
在文件的末位添加:
title My Linux (2.6.29)
root(hd0,0)
kernel /vmlinuz-2.6.29 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.29
哈哈,结束了。。。重启系统,就可以在grub菜单里看到我们自己制作的一项:
My Linux (2.6.29)
掌声响起来。。。。
进入linux系统,在终端下输入:
#uname –r
出现:2.6.29 ,证明刚才启动的linux系统就是运行在2.6.29内核版本上。
好的,自己的系统搭建起来了,下面可以进入驱动模块的编写和测试了。