本文转载于网络,侵权删。
原文链接:https://www.cnblogs.com/jeffkuang/articles/3699955.html
由于需要在PC机上做一些Linux驱动的实验,来学习《linux设备驱动开发技术及应用》这本书,最近在ubuntu上配置、编译、安装了更老一些的内核。原来ubuntu11.10自带的内核是linux-3.0.0-12的,我改为了linux-2.6.39.4版本的。过程主要参考《Ubuntu环境下编译linux-2.6.36内核操作手册》。
以下过程全部在root权限下操作。
1、 安装必备软件编译工具:
#apt-get install libncurses5-dev build-essential kernel-package
注意:
(1)libncurses5-dev是为之后配置内核能运行 make menuconfig程序做准备
Build-essential为编译工具,kernel-package是编译内核工具
(2)如果系统显示无法查找到这三个文件,输入#apt-get update更新数据源。
2、 下载内核
去www.kernel.org下载你需要的内核版本的源代码:linux-3.6.39.4.tar.bz2
3、 将源码放在windows下的共享目录内,这样在linux下就可以看到并操作了。
我在linux下的共享目录为:
linux@xiangpingli:~/桌面/share$ pwd
/home/linux/桌面/share
linux@xiangpingli:~/桌面/share$ ls
linux-2.6.39.4.tar.bz2 vimrc.tiny3
4、 将该压缩包拷贝到/usr/src/目录下解压
5、 配置内核:
建议使用当前系统配置文件,使用当前系统配置文件方法:
#cp /boot/config-XX ./.config,然后进入menuconfig选择load选项。
6、 编译内核:
make,这可能需要2~3个小时的时间。
7、加入模块
#make modules_install
8、生成可执行的内核引导文件
#make bzImage
#cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.39.4
9、将System.map复制到/boot下:
#cp System.map /boot/System.map-2.6.39.4
10、生成initrd.img文件
#cd /lib/modules/2.6.39.4
#update-initramfs –c –k 2.6.39.4
11、自动查找新内核,并添加至grub引导
#update-grub
12、修改/boot/grub/grub.cfg文件,将几个timeout的值设为10
这样grub在引导的时候就会出现10秒的停留,如果有按键输入,则可以对内核镜像进行选择