分类: IT生活

重装系统,并编译Linux内核

最近前几天准备编译一下内核,无意中看到了《BFS 简介,Linux 桌面的极速未来?》,具体内容如下引用:

像以往一样,依然在不断编译新版 Linux kernel 内核——Linux 系统提速的必修课。和 Linux kernel BFS  的相遇充满了巧合下的必然。现在看来,BFS Kernel 是 Linux 在半年内给我的最大惊喜——系统像电视购物主持人一样充满了力量和激情!而且是人能感觉得到的快!特以此文献给系统编译狂人,桌面提速狂 Linux 控。向所有 Linux 桌面用户力顶 BFS。

最先在 Kindle 上看 xkcd 漫画,有漫画如是:

supported_features

A: 经过某些人千百年的努力,最新的 Linux  补丁支持 4096 个 CPU 的电脑了!原来只能支持 1024 个!
B: 全屏 Flash 视频卡不卡啊?
A: 卡。不过谁他丫的看视频啊?

而关于 BFS 的消息是最先在 Linux Magazine 上看到的;不久之后 G1 Android 手机 ROM 修改大神 CM 开始在他的测试版 CyanogenMod 使用 BFS 作为 kernel 的 Scheduler,试用之后发现手机系统速度明显加快。 用手滑动左右翻屏就像 Opera 下滚动网页那么平滑,搞得屏幕覆膜上多了好多指纹印。心痒已久,恰逢 Linux kernel 2.6.31 新版正式发布,打上 BFS Patch 编译,重启。神一样的提速再次出现在我 4 年高龄的笔记本电脑上,注入了鸡血的 KDE4 让人无比兴奋。快!快!快!

所以,BFS 是什么?

要知道 BFS 是什么最好先了解一下它的作者,传说中的澳洲猛士 CK。

CK,Con Kolivas,男, 澳大利亚中年男子,资深内核 hacker。众所周知,Linux Kernel 是聚集了一帮天才蠢才和暴君怪胎的地方,CK 貌似最适合这种地方的人。是真的貌似,一张电影里面典型高智商通缉犯的脸。

几年前编译 Linux kernel,ck 补丁集就是系统提速的代名词。当时编译内核的三部曲是下 kernel 源码,打上 ck 补丁集,编译安装。后来上游代码将 ck 补丁集稳定的部分不断吸收,它的影响力也渐渐消失。

CK 本身对任务调度有很深的造诣,他聪明而经典地实现了 fair scheduling,而实现模式被 Igor 借鉴改进最终写出了现在 kernel 用的进程调度管理器 CFS (Completely Fair Scheduler)。不得不顺便介绍一下任务调度。Kernel 的进程调度主要是将 CPU 资源分配给各种驱动、进程等等。你可能听说过,一般人的大脑使用率不足 20% 这种科学或者伪科学言论。但事实是,你电脑上的 CPU 从来就没有真正被 100% 的利用过(别跟我说你在资源管理器里面看到过 CPU 100%,我还见过 101% 呢)。如何将各种运算任务一刻不停又有条不紊的塞给 CPU 处理是一门严肃的科学,绝不是电视购物导购能解决的问题。一次塞的运算量少了,CPU 闲着,运算时间增长,电脑慢了;而一次塞的运算多了,CPU 忙不过来,运算又要在门口排队,电脑也慢了。进程调度主要是用算法解决这个问题,而现在 Linux Kernel 用的 CFS 据说非常经典,在不同情况下都可达到相当高的 CPU 利用率。而现用 CFS 也是在 2.6.23 才加入的,取代原来 O(1),直接将 Linux 桌面速度从 XX 时代带入了 XX+N 时代。

两年前,CK 淡出了内核开发,忽然从江湖中蒸发。几周前,CK 重出江湖,两年磨一剑,带来了 BFS ,全称 Brain Fuck Scheduler (只认识中间那个单词的请参考谷歌翻译),声称专为低端硬件设计(我的理解是不超过 10 个 CPU 的电脑电视手机游戏机都算低端机),说白了就是比 Kernel 默认要更加山崩地裂海枯石烂房价上涨油价飞升的快。BFS 为什么叫这个名字?为了中文用户,不能三个词让他们一个也不懂吧? 好吧,这名字有点不雅,不过算是直爽。对了,据说 CK 也是看到上面我提到的漫画才开始剑走偏锋。真正有几个人用有上千 CPU 的电脑呢?为什么要为这种扩展性牺牲桌面性能。BFS 就在其间做了取舍,仅仅支持最多 16 个 CPU ,把问题外沿做小,让算法更简单精悍高效。作为原理来讲,这足够解释速度的来源。对于其它废问题, CK 专门写了一个 FAQ。在可以预见的将来,BFS 也不会进入 mainline kernel,说白了是取向问题。

