第二章 构造和运行模块(1)

第二章开始进入到实际的编程了。第一个测试代码: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内核版本上。

 

好的,自己的系统搭建起来了,下面可以进入驱动模块的编写和测试了。

 

 

你可能感兴趣的:(第二章 构造和运行模块(1))