1. 下载内核源码, www.kernel.org 下载源码包。
2. 下载下来的linux-3.11.1.tar.xz 包, 然后解压出来。
3. 进入解压后的linux-3.11.1 目录, make menuconfig , 如果没有特殊的要求默认就好, 需要注意的是版本, 是需要32位的,还是64的, 其他的就默认选项,保存退出。
4. 不要切换目录,直接终端:make 一下,命令编译内核 , 我使用的是gcc-4.4.7 g++-4.4.7 版本编译的, README文件中没有特殊的说明, 只是说需要gcc版本在3.2以上的就好,如果你需要确保,很顺利的不出差错,就安装下gcc-4.4和g++-4.4吧(Ubuntu 12.04 默认是4.6的)。
apt-get install gcc-4.4 g++-4.4
将默认的gcc 链接到 gcc-4.4 g++链接到g++-4.4 下。
切换到 /usr/bin目录下面执行命令:
mv gcc gcc.bak
mv g++ g++.bak
ln -s gcc-4.4 gcc
ln -s g++-4.4 g++
确认下是否已经变成了4.4 , gcc -v g++ -v 一下。
5 . 我编译的是64位版本的内核, 我的bzImage 在arch/x86_64 目录下,如果你编译的是32位版本,应该就在arch/x86下面。
cp arch/x86_64/bzImage /boot/vmlinuz-3.11.1
cp System.map /boot/System.map-3.11.1
这里的System.map 在linux-3.11.1目录下面的那个
cd /lib/modules/3.11.1
sudo mkinitramfs -o /boot/initrd.img-3.11.1
sudo update-grub
当最后一条命令执行完后,就会显示 Done 。此时,就可以重启看看内核版本了, uname -a 一下即可。