关键问题是怎么用?

下 2.6.31 的 kernel 源代码,如果你不知道在哪里下的话就不必往下看了,在当前历史时期您还是搞不定的。再去:http://ck.kolivas.org/patches/bfs/ 下第一个 patch,现在是 2.6.31 开头的,表示适用该版本。解压内核源码,打上 patch,配置以后编译安装。现在 BFS 还在测试期,没有完全成熟,但已经相当可用。编译的时候有什么需要配置的?不需要, Scheduler 这东西太底层了,打上补丁就把原来的 CFS 替换掉了,没什么选项给你选。如果你非要问的话,不就图个快么,记着把配置弄到 1000Hz,开 preempt ,禁掉 dynamic ticks。编译重启不用说了,我可以酷酷的扔下一个 have fun 然后去玩 Mac 了,反正你机器启动不了不要找我。虽然我纯净 kernel 单加 BFS Patch 编译成功启动没问题,依然有一位倒霉的推油编译以后不知道怎么折腾的无法启动。可另外被我忽悠成功的推友们反应一致:“快!人能感觉得到的快!”

到底值不值得上手 ,有没有评测?

这是某些不够剽悍的读者会挣扎到最后的问题。BFS 原理上讲,机器配置越低,感受会越明显。如果你非要评测的话,Phoronix 这个专业的 Linux 测评狂网站也出了一份。我可以提前剧透结论,区别都很小,BFS 胜出绝大部分测试,然而优势不明显。我只是补充一下绝大多数折腾过的人的感受
——快 !人能感觉到的快!

由此可见,BFS的作用还是比较大的,于是心血来潮,准备在编译内核的同时打上BFS补丁。又看到了《编译2.6.31内核兼打BFS补丁》,便决定开始编译。首先去下载了http://www.kernel.org下载了最新的Linux内核:linux-2.6.38.2(最新版已经是2.6.38.3了,Linux内核更新太快了),并到http://ck.kolivas.org/patches/bfs/下载了2.6.38.2-sched-bfs-400.patch。

结合《编译2.6.31内核兼打BFS补丁》开始编译内核:



cd ~/Desktop/                                                #用户应保证内核源码和BFS均在当前用户的桌面
cp linux-2.6.38.2.tar.bz2  /usr/src/kernels/                 #把2.6.31内核拷贝到/usr/src/目录下
cd /usr/src/kernels/                                         #解压内核源码,并进入源码目录
tar -xvjf linux-2.6.38.2.tar.bz2
cd linux-2.6.38.32/
cp 2.6.38.2-sched-bfs-400.patch   /usr/src/kernels/linux-2.6.38.2/ #将BFS补丁移动到源码目录
patch -p1 < 2.6.38.2-sched-bfs-400.patch                     #这条命令有问题,误导了我,已改正。将BFS补丁打入标准内核中,以便编译使用(如果没有patch这个命令请yum install patch)
#**    以下内容为编译内核的通用步骤,在编译其它内核时可借鉴** #
make mrproper                                                #清除以前编译产生的文件,新下过来的可以跳过,安全期间再做一次
make menuconfig                                              #配置内核参数
cp .config /home/config                                      #将配置文件备份,以供后用
#make bzImage                                                #生成内核
#make modules                                                #生成内核模块
make                                                         #如今编译新内核以上两步已被废除,简化为make  
make modules_install install                                 #自动initrd文件,自动安装内核模块以及修改启动文件menu.lst等,
chmod 755   /boot/vmlinuz-2.6.38.2                           #修改权限,使其可以被运行(使用默认权限可能导致无法启动问题)
vim   /boot/grub/menu.lst                                    #查看启动文件,确认启动配置
ls -l /boot/                                                 #确认内核文件及权限。

之后重启,黑屏了!进入文本模式,发现配置内核时没有把ext4格式支持模块添加,导致系统提示“未知文件系统ext4”!看来配置内核时务必不能心急,而且要有充足的时间配置和检查,切记切记!换回原来的内核,发现之前安装的歪打正着的显卡驱动也停止工作!只好重装系统,规范的安装显卡驱动,再按照此方法重新编译内核,才算成功!

