Ubuntu环境下编译内核step by step(内核版本3.14.31)

内核编译和嵌入式产品的设计与开发
回复
ffbp
帖子: 18
注册时间: 2006-07-22 21:15

Ubuntu环境下编译内核step by step(内核版本3.14.31)

#1

帖子 ffbp » 2015-02-04 1:18

Ubuntu环境下编译内核step by step(内核版本3.14.31,东芝笔记本)

声明:本文是个人参考网上有关资料,编译3.14.31内核的总结,如按本文步骤编译内核造成的责任和本文作者无关。
本文放在本人的blog上面:http://hi.baidu.com/ffbp89/
本文是《ubuntu环境下编译内核step by step》 的更新版本。
本文最早的版本《老笔记本编译2.6.20内核指导》。
如果有修改,第一时间在blog上更新。
欢迎转载本文,但是请不要取消本声明。
写这篇东西主要是给第一次接触内核编译的朋友,老手绕道;另外,也可以结合编译内核复习shell的有关命令。

机器配置:Toshiba R600,Ulv SU9400,intel X4500集成显卡,intel hda 集成声卡(芯片为Realtek alc262),Atheros AR5212 无线网卡,intel 82567v 千兆网卡,3G DDR2 内存,sata机械硬盘。
编译系统:ubuntu 14.04 x86_64 64位桌面版.

一、下载源代码和编译软件的准备
1、下载内核源代码,网址 https://www.kernel.org/
建议下载longterm(长期支持版)3.14.31的tar.xz文件。
如果你懒得去网站点联接,可以运行下列命令:

代码: 全选


$cd
#cd目录不带参数就可以回到家目录
$ wget [url]https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.31.tar.xz[/url]

这样,文件linux-3.14.31.tar.xz应该放在个人目录上。

2、安装有关编译程序。

安装make ,gcc, make-kpkg等等和编译内核相关的工具。
有关命令:

代码: 全选


$sudo  apt-get install build-essential kernel-package  libncurses5-dev

二、解压源代码
注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹。
linux掌门人Linus说解压到任何目录上都可以。
我放在自己的主目录下的src目录。
把下载源代码文件linux-3.14.31.tar.xz放到自己的登录目录下,然后运行下列命令:

代码: 全选


$ cd
$ mkdir src
$ tar Jfxv linux-3.14.31.tar.xz -C src/
#解压xz文件,参数J是大写的,不要弄错

现在,源代码就在 ~/src/linux-3.14.31 目录里面。
进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。

代码: 全选


$ cd ~/src/linux-3.14.31

三、开始编译前的准备工作。
1、首先,删除以前所有的编译生成文件,内核配置文件, 各种备份文件。
如果是刚刚解开的包,不需要执行这步;如果是第n次编译,决心从头来过,可以考虑执行。
如果只是编译过程中出现小问题,小修改了.config,不要执行这一步,免得重复编译代码。

相关命令如下:

代码: 全选


$ sudo make mrproper

2、根据当前的平台生成一个推荐的.config ,减少了很多工作量。
命令:

代码: 全选


make defconfig

我当前的内核是x86_64的,会直接生成一个推荐的x86_64配置。

3、帖子附录了我的config文件,改名为.config,拷贝到源文件目录下面,可以在我的基础上修改。第2步的命令就不要运行了。

题外话:网上有的教程把现在使用的内核的config拷贝过来,在当前正在用的内核的配置上进行优化。
据实验,这是毫无意义的,ubuntu还有debian系统下make会自动做这步。
这条命令倒是可以学习一下,将当前正在用的内核的配置拷贝过来。
命令:

代码: 全选


cp /boot/config-`uname -r` ./.config

这个配置方法值得参考。


四、开始配置内核选项。
相关命令:

代码: 全选


$make nconfig

配置用到的键只有几个,esc退出菜单;空格改变选项状态;
光标键上下左右移动,回车选定。

选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。

配置选项非常多,具体配置如何做,首先要学会使用帮助,F3键就可以得到当前选项的帮助。
另外,可以参考百度贴吧debian吧主hongzx2012 的帖子《全民内核》,讲得很细致透彻。
除了我们个人用户用的不多的kvm的部分,其他的可以参照执行。

