1.升级环境
系统版本: Ubuntu 12.04 LTS
Kernel版本:3.2.0.51
升级的目标kernel:3.6.0
2.下载内核
从下载kernel源码linux-3.6.tar.gz,解码到/usr/src或工作目录下,角解码到工作目录下:
tar zxvf /home/liulijun/linux-3.6.tar.gz
3.清除旧的编译文件和配置文件
cd linux-3.6
sudo make mrproper //清除以前曾经编译过的旧文件和配置文件(第一次编译不用执行)
4.配置内核
可以使用当前正在使用的内核的配置文件,也可以自己新创建一个内核配置文件,我使用的是当前正在使用的内核的配置文件,按如下方式操作:
cd linux-3.6
cp /boot/config-3.2.0-51-generic-pae ./.config
make menuconfig
会弹出Linux/i386 3.6.0 Kernel Configuration的对话框,在该界面上选中“Load an Alternate Configuration File”,如下图:
按Enter键,弹出另一个对话框,如下图:
在红框中输入配置文件名(默认为.config),选中”ok”,按Enter键退出到上图中,然后再退出,最终会弹出是否保存配置文件的对话框,如下图:
选中“Yes”,按Enter键保存。
5.编译和安装内核
cd linux-3.6
make –jN(其中N代表同时允许多少个任务进行编译)
sudo make modules_install //安装模块,最终会将模块安装在/lib/modules/3.6.0+下,其中3.6.0代表安装的内核版本
sudo make install //安装内核,会将新内核编译出的System.map, initrd.img, vmlinuz, config文件拷贝到/boot文件夹中,如下图红框中是拷贝的文件:
此外,该步骤还会更新/boot/grub/menu.list(如果没有该文件会提示生成)列表,将新安装的内核添加到该文件中。
6.更新配置grub引导列表
grub在引导系统时是通过其配置文件grub.cfg进行引导的,为了能够让grub默认引导新安装的内核必须配置grub.cfg。
cd /boot/grub
sudo chmod 644 grub.cfg
参考grub.cfg中已有的menuentry,将新内核的menuentry放在已有内核的menuentry前面(因为grub.cfg中默认启动第一个内核set default=”0”),新增加的menuentry如下:
menuentry 'Ubuntu, Linux 3.6.0+' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod gzio
insmod part_msdos
insmod ext2 set root='(hd0, msdos1)' search --no-floppy --fs-uuid --set=root a4c8987c-6f35-4af1-b539-3617000ec73b
linux /boot/vmlinuz-3.6.0+ root=UUID=a4c8987c-6f35-4af1-b539-3617000ec73b ro quiet splash text $vt_handoff initrd /boot/initrd.img-3.6.0+ }
到此为止,整个新内核就配置完成,重启验证结果如下:
7.帮助信息
可以参考内核源码根目录下的README文件,该文件中讲了如何配置、编译内核和一些注意事项。
在linux内核原码根目录下,使用make help命令可以查看make的帮助信息
menuconfig中每个选项的说明和依赖关系,可以下图中的红色标注来查看
阅读(1208) | 评论(0) | 转发(0) |