牛人给出的编译Linux内核的详细过程

1、准备源码 最新的源码可以从kernel.org上获取,如当前最新版本为2.6.31: 

$wget http://oss.ustc.edu.cn/linux-kernel/v2.6/linux-2.6.31.tar.bz2

2、解压源码: 

$tarxvf linux-2.6.31.tar.bz2 -C /usr/src/

注:当然,解压缩到/usr/src/中并不是必须的,你可以解压缩到任何位置。 

3、检查源码(该步不是必须): 

1
2
$ cd /usr/src/linux-2 .6.31
$ make mrproper

注:该步的作用是检查源码是否有.o文件和依赖问题,从全新的源码编译时不需要这一步。配合make clean(主要清除.o文件)使用更好,make mrproper主要清除环境变量及配置文件 

4、 编译内核

        默认情况下,编译输出的文件是放在源码目录里的,可以通过 O=output/dir 参数来指定输出文件的位置(字母O,不是数字0)。很多第一次编译内核的人都会碰到一个问题,/usr所在分区的空间不够,此时,这个参数就很有用。 

源码提供了很多配置方式,推荐使用menuconfig: 进入 /usr/src/linux-2.6.31,已经进入则略过:

1
$ cd /usr/src/linux-2 .6.31

创建 /build/kernel menuconfig 文件夹:

1
$ mkdir -p /home/ 你的用户名 /build/kernel menuconfig

使用menuconfig配置:

1
$ make O= /home/ 你的用户名 /build/kernel menuconfig

       对于第一次编译内核的人,不推荐直接从内核默认配置开始,推荐使用发行版自带的配置文件,通常  /boot 下会有  config-2.6.xx 的文件。选择  Load an Alternate Configuration File ,然后输入  /boot 下那个config文件的名字,载入即可。
       第一次编译最好还是不要随便修改配置了,如果失败的话,会留下心理阴影的:-) 在配置里随便看看,如果有什么懂的也可以根据自己的需求改改,不明白的地方就不要动了吧。完了之后别忘了save,保存的时候文件名就填.config。 
       接下来就开始正式编译了。编译时间可能会有些长,为了避免终端意外关闭,可以使用screen,具体用法这里就不谈了。 
1
$ make O= /home/name/build/kernel

为了加快编译的速度,可以使用 -j 参数,开启多线程。比如双核的cpu可以这样编译 

1
$ make -j4 O= /home/name/build/kernel

一般-jnn为核数的两倍即可 

5、安装内核 

1
$ sudo make O= /home/name/build/kernel modules_install install

6、生成initrd 

1
$ sudo mkinitramfs -o /boot/initrd-img .2.6.31 2.6.31

关于mkinitramfs的其他参数,请参考man mkinitramfs,关于initrd的作用,请自己google搜索。我近期也会写一篇文章剖析一下initrd。 

7修改引导

使用grub的话,可以直接使用: 

1
$ sudo update-grub

来更新引导文件,当然也可以自己编辑 /boot/grub/menu.lst 或者 /boot/grub/grub.cfg 文件。 

8、重启

重启之后可以通过以下命令确认你当前使用的是不是刚编译的内核: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值