请大家遵循一个原则,如果你自己使用的内核已经选用了某个选项,如果你没用充分的理由,不要随便改动。
这样虽然内核不那么精简,但是不容易出现问题。

我们可以精简的部分是硬件驱动的部分,对于自己没有的硬件要毫不犹豫的清除。
如果你很执着,或者你有洁癖,你也可以一项项对过去。

五、针对个人桌面工作站,必须强调的几个选项:
1、在“General setup”里面的“Prompt for development and/or incomplete code/drivers” 如果你的硬件比较新,几乎是必须选的。
‘ Local version - append to kernel release ’ 选项,不能输入大写字母,可以不填,在编译命令行里面添加

2、Processor type and features中是关于cpu的,要认真选。
Symmetric multi-processing support是打开多核的开关,我的cpu是双核的,选中。
Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。。
Maximum number of CPUs 输入自己的核心数目,我输入2。
SMT (Hyperthreading) scheduler support说的是超线程技术,P4有支持的,我的cpu不支持,目前市场上的家用cpu中i3,i5,i7都可能支持,要自己去查自己cpu的规格。
在“ Timer frequency ”里,默认是250Hz,较新的cpu都可以选择了1000Hz,桌面性能更好。
Preemption Model 个人桌面用户选Preemptible Kernel (Low-Latency Desktop),抢占模式,提高桌面发应速度。

3、CPU Frequency scaling 是笔记本cpu节电技术
Default CPUFreq governor (conservative) cpu节电模式有四个,笔记本默认选conservative比较好。

4、Device Drivers是重点,由于linux不但面向个人工作站,更多的是面向服务器的应用,所以可以把自己机器上没有的硬件全部去掉,而不用面面俱到。但是通用型的选项要慎重。

比如在Network device support :
网卡Ethernet driver support的部分,我根据自己的网卡型号,除了千兆网卡Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support和Intel(R) PCI-Express Gigabit adapters HWMON support,其余的硬件支持统统去掉。

无线网卡Wireless LAN的部分,除了 Atheros Wireless Cards中的 Atheros 5xxx wireless cards support 和Atheros 5xxx PCI bus support ,其他全部去掉。

再比如声卡部分Sound card support的 PCI sound devices 分支:
我的是hd声卡,我只是在PCI devices中,选Intel HD Audio ,再选Build Realtek HD-audio codec support,除此之外的硬件支持全部去掉。

重点看声卡,显卡,有线网卡,无线网卡,文件系统。

6、全部设置完成,最后保存设置,按f6,然后退出。
可以考虑保存一个备份,文件名类似 config20150203
相关命令:

代码: 全选


$cp .config  ../config20150203

这样,就在上一层目录保存了你刚刚很辛苦设置的成果.config


六、开始编译内核。
ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
相关命令:

代码: 全选


$ sudo make-kpkg  --initrd --append-to-version=.1   kernel_image kernel-headers

上述命令中的.1可以用自己喜欢的字符代替,比如 .1.r600 最后的字符一定是数字.
输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉。
机器开始艰苦地工作了。

编译时间要看你优化的情况,我的机器第一次编译大概十几分钟。
后来小改动选项的编译,很多不要重新编译了,几分钟就好。

七、安装内核
编译完成就是安装工作。
编译好的内核在上一层目录。
包括linux-headers-...Custom_amd64.deb和linux-image-...Custom_amd64.deb两个文件,如果你不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。
​安装相关命令:

代码: 全选


$ cd ..

$ sudo dpkg    -i   linux-image-(按tab键)

文件名很长,灵活使用tab自动补足,提高效率。

安装完成后,去看一下劳动成果,和官方默认的内核文件比较一下大小。

代码: 全选


$ ls -l /boot/

看看我新编译的内核和原内核的对比。
1.png
八、重新启动验证新内核。

代码: 全选


$ sudo reboot

一切ok。
附件
config.tar.gz
(18.34 KiB) 已下载 112 次
回复