1、准备源码
最新的源码可以从kernel.org上获取,如当前最新版本为2.6.31:
$ wget http://oss.ustc.edu.cn/linux-kernel/v2.6/linux-2.6.31.tar.bz2
2、解压源码:
$ tar xvf linux-2.6.31.tar.bz2 -C /usr/src/
TIP:当然,解压缩到/usr/src/中并不是必须的,你可以解压缩到任何位置。
3、检查源码(该步不是必须):
$ cd /usr/src/linux-2.6.31
$ make mrproper
TIP:该步的作用是检查源码是否有.o文件和依赖问题,从全新的源码编译时不需要这一步。配合make clean(主要清除.o文件)使用更好,make mrproper主要清除环境变量及配置文件
4、 编译内核
默认情况下,编译输出的文件是放在源码目录里的,可以通过O=output/dir参数来指定输出文件的位置(字母O,不是数字0)。很多第一次编译内核的人都会碰到一个问题,/usr所在分区的空间不够,此时,这个参数就很有用。
源码提供了很多配置方式,推荐使用menuconfig:
进入/usr/src/linux-2.6.31,已经进入则略过:$ cd /usr/src/linux-2.6.31
创建/build/kernel menuconfig文件夹:$ mkdir -p /home/你的用户名/build/kernel menuconfig
使用menuconfig配置:$ make O=/home/你的用户名/build/kernel menuconfig
对于第一次编译内核的人,不推荐直接从内核默认配置开始,推荐使用发行版自带的配置文件,通常/boot下会有config-2.6.xx的文件。选择Load an Alternate Configuration File,然后输入/boot下那个config文件的名字,载入即可。第一次编译最好还是不要随便修改配置了,如果失败的话,会留下心理阴影的:-)
在配置里随便看看,如果有什么懂的也可以根据自己的需求改改,不明白的地方就不要动了吧。完了之后别忘了save,保存的时候文件名就填.config。
接下来就开始正式编译了。编译时间可能会有些长,为了避免终端意外关闭,可以使用screen,具体用法这里就不谈了。
$ make O=/home/name/build/kernel
为了加快编译的速度,可以使用-j参数,开启多线程。比如双核的cpu可以这样编译
$ make -j4 O=/home/name/build/kernel
一般-jn的n为核数的两倍即可
5、安装内核
$ sudo make O=/home/name/build/kernel modules_install install
6、生成initrd
$ sudo mkinitramfs -o /boot/initrd-img.2.6.31 2.6.31
关于mkinitramfs的其他参数,请参考man mkinitramfs,关于initrd的作用,请自己google搜索。我近期也会写一篇文章剖析一下initrd。
7、 修改引导
使用grub的话,可以直接使用:
$ sudo update-grub
来更新引导文件,当然也可以自己编辑/boot/grub/menu.lst或者/boot/grub/grub.cfg文件。
8、] 重启
重启之后可以通过以下命令确认你当前使用的是不是刚编译的内核:
$ uname -a
tyjjk 于 2011-04-11 15:26:06发表:
还没开始,赚B中
luomingdong09 于 2011-04-11 12:34:00发表:
很好 很强
subdream 于 2011-04-11 10:13:37发表:
总体不错,但是还是存在问题,编译过了但是启动不了
云淡风清 于 2009-10-19 09:20:11发表:
学习。。。。。
rgwan 于 2009-10-18 07:49:07发表:
诶,debian官方是编译deb包kernel,redhat(fedora)是rpm报kernel。
你这样make && make install 怎么行?
不小心sudo apt-get autoremove就把grub,grub-common删掉了,重启看你怎么进系统?
shenhao0129 于 2009-10-17 15:08:58发表:
唉!
ipitx 于 2009-10-17 12:44:14发表:
的确是对新手很有帮助,不过标题是很高调
寻路行者 于 2009-10-17 09:29:25发表:
初学者,看起来有点距离。
pananc 于 2009-10-16 17:22:12发表:
没看懂啊
cheGuevara 于 2009-10-15 22:03:21发表:
不错!
cfl09 于 2009-10-13 21:32:51发表:
我进得是新手区嘛?
dgtg 于 2009-10-13 21:19:07发表:
看不懂,新来的、、、、学习学习!!!
Th-17 于 2009-10-13 20:29:16发表:
专业个鸟!
任何负责任的Linux发行版,官方文档都会有这样的指南。
好弱智的标题。
hgqcs 于 2009-10-13 17:24:14发表:
高手之类
Bruce.Ko 于 2009-10-13 17:00:26发表:
太牛了,佩服!
咦~ 于 2009-10-13 13:34:40发表:
学习了~~
思考者 于 2009-10-13 13:02:42发表:
就是要动手才知道啊~~
you778589 于 2009-10-13 11:10:24发表:
扭人就是不一样啊
358471392pp 于 2009-10-13 11:09:39发表:
需要亲自玩玩啊
oplesd 于 2009-10-13 00:07:44发表:
果然是牛人
414716676 于 2009-10-12 23:32:16发表:
非常不错的文章!!!!!!!!
大宝 于 2009-10-12 22:52:43发表:
我是调用Ubuntu的配置,然后自己调整一下,目的就是为了解决1394和摇杆的问题
后来突然发现,解决1394有更简单的方法,就没再弄内核了,累~
至于摇杆,反正目前还没想着模拟飞行,暂时放着吧~
rgwan 于 2009-10-12 22:25:05发表:
什么牛人?要用make-kpkg,要不然在ubuntu系统不小心执行了个autoremove命令就不小心把你原来的内核和grub全部D掉了