接触Linux也有一段时间了,从开始在学校的时候听说Linux很强大,在服务器那个天下占据了大大半江山。为了就业着想就开始琢磨,搞了一张光盘各种百度谷歌后在虚拟机里开始安装,当然是那种最傻瓜的安装方式,竟然成功了,只是开机后好失望好不习惯,尤其是鼠标右键后,列表中竟然没有刷新那项,只能默默的在其它地方点左键结束。好歹咱也是计算机科班的,不能和他们一般见识,自认为很牛叉的在vi中编辑了谭浩强老先生教给我们的第一个c程序,用gcc编译后hello word的出现高兴的不得了。从此开始了装牛叉,毕竟那时候课程里还没有Linux这门课程,好多同学都没听过Linux是啥东东。毕竟没有windows中的集成开发环境好用,所以就很少用,直到Linux基础课程和嵌入式课程的学习才真正的一直脚踏入了Linux这个领域,学习了基本的命令使用和基本概念,写一些简单的程序自娱自乐。进入公司后由于项目的需求开始学习并实践简单Linux字符驱动程序,后来做了一些PCI驱动和USB驱动,但是每每到内核编译都望而却步,今天心血来潮学习下Linux内核编译。
环境:VmWare WorkStation 9 + NeoKylin (Linux 2.6.32内核)
内核源码:linux-2.6.38.tar.bz2 下载地址http://www.linuxdiyf.com/blog/batch.viewlink.php?itemid=2277
内核编译过程:
1. 拷贝linux-2.6.38.tar.bz2源码到/usr/src/. cp /mnt/hgfs/share/linux-2.6.38.tar.bz2 /usr/src/
2. 进入内核源码地址:cd /usr/src/
3. 解压内核源码:tar xf linux-2.6.38.tar.bz2
3. 建立符号链接:ln -s linux-2.6.38 linux
4. 进入内核根目录:cd /usr/src/linux/
5. 删除源代码目录中残留的.o和其它从属文件:make mrprobe
6. 配置内核:make config, make menuconfig.
这里直接用原系统配置文件. cp /boot/config-2.6.32-** ./.config
7. 建立依赖关系:make dep
8. 清楚内核编译的目标文件:make clean
9. 编译内核:make, make zImage
在目录/usr/src/arch/i386/boot/可以看到bzImage文件
10. 编译可加载模块:make modules
11. 将编译好的模块加入到系统中:make modules_install
13. 将内核安装到grub启动项中:make install
14. reboot 启动后看到启动项中多了一项,选择进入系统查看(uname -a)就是我们刚编译的内核2.6.38.
谨以此文记录一下学习内核编译的过程,其中内核配置过程中的各个配置项选择据具体环境而定,还需进一步学习和理解。