注:使用此内核后,请使用文本模式进入系统并安装Nvidia公版驱动,yum版在此版本内核中不可用,切记切记!

安装Linux显卡驱动;启用桌面特效时遇到的问题及解决方法

上一篇文章中已经说过了,比尔盖子安装了Linux,并安装了显卡驱动。下面就先把在安装显卡驱动过程中遇到的问题和解决和大家分享一下。

系统环境:Fedora 14 i686
显卡:Nvidia Geforce 4 MX | 64M显存(很过时了)

比尔盖子在安装完Linux后,发现又出现以前的老问题:整个Linux,无论是图形界面X-Window或者文本界面,窗口都有严重的偏移。于是比尔盖子就打算安装显卡驱动。歪打正着的安装上去了:

注意,这是歪打正着的安装方法,仅供分享。
如果您按照以下方法安装,可能会出现严重问题!
因此请按照第二章“正解”进行安装!

首先在Nvidia官网上下载了适合我的显卡的最新驱动,进入文本模式使用

sh 文件名.run

安装,不料出现”The Nouveau kernel driver is currently in use by your system…”的错误,没有发现禁用Nouveau的方法(有一个blacklist的方法以前用过,导致黑屏)。后来发现了一个安装显卡驱动的Yum install命令:

yum install kmod-nvidia

于是Linux就开始安装N多依赖包,等一会全部都安装完成了,重启,发现了一个新内核,应该就用这个内核启动,又发现开机画面变成黑屏和蓝带进度条了。稍等片刻进系统,却发现X-Window无法进入了,显示”Error inserting nvidia””No such driver”。这回彻底没招了,不过想了想,既然说”No such driver”,那么可以重新安装第一次下载的那个驱动(命令之前说过了,不用再多说了),很神奇,这回神马”The Nouveau kernel driver is currently in use by your system…”等错误提示都不存在了,最后安装完了还提示我是否在自动配置X-Window,当然选“是”啦!再次重启,依旧是黑屏和蓝带进度条开机画面,卡了好一阵子,终于进入了系统,而且根据系统的提示,3D渲染正常了!

然后又查阅相关帖子,发现原来我安装了过高版本的驱动才导致第一次的悲剧,现在电脑中有两个NV驱动了,于是使用

yum remove kmod-nvidia

卸载了那个过新的驱动程序。

然后得知

开机画面变成黑屏和蓝带进度条了只要安装以下rpm即可:
bootchart.x86_64 : Boot Process Performance Visualization
bootconf.noarch : GRUB configuration utility
bootconf-gui.noarch : Desktop links to bootconf
或者干脆yum install boot*
接着运行bootconf,设置和自己匹配的分辨率,没有适合自己的就选择相近的,只是开机过程的分辨率,不是开机后的桌面分辨率。

这回开机画面也正常了!本以为事情就这样结束了,不料我试图启用Compiz特效的时候,又发生了另外一件事情:启用特效后,所有的窗口的边框全部消失,还有一些程序显示不正常。原来,还要运行一下命令才能解决这个问题:

nvidia-xconfig --add-argb-glx-visuals

再次重新启动计算机,Compiz特效这个问题才算解决了,终于可以旋转立方体的桌面效果了!

正解

1.先安装livna, rpmfusion-free, rpmfusion-nofree,三个源。

rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
rpm -ivh http://rpm.livna.org/livna-release.rpm

2.输入“yum -y install kmod-nvidia glx-utils”并回车。注意,如果您使用的是支持超线程技术的 CPU 或者双核 CPU,请用“kmod-nvidia-smp”代替“kmod-nvidia”,不过绝大多数情况下 yum 会自动选择合适的版本。如果您用的是很旧的 nVIDIA 显卡(比如比尔盖子的),那么就应该用“yum install kmod-nvidia-96xx”或“yum install kmod-nvidia-legacy”。

3.安装nvidia官方驱动后,大都数人开机画面变成黑屏和蓝带进度条了只要安装以下rpm即可。
bootchart.x86_64 : Boot Process Performance Visualization
bootconf.noarch : GRUB configuration utility
bootconf-gui.noarch : Desktop links to bootconf

输入以下命令即可安装:

yum install bootchart bootconf.noarch bootconf-gui.noarch

