mirrors.kernel.org
这儿可以下载到各个版本的linux内核
在/usr/src/
下解压
tar xzvf linux-x.x-xx.tar.gz
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
编译前需要准备好gcc
环境,在编译2.6
内核时候因为gcc
问题一直在报错,因此要先安装一个低版本的gcc
gcc
环境不存在降级,而是多版本并存
以ubuntu
为例,安装gcc-3.4
,先修改源,将如下内容添加到/etc/apt/sources.list
中
deb http://snapshot.debian.org/archive/debian/20070730T000000Z/ lenny main
deb-src http://snapshot.debian.org/archive/debian/20070730T000000Z/ lenny main
deb http://snapshot.debian.org/archive/debian-security/20070730T000000Z/ lenny/updates main
deb-src http://snapshot.debian.org/archive/debian-security/20070730T000000Z/ lenny/updates main
执行apt-get update
,可能会出现如下信息:
W: GPG error: http://snapshot.debian.org lenny/updates Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A70DAF536070D3A1
无视直接安装:
sudo apt-get install gcc-3.4 g++-3.4
这样通过dpkg --list | grep compiler
就能看到我们已经安装好了两个gcc
环境,然后就是修改gcc
的命令链接
使用
update-alternative
可以非常方便的更换链接
安装好链接
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4 40 --slave /usr/bin/g++ g++ /usr/bin/g++-3.4
然后选取
sudo update-alternatives --config gcc
现在gcc -v
看一下,当前是否为3.4
版本
make mrproper
make clean
先执行下净化下原始源码。 接着执行
make menuconfig
make defconfig
这儿到底该怎么配,建议看鸟哥linux私房菜
往往这时候会出错,请参考编译一个gcc 4.8和cannot find crti.o: No such file or directory我是
libc
的问题,这儿建议一个个谷歌错误,反正问题真的多,一度想放弃
其中我用的gcc 3.4.6
存在一个文件未能链接到正常库文件的问题
make //编译
等待一个电影的时间,编译完成。
出现
unsupported instruction 'mov'
的报错,这是因为在x64架构
的机器上编译,需要给编译器指定用32位
,即在Makefile
所有的AS
指令后面加上--32
,在所有的CC
后面加上-m32
,但是还是存在各种问题,没办法,更换成gcc-4.4
,需要重新修改链接,同时我也修改了我的源码从2.6.0
换成了2.6.32.1
,现在make
没啥问题
编译完成没有报错的话,安装先前启用的那些模块
make modules_install
都结束后,安装内核
make install
最后就是将安装好的内核作为引导了,如果是grub
的话则设置后更新下grub
sudo update-initramfs -c -k 2.6.32.1
sudo update-grub
然后我就还是进入到了当前的内核里!!查看下
grub.cfg
中,发现2.6.32.1
是写进去的,然后我是虚拟机的问题,因此要修改默认的入口,这个属于Advanced options
,因此修改/etc/default/grub
变成GRUB_DEFAULT="Ubuntu, with Linux 2.6.32.1"
,然后有可能会提示Warning: Please don't use old title
Ubuntu, with Linux 2.6.32.1'`,这样按照后面的提示修改了就行。