I am LAZY bones? AN ancient AND boring SITE

分类: '故障分析' 的归档

终于在开源驱动下开起了compiz

写之前那篇blog的时候,我还是刚用上开源驱动.但是怎么试性能都上不去:
xorg.conf 也改了很多次,把 /etc/make.conf 里的 VIDEO_CARDS 改成 radeon 和 radeonhd 都试过,mesa xorg-server也来回编译过好几次,包括1.6的xorg-server,但是 glxgears 始终只有100FPS左右(fglrx的时候可以到2500+).而且,更可恶的是开compiz不是没边框就是直接白屏…
后来,查看 Xorg.0.log ,发现里面有这么几行:

drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
[drm] failed to load kernel module "radeon"
(EE) RADEON(0): [dri] RADEONDRIGetVersion failed to open the DRM
[dri] Disabling DRI.

这种/dev/xxx的东西,马上就想到了是内核的原因,后面wd告诉我说要打开这个内核选项: Device Drivers -> Graphics support -> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) 并选中下面的A卡模块.
马上重新编译了内核,再启动,果然那几行错误没有了, glxgears 已经到 1100FPS 以上了.开compiz也正常了,整体感觉还是比较流畅的.
先就这样用着吧,不折腾了~目前我的情况是:

Mobility Radeon X1700 (RV535)
VIDEO_CARDS="radeonhd"
sys-kernel/gentoo-sources-2.6.30-r1
media-libs/mesa-7.4.2
x11-base/xorg-server-1.6.1.901-r3
x11-drivers/xf86-video-radeonhd-1.2.5
x11-wm/compiz-0.8.2-r2

gentoo升级后的若干问题

半个月前的某一天,我正在对gentoo进行常规更新的时候,记得当时emerge到了wine,突然屏幕一黑,机器就保护性关机了…用手一摸CPU附近,那是相当地热…
于是,最近一段时间都没有升级过gentoo.
直到后来,我把本本后盖打开,清理了一下里面的灰尘.听风扇的噪音,明显比之前小了很多了,温度也没那么夸张了.于是又开始升级了,一看已经积累了108个包要编译了.这还是我mask掉新内核的结果.
编译之后,nautilus 到了2.26.3,晚上下班后,重启进系统,就发现不对劲了,一堆的窗口把窗口列表塞满了… 后来经过试验发现,只要我一把 /apps/nautilus/preferences/show_desktop 这个勾去掉,就会启动N多个nautilus的窗口,下面的窗口列表里瞬间被挤满了..并且还在不断增加,直到内存耗尽…
问了keke他的情况刚好和我相反,是勾上那个勾勾才会出问题…这个估计是nautilus的bug了,没时间深究,等上头更新了,现在就先看着本不想看到的桌面吧…

还有一个好玩的问题,就是我的音量调节的图标没了,之前还以为是 gnome-volume-manager 这个包的问题,后来TX提醒我才想起这个volume是卷(磁盘分区)的意思,和音量根本没关系,汗了…这算不算英文词汇的匮乏呢?
其实,那个音量调节的applet是在 gnome-base/gnome-applets 里面的.重新编译了一下,又可以用了.而且,那调音量的滚动条变横着了…我怎么觉得还是没竖的好看呢?

====20090630更新====
nautilus疯狂打开窗口的问题终于好了…难道是昨天编译了gnome-base/gnome-session-2.26.1-r1的原因?不管怎么样,我的桌面总算又干净了~

DELL A840上的ubuntu

