[分享]diy一个自己的内核,向优化开出新的一炮

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
头像
dongmh
帖子: 715
注册时间: 2005-06-21 20:24
来自: 甘肃
联系:

[分享]diy一个自己的内核,向优化开出新的一炮

#1

帖子 dongmh » 2006-02-07 21:30

从上次写的重头优化ubuntu开始,我就觉得有些郁闷,因为我自己使用amd64处理器,但是我为了方便使用32位系统,曾经我发贴问过,我到底应该k7还是应该用i686,有好心的前辈告诉我k8是k7的扩展,我应该用k7。最后事实证明我用386最快,真实是不容易接受的,而且我自己对自己的硬件有很多不满之处,因此无论如何想要打造一个弥补硬件缺陷的内核,(本人自己组装这台电脑的时候还只有14岁,当时nforce4价格高居不下,我采用了nforce3 250G U。虽说是U,但还是不爽,
而且本人的内存是用旧电脑的剩余品逐渐积攒而来,4根内存条品牌都不一样,其中有一个还是333hz的,一个让人郁闷的硬件系统吧。)在前不久,本人自己尝试了一次编译内核,发现编译内核倒是挺容易的,可惜上篇文章中,不可能再对此长篇大论,因此在本文中详细说明。

第一部分 准备工作

首先要找一个适合的内核,因为我是一个追新族,所以我本想采用2.6.15内核,可是这个内核问题很多,在我的电脑上总是不能正确启动,无论是dapper的源里的,还是我自己编译的,所以我采用了2.6.14内核。现在我还要向大家介绍一个东西,叫做ck。内核大家都一定都很熟悉,但是针对linux内核的优化补丁到真是不多。其实优化win内核的没听说过,优化linux也觉得挺奇怪,linus那样的狂人写的东西可以优化,或者说关键在于怎么优化,至于优化的效果和优化的原理,不要问我。我自己觉得效果很好,可能只是心理原因。那么现在我们开始作准备工作。

代码: 全选

sudo apt-get install build-essential bin86 kernel-package
sudo apt-get install libqt3-headers libqt3-mt-dev
内核及优化补丁请到南湖乐善共享ftp下载,下面给出官方下载链接:
ck : http://ck.kolivas.org/patches/2.6/2.6.1 ... 14-ck9.bz2 只有不到50k的小东西,不要看不起它阿。
kernel : http://www.kernel.org/pub/linux/kernel/ ... 14.tar.bz2 本次行动的核心。

第二部分 给内核打补丁

复制内核源码去/usr/src

代码: 全选

sudo cp linux-2.6.14.tar.bz2 /usr/src
解压内核源码

代码: 全选

cd /usr/src
sudo tar xvjf linux-2.6.14.tar.bz2
然后检查/usr/src下有没有linux这个链接,如果有你可以改下名字

代码: 全选

sudo mv linux linux.bak
建立一个新的叫做linux的链接

代码: 全选

sudo ln -s ./linux-2.6.14 linux
然后进入linux这个目录

代码: 全选

cd linux
打补丁

代码: 全选

sudo bzcat /补丁的位置/patch-2.6.14-ck9.bz2 | patch -p1
第三部分 设置内核

设置内核相当麻烦,要看一大堆的选项,而且最要命的是,它问的问题都非常地层,很多我都不知道,所以我复制了我现有的设置过来,有耐心的朋友可以自己来。

复制设置

代码: 全选

sudo cp /boot/config-`uname -r` .config
开始设置

代码: 全选

sudo make xconfig
以下部分选项推荐选择,其他选项请个位自己尝试:
Processor type and features 部分包含了处理器的特征。
Subarchitecture Type 必须选PC
Processor family 这就是问处理器了,选自己的。
preemption Model 根据自己的情况选 从上到下是服务器 桌面 低配置桌面。
High Memory Support 大内存支持,如果内存小于等于1g就使用off。
Timer frequency 建议改为1000hz。
kexec system call 这个是快速重启系统,启动它需要另外一个kexec-tool的支持,有机会再详细谈谈它的使用。
IO Schedulers 部分包含了IO的设置。
推荐关闭Anticipatory I/O scheduler Deadline I/O scheduler 仅仅留下CFQ。
Kernel hacking 部分里关闭kernel debugging
注意以上的推荐选项,都是我个人见解,所以有危险系数,操作前请做好失败的思想准备,不过可以放心没什么副作用,仅仅是浪费点编译的时间而已,其他内核不回受影响。顺便说下,大家在游览这些选项的时候应该可以看到,一大堆什么ibm toshiba dell专用的东西存在,还有专门为intel amd的设置存在,我的建议是,用不到的东西一概关闭,也不要编译成模块,浪费时间,比如我关了所有对intel优化和对蓝牙pccard的支持。
最后用Ctrl+S保存。

第四部分 开始编译

编译有很传统的方法──make,可是为了我们以后也方便使用,所以我们利用debian类系统的特权,制作个deb包出来。
方法如下:

代码: 全选

cd /usr/src/linux
sudo -s -H
make-kpkg clean
sudo make-kpkg --initrd –revision=diy1  kernel_image kernel_headers
注意:最后的命令输入后,过程十分漫长,各位朋友可以弄点零食去消磨下时间。

