经过四天的尝试,终于将ubunt12.04的3.11.0内核,升级到了3.12.20,整个编译时间需要6个小时,虚拟硬盘也增加了5G。编译过程和网上的其他帖子说的差不多,现在加入自己的一些心得,整理出一个完整的流程。
准备工作:我用的是vmware9虚拟机,安装了ubuntu-12.04.4-alternate-i386.iso,其内核版本是3.11.0.不敢跨度太大,所以到www.kernel.org下载了3.12.20内核,当时最新的内核是3.14.4,我前面就是因为升级最新的内核,忙活了三天都不成功。
1.解压内核包
把linux-3.12.20.tar.xz,移动到/usr/src,解压,命令如下:
sudo xz -d linux-3.12.20.tar.xz
suod tar -xvf linux-3.12.20.tar
2.进入 linux-3.12.20目录清除残留的.config和.o文件
命令:sudo make mrproper
3.配置内核编译选项
这个工作非常专业,所以没有真正进行选择,而是复制了老内核的配置文件,改名为.config。
1)命令:sudo cp /boot/config* ./config
2)安装ncurses库,它是图形界面底层支持库,是menuconfig必需的。
sudo apt-get install libncurese5-dev
3)导入旧的配置文件,保存退出menuconfig
sudo make menuconfig
在打开的界面中,点击load,导入现有的.config,然后点击save保存,最后exit.
提醒:用旧的配置,其实编译时非常费时,产生很多文件,非常坑爹,不过对选项不熟悉,还是不敢轻举妄动。
4.确定依赖性
sudo make dep
5.清理中间文件
sudo make clean
6.编译新内核(费时近1hour)
sudo make bzImage
7.编译模块(最坑,差不多要4个小时)
sudo make modules
提醒:在有些帖子中是提出以上两步可以直接用sudo make jn,来并行处理,n取CPU核心的两倍数。如果是四核,就是
sudo make j8
8.安装模块
sudo make modules_install
这一步,耗时也不少。因为我的CPU是AMD3核,开始怀疑我的CPU的兼容性和效率问题。没办法,还是迷信intel。
9.建立ramdisk文件。
sudo mkinitramfs -o /boot/initrd-linux-3.12.20.img
这个文件足有147M,老内核的文件才17M.
10.安装内核
sudo make install
11. 配置grub
在上一步中,系统已经自动更新了grub,但是这个引导程序的默认选项为新内核,如果需要改回原内核为默认,就要手动来修改default值。打开/etc/default/grub
sudo gedit /etc/default/grub
修改default, 注释掉第2行hidded timeout
12.更新grub
sudo update-grub
13.重启