找回密码
 注册
快捷导航
查看: 10318|回复: 7

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

[复制链接] |自动提醒
阅读字号:

2616

回帖

27

积分

1万

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-5-15
银牌荣誉勋章(注册10年以上会员)银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)
发表于 2015-2-4 13:54:04| 字数 4,008| - 中国–江西–南昌 联通 | 显示全部楼层 |阅读模式
声明:本文是个人参考网上有关资料,编译3.14.31内核的总结,如按本文步骤编译内核造成的责任和本文作者无关。
本文放在本人的blog上面:[url=http://hi.baidu.com/ffbp89/]http://hi.baidu.com/ffbp89/[/url]
本文是《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、下载内核源代码,网址 [url=https://www.kernel.org/]https://www.kernel.org/[/url]
建议下载longterm(长期支持版)3.14.31的tar.xz文件。
如果你懒得去网站点联接,可以运行下列命令:

[code]

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

[/code]

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

2、安装有关编译程序。

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

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

[/code]

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

[code]

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

[/code]

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

[code]

$ cd ~/src/linux-3.14.31

[/code]

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

相关命令如下:

[code]

$ sudo make mrproper

[/code]

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

[code]

make defconfig

[/code]

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

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

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

[code]

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

[/code]

这个配置方法值得参考。


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

[code]

$make nconfig

[/code]

配置用到的键只有几个,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
相关命令:

[code]

$cp .config  ../config20150203

[/code]

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


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

[code]

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

[/code]

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

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

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

[code]

$ cd ..

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

[/code]

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

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

[code]

$ ls -l /boot/

[/code]

八、重新启动验证新内核。

[code]

$ sudo reboot

[/code]

一切ok。

[[i] Edited by  ffbp on 2015-2-7 14:13 [/i]]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
学会不去为不可控制的事情烦恼。
HP 455G10,R7-7730U,64G RAM,1T+2T SSD,15 in
Portégé X30-D,i5-7300U,16G RAM,512G NVME SSD,13 in

1万

回帖

166

积分

1万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2013-8-10
月全勤勋章
发表于 2015-2-4 14:28:16| 字数 6| - 中国–辽宁–抚顺 联通 | 显示全部楼层
已经加入收藏
X200 P8600 OC 4 128G
A2141 I7-9750H 16G 512G
回复 支持 反对

使用道具 举报

2616

回帖

27

积分

1万

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-5-15
银牌荣誉勋章(注册10年以上会员)银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)
 楼主| 发表于 2015-2-4 15:14:54| 字数 12| - 中国–江西–南昌 联通 | 显示全部楼层
编译成果,和原核心对比。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
学会不去为不可控制的事情烦恼。
HP 455G10,R7-7730U,64G RAM,1T+2T SSD,15 in
Portégé X30-D,i5-7300U,16G RAM,512G NVME SSD,13 in
回复 支持 反对

使用道具 举报

4796

回帖

75

积分

1万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2011-2-25
月全勤勋章
发表于 2015-2-4 15:20:04| 字数 5| - 中国–江西–宜春 电信 | 显示全部楼层
不错,顶起
X60H-P8600OC没了     X200 P8700 -OC
X32-OC2.0  T62-P8800   X40-pm753  slc60G
回复 支持 反对

使用道具 举报

2616

回帖

27

积分

1万

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-5-15
银牌荣誉勋章(注册10年以上会员)银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)
 楼主| 发表于 2015-2-4 15:22:47| 字数 22| - 中国–江西–南昌 联通 | 显示全部楼层
config文件小修改,请下载过的xd重新下
学会不去为不可控制的事情烦恼。
HP 455G10,R7-7730U,64G RAM,1T+2T SSD,15 in
Portégé X30-D,i5-7300U,16G RAM,512G NVME SSD,13 in
回复 支持 反对

使用道具 举报

911

回帖

43

积分

7000

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2015-1-5
发表于 2015-2-4 21:24:53| 字数 317| - 中国–北京–北京–海淀区 教育网/北京大学 | 显示全部楼层
其实编译内核只需要几步:
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都可以。
回复 支持 反对

使用道具 举报

2616

回帖

27

积分

1万

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-5-15
银牌荣誉勋章(注册10年以上会员)银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)
 楼主| 发表于 2015-2-4 22:43:31| 字数 0| - 中国–江西–南昌 联通 | 显示全部楼层

回复 #6 vimacs 的帖子

学会不去为不可控制的事情烦恼。
HP 455G10,R7-7730U,64G RAM,1T+2T SSD,15 in
Portégé X30-D,i5-7300U,16G RAM,512G NVME SSD,13 in
回复 支持 反对

使用道具 举报

1014

回帖

28

积分

2万

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2008-9-15
年全勤勋章2022
发表于 2016-2-3 23:24:36| 字数 7| - 中国–江苏–常州 电信 | 显示全部楼层
留个脚印,学习
X230/T430S/T430/W520/T400/SL400
DELL E6410/E6400/D420/D410/D400/Insprion8200
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-1-16 22:00 , Processed in 0.129870 second(s), 38 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部