第一个linux内核编译
最近看linux内核的书看的挺多,但是真正实践还几乎没有,所以就想来编个linux内核模块试试。
由于我装的虚拟机没有源码和相应的一些东东(例如build文件夹),所以先编译了内核。
1.先新建一台虚拟机,然后装好linux操作系统
2.下载一份linux内核源代码(我的是linux2.6.18),解压到虚拟机的某个目录下
3.使用make mrproper
[root@xyly linux-2.6.39.4]# make mrproper #去除内核的依赖关系及编译后的垃圾信息
4. 配置你所想要的内核模块
[root@xyly linux-2.6.39.4]# make menuconfig 或make xconfig 或 make gconfig
make menuconfig 在以菜单模式进入内核配置界面
make xconfig 是在图形界面模式进入内核配置界面
make gconfig 在图形界面模式进入内核配置界面
遇到一个问题就是用菜单模式安装失败,报缺少文件:
解决方法:
安装ncurses-devel,这个是红帽或者FC的安装程序,Ubuntu的需要安装libncurses5-dev
5.make命令编译内核
6.使用make modules命令编译内核
[root@xyly linux-2.6.39.4]# make modules #编译内核模块
6.使用make modules_install安装内核
安装成功后在/lib/modules 下有一个2.6.18的目录。里面放的是新内核可加载的所有模块
7. 编译安装 make install
sh /root/linux-2.6.39.4/arch/x86/boot/install.sh 2.6.39.4 arch/x86/boot/bzImage \
System.map "/boot"
内核安装完毕
8.[root@xyly boot]# ll initrd-2.6.39.4.img
-rw------- 1 root root 2722020 Aug 29 14:43 initrd-2.6.39.4.img
[root@xyly boot]# pwd
/boot
9.设置启动顺序,把刚编译的内核添加到grub中
(啊 哦、惊讶!!! 内核启动已经添加进去了,省的动手了)
修改/etc/grub.conf 中的default 启动顺序 如下
default=0
重启下系统,看看是否内核升级了。
[root@xyly ~]# uname -r
2.6.39.4
OK !!! 升级完毕!