接着输入bootconf,设置和自己匹配的分辨率,没有适合自己的就选择相近的,只是开机过程的分辨率,不是开机后的桌面分辨率。

4.OK了

伪装360——记一次木马清除过程

今天比尔盖子早上打开电脑,发现桌面上多出了“淘宝网”的图标,Internet Explorer的位置也有些变化。于是怀疑中了恶意插件,想用批处理删除,不料完全没有作用!又仔细一看,发现开始菜单托盘处多出了“360安全卫士”,我可没装这个东西。看来是中了严重的木马了。

假IE和假"淘宝网"图标

因为本人比较懒,所以想下载一个真360干掉木马。于是用Firefox访问360.cn,无法连接!看样子是Hosts文件被修改了。

被恶意修改Hosts导致无法访问360官网

于是打算手工修复Hosts。但在比尔盖子打开文件夹选项,想“显示隐藏文件”时,发现这个选项已经不翼而飞!

“显示隐藏文件”的选项不翼而飞

没办法,只好通过“搜索”找到了Hosts文件,打开后发现病毒并不只是屏蔽了360官网,更有瑞星、卡巴斯基等等!

被恶意修改的Hosts文件,屏蔽了大量安全网站

立即将这些东西删除——希望这个木马不会自动再次修改Hosts。又下载了冰刃——对付骇客后门的好工具,果然发现了木马病毒的踪迹!

木马在D盘中,伪装成了360

立即结束进程!最后下载了360安全卫士,经过检测,结果触目惊心!

360体检结果

插件查杀结果

木马查杀结果

最后重启计算机,发现假360图标已经消失,确认木马彻底彻底清除后,卸载了360安全卫士。

疯狂刷机——三星GT-I5508倒霉刷机经历

比尔盖子有一台三星GT-I5508的Android手机,性能虽然可以,但是比尔盖子的手机是中国联通定制版的,每次开机都会“进入WO的世界!”;系统中也有一些中国联通的内容。另外,原版手机中所带有的Google内容均没有,手动安装了一个Google地图,还可以用,安装菜市场(电子市场)就不行了,一闪就退出。如果我是个联通用户也就忍了,可我是中国移动的手机用户啊!

今天终于决定把它刷掉。下载了台版I5508ZUKA6刷机包和Odin Multi Downloader v4.28,安装了驱动,另外下载了spica.ops。开始刷新,Odin Multi Downloader v4.28已停止工作!手机就这样刷坏了,幸好还能进Downloading模式(俗称挖煤模式)

于是去疯狂搜索,有人说是Win7数据执行保护造成的,可是我把它彻底关闭也没有作用。换了个刷机包问题依旧,看来是系统兼容性问题啊,于是下载了一份Windows XP,本来想转双系统,不料操作失误把Win7给覆盖了!算了,还有大事呢,先刷机吧!

Odin Multi Downloader v4.28遇到问题需要关闭!晕,看来这手机变成了传说中的砖头?不应该啊。最终,发现一个蹊跷的地方,就是软件上方的型号显示的是“Odin Multi Downloader (GT-I5700R)”,而并不是I5508,于是便怀疑是刷机的OPS文件的问题。经过一番疯狂搜索,发现我的推测没问题,I5508刷机那能用spica.ops啊,明明得用 欧版I5503 的EUROPA_I5503_v1.0.ops!

于是下载了这个文件,这回PASS了。不但把手机刷好,去掉了烦人的“进入WO的世界!”和中国联通的定制内容,还将全套Google应用刷了回来,菜市场(电子市场)也正常了!

哎,这次刷机损失不大,但是不料,把Win7也给刷没了,改天重装系统吧!

《再遇硬盘问题——硬盘经常间歇式瞬间停转》的后续报道

比尔盖子的硬盘抽风过很多次,每次都是停转,便写了《再遇硬盘问题——硬盘经常间歇式瞬间停转》,最终判断为电压不稳,购买了UPS,话说这网购大件就是慢,现在还没送到。但是比尔盖子今天发现了硬盘停转的主要问题,不是电压。

比尔盖子刚刚拆开机箱,想看看这硬盘到底缓存大小是多少,但是发生了一件怪事:比尔盖子的SATA-IDE转换卡的SATA数据线灯突然灭了,这时硬盘也发出了停转的声音,瞬间数据灯伴随着硬盘启动的声音恢复了正常,如此反复好几次,一看电脑,早死机了。

SATA-IDE转换卡

