Archive for the '故障分析' Category
升级了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.不是很快,内核里面应该还有一些可以优化的,呵呵.
解决了gentoo下的luit乱码/崩溃的问题
问题的起因是这样的: 我之前的那个sssh快速登录脚本,到了gentoo下,发现就不灵了,输完命令回车,就直接出错退出了,在排除了expect的问题和ssh本身的问题以后,很快就把问题定位到了luit,luit是个用于装换终端程序编码的东东,我的sssh脚本就是靠它登录gbk的远程服务器的.但是gentoo下,却出了问题.
于是拿个gb2312编码的fcitx的config文件做了下测试,如下:
$ luit -encoding gbk cat ~/.fcitx/config
段错误
而执行 luit -encoding gb2312 cat ~/.fcitx/config 出来的又是乱码.(ubuntu下不管是gbk还是gb2312都是正常输出的.)
然后我就strace了一下:
strace luit -encoding gbk cat ~/.fcitx/config
发现有这样的输出:
open(”/usr/share/fonts/encodings/encodings.dir”, O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4526, …}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78ff000
read(3, “128\ngb18030.2000-0 large/gb18030.”…, 4096) = 4096
open(”/usr/share/fonts/encodings/large/gbk-0.enc”, O_RDONLY) = -1 ENOENT (No such file or directory)
马上 ls /usr/share/fonts/encodings/large ,发现有个 gbk-0.enc.gz 但是没有 gbk-0.enc 这个文件,所以上面报打开失败.而且这个文件名是从 /usr/share/fonts/encodings/encodings.dir 里读取的.所以看了下:
$grep gbk /usr/share/fonts/encodings/encodings.dir
gbk-0 large/gbk-0.enc
gbk-0 large/gbk-0.enc.gz
发现有这么两行输出,猜想会不会是顺序问题,意思把那文本里面的这两行对换了下位置,再 luit -encoding gbk cat ~/.fcitx/config 的时候,发现输出正常了,哈哈,当然sssh脚本又可以用了~~
gentoo下gedit不能自动识别编码的问题
gentoo下的gedit,无法自动识别编码,打开fcitx的配置文件之类的那种GB2312的文件,中文就是一片乱码了。
想想ubuntu下的gedit是会自动转编码的,肯定是配置问题,上irc问了,oahong告诉我个地址:http://www.linuxsir.org/bbs/showthread.php?t=310960&highlight=
解决办法就是: $gconftool-2 –set /apps/gedit-2/preferences/encodings/auto_detected [UTF-8,CURRENT,GB18030,BIG5,ISO-8859-15,UTF-16] –type list –list-type string
也可以在 gconf-editor 里面改。
gentoo下的firefox鼠标中键不能关闭标签问题解决方法
这个问题不难,但是也记录一下。
ubuntu和windows下的firefox,都可以中键关闭标签,习惯了这种操作方式以后,发现gentoo下的居然不是这样的,点了中键以后,居然把剪贴板的内容贴到地址栏了,呵呵。
解决办法是firefox打开about:config,然后找到middlemouse.contentLoadURL这个键值,并设置为false,就好了。
flash插件引起的怪问题?
今天发生了一件挺郁闷的事情,我的电脑突然黑屏,而且不止一次。
黑了以后可以进入tty1,发现一堆进程都还在,但是Xorg这个进程defunct掉了,而且-9都杀不死,杀它的父进程gdm也杀不死,只能reboot了事。
但是reboot了以后,不久又是黑屏,不过这次我慢慢注意到了,是在我最小化firefox的那个瞬间黑掉的。
于是想是不是firefox刚升到3.0.2版本的缘故呢?但是问了irc里面的很多人都说没问题,而且自己也不是每次最小化的时候都黑屏的。
又黑了一次之后,总结出更细的规律了,那就是,只有打开有flash的页面的时候,最小化才会黑掉。于是马上想起,之前由于某个网站的要求,我曾把flash插件升级到“shockwave Flash 9.0 r124”,应该就是这个原因了,幸好原来的so文件有备份,马上换回“shockwave Flash 9.0 r31”,至少到现在还没发现问题,再观察一段时间看看。
解决了gentoo的man乱码问题
gentoo下,装了 app-i18n/man-pages-zh_CN ,但是man ls,就是一堆地乱码,虽说大家都推荐看英文的man,但对于我这种英盲来说,有个中文的man页,还是有必要的,即使做为辅助也好。
在gentoo论坛里,其实很久以前就有人提过此问题,虽然有解决办法,但是比较麻烦,而且有点小郁闷的是,居然过了这么久,此问题的包还没有正式进入gentoo的源。
从上面那帖子里,可以知道,问题的原因就是man用的 groff/nroff 不支持utf8.解决办法也就是换一个nroff而已。照着做估计也没问题,但是后来发现gentoo-china-overlay里面其实是有groff-utf8的。所以就找了个更简单的办法:
我不想用layman把整个overlay都下载下来,所以用了如下命令:
cd /usr/local/portage 之前我就建过这个目录,没的话,参考这里
mkdir -pv app-text/groff-utf8
wget “http://gentoo-china-overlay.googlecode.com/svn/trunk/app-text/groff-utf8/groff-utf8-0.ebuild”
ebuild groff-utf8-0.ebuild manifest
emerge groff-utf8 -av
完了之后,按提示
vim /etc/man.conf 将里面的 NROFF 那行改为 NROFF /usr/bin/groff-utf8 -Tutf8 -c -mandoc
完成了。
解决gentoo硬盘访问速度问题
之前一直感觉我的gentoo系统特别慢,昨晚终于注意到,一有点什么动作,硬盘都是满负荷的。于是 hdparm -t /dev/hda 了一下,好家伙,居然只有 1.8MB/sec,ubuntu下可是有45MB/sec的哦。而且 hdparm -i /dev/hda 显示,目前用的是udma5,而不是正常的udma6。而且,ubuntu下是 /dev/sda ,按说我的sata硬盘就不应该是 hda× 的。于是修改内核选项, Device Drivers里面把 Serial ATA (prod) and Parallel ATA drivers 选上了,重新编译,用新内核启动,哈哈,居然挂不上根分区了,没启动就 kernel panic 了,而且把grub里面对root=后面改成 hda9 和 sda9 都不行,郁闷了,心想可能是SATA的选项和原来的选项冲突了?于是再把上面的 ATA/ATAPI/MFM/RLL suport 整个去掉了,重新编译一次,哈哈,这回终于好了,修改/etc/fstab,用上全套的sda×,速度终于上来了。
又是gentoo的若干新手问题
先是打开compiz没边框的的问题,原因是A卡驱动没装好,装上闭源驱动(emerge ati-drivers),然后从ubuntu复制一份 /etc/X11/xorg.conf 搞定。汗的是,原来的gentoo系统居然是没这文件的。。。分辨率什么的居然都还是没问题的。。。
然后是pidgin一打开就提示:
Invalid certificate authority signature
The certificate chain presented by rsi.hotmail.com does not have a valid digital signature from the Certificate Authority from which it claims to have a signature.
google了一下,是 gnutls 这个USE搞的鬼,全局去掉这个USE,重新编译一下,搞定。
再然后是pdf查看问题,emerge了一个evince,发现打开任何一个文件都提示:
无法打开文档
无法处理的 MIME 类型:“application/octet-stream”
来来回回搞了好久,试了很多USE都不管用,最后发现用root登录的话,是完全没有问题的,排除了一些权限之类的问题以后,最终确认原因是:我这用户的家目录原来是ubuntu的,由于ubuntu和gentoo的gnome版本不一样,导致的问题。根据提示,搜索 mime,结果就找到了元凶: ~/.local/share/mime ,删之了事。
还有就是emerge了scrot了以后,使用一直报错:
giblib error: Saving to file XXXX failed
解决办法是,加png这个USE,重新编译 giblib 。
umount -l
有时候,umount一个分区,提示设备忙,加上 -f 参数也不管用,然后 lsof 路径 又找不到任何进程,这时候就可以用 sudo umount -l 路径 卸载之。
man 如是说:
-f Force unmount (in case of an unreachable NFS system). (Requires kernel 2.1.116 or later.)
-l Lazy unmount. Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)