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_6464位桌面版.
一、下载源代码和编译软件的准备
1、下载内核源代码,网址 https://www.kernel.org/
建议下载longterm(长期支持版)3.14.31的tar.xz文件。
如果你懒得去网站点联接,可以运行下列命令:
$cd
#cd目录不带参数就可以回到家目录
$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.31.tar.xz
这样,文件linux-3.14.31.tar.xz应该放在个人目录上。
2、安装有关编译程序。
安装make ,gcc, make-kpkg等等和编译内核相关的工具。
有关命令:
$sudoapt-get install build-essential kernel-packagelibncurses5-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/
八、重新启动验证新内核。
$ sudo reboot
一切ok。
[ Edited byffbp on 2015-2-7 14:13 ] 已经加入收藏 编译成果,和原核心对比。
不错,顶起 config文件小修改,请下载过的xd重新下 其实编译内核只需要几步:
1. 获得源码:从tar包解压或者从git获得源码都行(不过git下来的源码有2G多大)
2. 配置: 我比较喜欢用发行版带的config(/proc/config.gz),然后对它进行裁剪(make menuconfig/nconfig)
3. 编译: make
4. 安装: 把arch/x86/boot/bzImage复制出来,make modules_install安装模块,修改bootloader的配置
自己配置内核一般不用initramfs,所以在配置内核的时候,一定要确保init之前涉及的驱动一定要编译进内核,比如SATA驱动,文件系统,需要二进制firmware的必须编译成模块(比如无线网卡),其他的Y/M都可以。
回复 #6 vimacs 的帖子
^g^ ^g^ ^g^ ^g^ ^g^ 留个脚印,学习
页:
[1]