第五部分 安装

当你的耐心差不多消磨至尽的时候,啊终于完成了,/usr/src目录下会出现两个东西,一个是内核的安装包,另外一个是内核headers的安装包,把他们装好。

代码: 全选

sudo dpkg -i /usr/src/kernel-image-2.6.14*.deb
sudo dpkg -i /usr/src/kernel-headers-2.6.14*.deb
这样重启以后,就可以试试新的内核了。

第六部分 结语

编译内核失败,或是编好的内核有很多问题是可能会发生的,而且可能性是比较大的,像我一样比较喜欢尝新鲜的朋友不妨来试一试,操作不当之处,请各位指出,而且我最进将把bootsplash、splashy、upower在breezy上的安装与使用分享下,其中还需要编译内核,也许各位需要的朋友可以等到那个时候再编译不迟。
上次由 dongmh 在 2006-02-09 20:12,总共编辑 1 次。
ubuntu 6.06
我是初学者 大家多多关照
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

#2

帖子 millenniumdark » 2006-02-07 21:51

Commend!
You are hard-working.
meishiwanwan
帖子: 27
注册时间: 2005-11-03 13:04

#3

帖子 meishiwanwan » 2006-02-07 23:53

小兄弟还真是努力阿,让我汗颜!
头像
karron
帖子: 6226
注册时间: 2005-06-11 14:03
来自: 不明真相的群众
联系:

#4

帖子 karron » 2006-02-09 8:28

这位兄弟只有16岁?真是让人汗颜啊.我要努力了.
我的blog,关于技术,软件,linux,vim <---- 所有博客均被河蟹.
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

#5

帖子 sammeme » 2006-05-15 1:52

CK patch 的主页在这里
http://members.optusnet.com.au/ckolivas/kernel/

里面有使用的介绍。现在已经更新到2.6.16了。

如果大家有使用到苹果的文件系统hfs+建议大家用2.6.16的内核。


还有原文的'-revision'因该改为‘--revision’,"preemption Model" 最后一项应该翻译为‘低延迟桌面’,而非低配桌面。
头像
Tenyears
帖子: 2245
注册时间: 2005-06-30 15:46
来自: 成都

#6

帖子 Tenyears » 2006-05-15 11:07

A64用386比K7快?

你怎么比较出来的
我的A64 3000用K7很久了,386已经删掉了,从来没有感觉过这两个哪个更快

下次直接装64位算了。
Humanity to others // 己所不欲,勿施与人
Laptop: ThinkPad X220 --- Win7 Home / Ubuntu 12.04
Desktop: Win7/Ubuntu 12.04
Server: Ubuntu12.04
头像
karron
帖子: 6226
注册时间: 2005-06-11 14:03
来自: 不明真相的群众
联系:

#7

帖子 karron » 2006-05-15 11:31

64的软件少........
我的blog,关于技术,软件,linux,vim <---- 所有博客均被河蟹.
头像
ttand
帖子: 1745
注册时间: 2005-08-22 14:05
来自: 离开北京

#8

帖子 ttand » 2006-05-15 12:57

顶 小兄弟太厉害了

不过听说 可以用 icc 编译内核 intel c 编译器。
可以最大的开发出intel芯片的潜力

有人试过没有?
cnnews
帖子: 3
注册时间: 2006-06-04 10:45

#9

帖子 cnnews » 2006-06-14 9:44

大哥啊,我不活拉!
头像
jarryson
帖子: 4002
注册时间: 2005-08-14 19:53

#10

帖子 jarryson » 2006-07-30 3:38

用apt方式下载安装的内核可以共存

编译的呢?能和原来的共存么

好贴子顶起来!
头像
林文清
帖子: 50
注册时间: 2006-07-17 8:38

#11

帖子 林文清 » 2006-07-30 16:21

共存的问题,在FC里可以通过在GRUB里添加相应的启动项来实现。Ubuntu的不太清楚:)
Linux恒久远,Fedora(?)永流传?
ougi
帖子: 41
注册时间: 2006-06-08 23:09

#12

帖子 ougi » 2006-08-01 23:28

林文清 写了:共存的问题,在FC里可以通过在GRUB里添加相应的启动项来实现。Ubuntu的不太清楚:)
ubuntu里,是自动添加的

LZ没提及的地方,基本都不需要关心

我按照这种方法成功了
ougi
帖子: 41
注册时间: 2006-06-08 23:09

#13

帖子 ougi » 2006-08-01 23:28

但我搞不清楚

–revision=diy1

这个东西是干什么的
头像
dongmh
帖子: 715
注册时间: 2005-06-21 20:24
来自: 甘肃
联系:

#14

帖子 dongmh » 2006-08-02 18:15

用来声明一个版本 比如同样的2.6.16.8的源码 编译两次
就用它来声明一个区别
ubuntu 6.06
我是初学者 大家多多关照
头像
天蝎网子
帖子: 162
注册时间: 2005-09-30 1:22

#15

帖子 天蝎网子 » 2006-08-10 23:02

我选了AMD Athlon 64的CPU,为什么制作出来的deb包文件名是 i386不是K7的??
回复