比尔盖子 博客

Tag: nvidia

折腾Nvidia分辨率,启用uvesafb

Nvidia不支持KMS已经令人诟病很长时间了,可不支持就是不支持。我们只能通过各种方式,来获得一个在没有KMS情况下完美/半完美的分辨率。有些幸运的人,在通过添加内核参数vga=791/792,就成功让自己的1024×768显示器配合VESA使用最佳分辨率了。而有些Nvidia的显卡BIOS还不太一样,有的在最差的状态下只支持800×600。这样的80×24终端除了复古,没人想要吧。
Continue reading

重装系统,并编译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了

Copyright © 2021 比尔盖子 博客

Theme by Anders NorenUp ↑