前天MM公司善心突发,给她们每人配了台本本,于是MM到手一台基本上是DELL里面价位最低的A840,打开一看,预装的是ubuntu 8.04,哈哈,这下好玩了…
默认的系统东西装得也蛮全的了,而且硬件驱动自然是很完美.无线,compiz之类的都没问题.
于是把一堆不需要的语言包卸载以后,就开始升级,升到hardy的最新内核,问题却出现了: 无线用不了了,声音也有问题…
搜索一下,发现这个版本的内核好像对它的硬件支持不太好,后来也证实了这点,从8.04的光盘启动,居然会出现busybox,这还是预装ubuntu的电脑呢!唉.
然后说升级到8.10会好,于是就升级,也出现了一些小问题,是 xulrunner 需要的几个库文件不存在,看了一下,只是少几个符号链接,补上后,顺利升级成功了.发现声音好了,无线还是不行,搜索了无线网卡的型号: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter 发现要安装一个 linux-backports-modules-intrepid 的包,装上重启,无线也正常了,至此硬件驱动基本恢复到完美的水平…

找到了访问code.google.com时断时续的原因

最近几天,我这边访问code.google.com都是时断时续,搞的我很郁闷。
今天研究了一下了,发现 ping code.google.com 也是时断时续,而且不通的时候,返回的IP都是 72.14.203.* ,而通的时候,IP都不是这个段的,可能是 209.85.175.100 这样的一个IP。
所以原因很明显了,要么是在DNS环节被动了手脚,要么是 及.艾服.达不留 封了部分IP(话说2会期间抓得紧,盾牌升级出点小错也是情有可原的)。
但是,咱天朝的网络一向都是自由、顺畅的啊,所以不禁怀疑起自己的RP了。。。
没办法,RP不行就只能靠JP了,

echo "209.85.175.100	code.google.com" | sudo tee -a /etc/hosts

搞定。
=====20090624 update=====
现在上面这个IP也不行了,要用 72.14.203.102 这个IP了.

终于用上了9.1的官方A卡驱动

经过好几天的折磨(详情可以看这里),总算成功用上了新的A卡驱动。
之前一直是用的8.552的驱动,可以开compiz,但是mplayer用xv不行,开个 googleearth也闪得厉害。
也曾经升级到 8.561 ,就已经发现了问题,当时是开了gdm的,开机以后,出来gdm的界面,但是都来不及输入用户名和密码就黑掉了,过一会儿又会显示gdm,又挂掉,如此反复,6次以后会出来提示说挂了6次,不启动了。那时候觉得 8.561和8.552差不多,就mask了8.561的版本,回退到8.552了,也正常了。
但是最近这个8.573据说是解决了闪的问题,更新蛮大的,所以又想升级,但是还是和8.561一样的错误,一到gdm就崩溃。连续重启动。
然后经过千辛万苦,终于发现是 /etc/X11/xorg.conf 的 Section “Device” 一段里面的 Option “TexturedXRender” “on” 引起的错误。把这行注释以后,就整个都好了。哈哈。但是说来也怪,这个配置文件是ubuntu生成的,在ubuntu下运行没问题,在gentoo的8.552版本驱动下也没问题的啊。。。
还有,就是为什么我开了compiz以后,google-earth还是会闪呢?貌似没有多大的提高啊。。。谁能告诉我还需要如何配置吗?

取消电源按键的事件处理

之前的现象是在gnome-power-preferences里面,设置了”按下电源按钮时:”为”询问”.但是其实真的按下电源按钮的时候,gnome-power-manager的对话框确实出现了,但是根本来不及点,一闪而过的就关机了…
后来,TX告诉我是acpi搞的鬼,处理方法就是修改下 /etc/acpi/default.sh
打开此文件一看,就明白了,有这么一段:

case "$group" in
	button)
		case "$action" in
			power)
				/sbin/init 0
				;;

直接把 /sbin/init 0 那行注释掉,就好了,哈哈…

glibc 升级以后,locale-gen 出现段错误

今早升级了 glibc ,etc-update 的时候 /etc/locale.gen 保留了原来的,然后 locale-gen 的时候就
/usr/sbin/locale-gen: line 264: 7515 Segmentation fault “${DESTDIR}”usr/bin/localedef ${LOCALEDEF_OPTS} -i “${input}” -f “${charmap}” -A “${ALIAS}” –prefix “${DESTDIR}” “${locale}” [ !! ]

已知 locale-gen 是调用 localedef 的,如下:

# /usr/bin/localedef -c -i en_US -f UTF-8 -A /usr/share/locale/locale.alias –prefix / en_US.UTF-8
Segmentation fault

而这个 /usr/bin/localedef 就是glibc里面的文件,大家有没有相同问题的?

另外,发现glibc 有这个 patch:1040_all_2.3.3-localedef-fix-trampoline.patch 删掉它也是一样的错。

目前临时的解决办法,是从别人那里拷贝一个同版本的二进制文件,替换掉自己的 /usr/bin/localedef ,然后locale-gen就好用了,系统也正常了,但是这样问题的原因仍然没有找出来.在 sir的gentoo版发了个帖子,看看能不能找到原因.

修改了gentoo的组ID

由于我的/home分区是ubuntu和gentoo公用的,这样不管在哪个系统,都能很方便地公用程序的配置.但却又引发了一个小问题:
ubuntu下 我的用户是 uid=1000,gid=1000的,gentoo下,1000这个gid却被dhcp组占用了,生成的用户组id是1004.
这样就出现了一个怪现象,原来在ubuntu下,用户创建的文件,到了gentoo下,就被当初了dhcp组;gentoo下创建的文件在ubuntu下又是无法识别的组了.由于机器上只有一个用户,所以虽然此问题并没有给我带来什么麻烦,但总归是个隐患.于是想修正它,其实方法也很简单:
就是在ubuntu下,把gentoo根分区挂到 /mnt/gentoo ,然后
sudo vim /mnt/gentoo/etc/group
把里面的1004改成1000,1000改成1004,保存退出.
sudo vim /mnt/gentoo/etc/passwd
把里面的 lily:x:1000:1004::/home/lily:/bin/bash 改成 lily:x:1000:1000::/home/lily:/bin/bash
再执行:

sudo find /home/ -gid 1004 -exec chgrp -h 1000 {} \;
sudo find /mnt/gentoo -gid 1000 -exec chgrp -h 1004 {} \;

好了~万事大吉~~嘿嘿.

升级了ubuntu后,gentoo的gnome启动不了问题

昨天,刚把ubuntu升级成了8.10,就一整天用的都是ubuntu,也觉得挺好的.
今天又想用gentoo了,把menu.lst恢复(一早就知道ubuntu会覆盖这文件的,所以早有准备)以后,启动到也正常.到了gdm,输完用户名和密码以后,傻住了,splash都没出来…
到tty1下面看了一下 .xsession-errors 文件,发现在启动什么seahorse组件的时候,报没有 libgail-gnome ,可能是ubuntu下的gnome更新以后,多启动的东西吧,但是这东西gentoo下还没安装,于是马上eix了一下,gentoo下也有现成的包,emerge了一个,就又正常了~
所以遇到问题,多看看日志输出,还是很有好处的…

谁启动了我的eth0

我的gentoo系统,之前一直存在着一个小问题: 系统启动的时候,都会去尝试启动eth0,然后尝试去DHCP,即使网口根本没插网线也是如此,于是乎这时候DHCP就肯定不成功了,每次都等个10多秒钟,超时了,才能继续后续步骤.结果启动过程就无缘无故地多了10多妙,嘿嘿.
也看过rc-update的结果,也没有多出什么东西来.那是谁启动了我的eth0呢?
后来在irc上问了wd老兄,终于知道了,这个是openrc启动的,而且貌似和udev有关系.
解决方法就是在 /etc/rc.conf 里面的rc_plug_services一项修改为:
rc_plug_services=”!net.eth* !net.wlan*”
这样就不在启动的时候初始化我的网络了,而是到了登录gnome以后,由我的NetworkManager来选择连到什么网络,哈哈,这才是我需要的.
另外, /etc/rc.conf 里面还有一项比较有意思的,就是 rc_parallel=”YES” 可以开启并行启动特性,理论上也可以提高一点启动速度.做完这些后,我的本本从grub到gdm可以输用户名,大概是25s.不是很快,内核里面应该还有一些可以优化的,呵呵.