声明:本文是个人参考网上有关资料,编译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]
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是大写的,不要弄错
进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。
代码: 全选
$ cd ~/src/linux-3.14.31
1、首先,删除以前所有的编译生成文件,内核配置文件, 各种备份文件。
如果是刚刚解开的包,不需要执行这步;如果是第n次编译,决心从头来过,可以考虑执行。
如果只是编译过程中出现小问题,小修改了.config,不要执行这一步,免得重复编译代码。
相关命令如下:
代码: 全选
$ sudo make mrproper
命令:
代码: 全选
make defconfig
3、帖子附录了我的config文件,改名为.config,拷贝到源文件目录下面,可以在我的基础上修改。第2步的命令就不要运行了。
题外话:网上有的教程把现在使用的内核的config拷贝过来,在当前正在用的内核的配置上进行优化。
据实验,这是毫无意义的,ubuntu还有debian系统下make会自动做这步。
这条命令倒是可以学习一下,将当前正在用的内核的配置拷贝过来。
命令:
代码: 全选
cp /boot/config-`uname -r` ./.config
四、开始配置内核选项。
相关命令:
代码: 全选
$make nconfig
光标键上下左右移动,回车选定。
选项意义: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
六、开始编译内核。
ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
相关命令:
代码: 全选
$ sudo make-kpkg --initrd --append-to-version=.1 kernel_image kernel-headers
输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉。
机器开始艰苦地工作了。
编译时间要看你优化的情况,我的机器第一次编译大概十几分钟。
后来小改动选项的编译,很多不要重新编译了,几分钟就好。
七、安装内核
编译完成就是安装工作。
编译好的内核在上一层目录。
包括linux-headers-...Custom_amd64.deb和linux-image-...Custom_amd64.deb两个文件,如果你不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。
安装相关命令:
代码: 全选
$ cd ..
$ sudo dpkg -i linux-image-(按tab键)
安装完成后,去看一下劳动成果,和官方默认的内核文件比较一下大小。
代码: 全选
$ ls -l /boot/
代码: 全选
$ sudo reboot