全速运转的SATA-IDE转换卡

莫非是和SATA数据线有关系?比尔盖子首先发现SATA-IDE转换卡有些松动,便往里插了插,但开机后依然出现硬盘停转的现象。无奈索性拔掉机箱电源,将SATA数据线两端都拔了出来,终于发现了问题的元凶:SATA数据线的一端有轻微的损坏!

SATA数据线

挂彩的SATA数据线

额!看来得改天去百脑汇买根新的SATA数据线了!

比尔盖子已升级到Windows 7 Service Pack 1

刚才,比尔盖子发现Windows 7的自动更新已经开始推送Windows 7 Service Pack 1了(火星了?),便立即升级之。本次升级没有什么很大的变化,不过比尔盖子注意到微软在淡化Windows 7 Service Pack 1的作用,而且据说也有一些性能提升,所以比尔盖子还是建议大家升级的!

把CPU频率提回来——Thinkpad X61去掉电池CPU降频的完美解决方案

比尔盖子有台Thinkpad X61,电池08年就光荣牺牲了,电池挂彩了不要紧,要紧的是CPU的频率就会一直处于强行降频的状态,无法满速运行。但电池实在是太贵了,8芯的高达1000余元,而非原装4芯也要700多元。最近发现购买90W电源适配器也能解决问题,但是那也得要300多啊。

但昨天比尔盖子发现了一篇文章X61极限减负篇――1.16KG,里面提到

但是问题随之而 来,可能不少用户也已发现,当X61不插电池,直接接交流电使用时,CPU无论如何设置电源模式都达不到全速运行。包括X60也有类似问题,而其它品牌的 笔记本尚未听说有此类问题。这意味着上万块钱的东西你只能用它一半的性能,相当不爽。要不再买块电池?原装的实在太贵,4芯也需要六百来块钱,兼容的看了 看淘宝,至少也要两百,且安全性等等方面不敢冒险。反复试验终于找到一个办法―――

比方说把电池放在办公室使用,回家不用电池直接用交流电。当你下班回家关机的时候选择休眠,回家唤醒继续使用,CPU也仍能达到全速运行状态,总算暂时解决这个问题了。

但是这种方法有一个缺陷,回家后使用如果重启一下的话,CPU频率依然达不到全速运行。于是继续摸索,也包括上网收集资料,试了笔记本硬件控制软件 NHC2.0,因为软件出得较早也没有更新过所以对新平台支持并不好,无法控制CPU运行速度。于是又想到使用超频软件或许可以,试了 softFSB,CPUFSB,都无法使用,然后终于遇见救星――CrystalCPUID。通过它实现了不插电池模式下的CPU全速运行。

于是按照文章中的方法,下载了CrystalCPUID,安装后选择菜单“功能”–>“Intel增强型speedstep控制”,然后点击“允许修改电压”。之后“新建电压”处由灰色变为可调节状态,根据你的CPU最大可承受的电压范围选择一个较高的电压,注意千万别超过最大额定电压,否则CPU有提前退休的危险!(最大额定电压最好不要看crystalcpuid里的,自己上网查下资料保险些),如T7100的CPU选择1.2V较为保险,注意不要超过T7100的上限1.3V。

调好电压以后就可调整倍频了(超过频的都知道不加压调倍频会死机的),如T7100的CPU倍频设为9,以上操作如图,(点击看大图):

设置完成后,也可以直接选择“创建桌面快捷方式”,这样下次要设置只需直接双击桌面图标即可,如果连双击图标也嫌麻烦,更可以把快捷方式放到“启动”项里,非常方便!

这样设置以后,大家可以试试Super π,或者用CPU-Z看看。怎么样,满速运行了吧。

成果:本次提升频率节省了买电池的1000余元或买90W电源适配器的300元!

疯狂超频——闪龙3000+的超频经历

站长目前用的电脑相当落后,但是经过一番升级用的还是不错的,但是这个CPU的性能不怎么样,于是站长开始摸索超频的方法,结果这块OEM主板A7N8X-LA没有高级硬件设置的选项,只能软超频了。

(点击看大图)

先上配置:

超频软件:

 

超频前测试:

超频后测试:

 

这次的超频还是令比尔盖子相当满意的,Super π 的计算时间居然缩短了10秒钟,国际象棋的成绩也提高了100多分。

版权所有 © 2025 比尔盖子 博客

主题设计 Anders Noren返回顶部 ↑