禁用libata的acpi功能以解决Linux硬盘假死问题

No Comments

这两天我把系统换成了Archlinux,在用livecd引导启动准备安装时就遇到了问题——启动过程极其漫长;而在安装软件包、高强度读写硬盘时,也出现了假死问题。

类似的问题在进行了系统升级后仍然存在,具体表现为:启动、编译软件、使用hdparm等高强度I/O时,系统假死,在/var/log/errors.log中可以看到以下记录:

1
2
3
4
5
Jan 20 15:41:01 localhost kernel: [   34.400019] ata1.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen
Jan 20 15:41:01 localhost kernel: [   34.400044] ata1.00: failed command: READ FPDMA QUEUED
Jan 20 15:41:01 localhost kernel: [   34.400064] ata1.00: cmd 60/08:00:a0:5e:38/00:00:3a:00:00/40 tag 0 ncq 4096 in
Jan 20 15:41:01 localhost kernel: [   34.400066]          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
Jan 20 15:41:01 localhost kernel: [   34.400103] ata1.00: status: { DRDY }

(另外几次假死有的是WRITE FPDMA QUEUED。)

可以看到在假死的时候出现了ata frozen,ncq错误,无法完成读/写队列。上网查询,发现论坛、bug tracker、Q&A上有大量相关的信息,错误日志与此类似,可是大都没法彻底解决——归根究底是以上的日志信息太少,只说明了是ata错误,读取超时。通过其他多方面测试、尝试最终可以知道,这些大都是硬件软件配合问题造成的——对于某些控制器、驱动器,内核ata模块的acpi、ncq等功能无法正常工作,导致I/O错误。解决方法有的需要更换硬件,有的需要更新固件,还有的需要使用内核参数,禁用某些功能或是限制SATA速度。

其中数量比较多的一种就是libata的acpi节能功能有问题,导致硬盘供电不足。根据网络上的说法,在大容量硬盘上这个bug也更容易出现。我的这个硬盘就是新买的500GB 7200转,功率比较大,经过尝试,确实是这个bug导致的。

截止发文之时,没有找到相关补丁,只有一个简单直接的workaround:禁用libata的acpi功能。方法很简单,也没有太多副作用,只要添加内核参数(写入GRUB的启动参数即可):

1
libata.noacpi=1

PS1:不建议直接禁用全部的acpi功能(即使用 noacpi 参数),此将禁用所有的高级电源管理功能,可能导致休眠、挂起以及笔记本亮度调节失效等等副作用。

PS2:ACPI是Advanced Configuration and Power Interface(高级配置与电源接口)的缩写。而与之相似的APIC是Advanced Programmable Interrupt Controller(高级可编程中断控制器)的缩写,与扩充硬件中断有关,与引起Linux诸多问题的ACPI基本毫无关系,请不要混为一谈,随意禁用APIC。

Fedora中的kmod与akmod

1 Comment

Linux Kernel有一大特性就是模块化,通过kernel module(内核模块,Fedora中缩写作kmod)来扩展内核功能(cf. what is a kernel module?)。最常见的一类内核模块就是驱动程序(driver)。由于许可证或使用规模等原因,一些硬件的驱动无法进入kernel,只能通过内核模块的形式来加载使用。在Fedora中如果你启用了rpmfusion-nonfree源,你会看到大量kmod-打头的软件包,大多都是rpmfusion帮我们编译、打包好的各类私有驱动(比如nvidia、ati的显卡驱动,broadcom的网卡驱动等等)。但是,你也许会注意到,几乎每一个kmod-*软件包都有一个对应的akmod-*软件包,而很多“私有驱动安装教程”都是直接让你把两个都装上。那么,这两个到底有什么区别呢?
More

Fedora 15下Adobe Air无法安装程序

7 Comments

UPDATE: ADOBE已经正式宣布停止更新AIR FOR LINUX(难怪之前对BUG汇报视而不见),看来之后LINUX用户就要和AIR说再见了,什么用AIR实现跨平台最终还是成为了一场梦,还是拥抱WEB吧。

上周冲着GNOME3装了Fedora 15 Lovelock,放弃了从接触LINUX以来就一直在使用的Ubuntu(准确的说,是删掉了Ubuntu 11.04,实在受不了Unity了)。从安装到后来的配置确实都让我不大不小地折腾了一番,这些等到以后有空的时候再细细说吧。今天我就想说说发现的一个BUG——Adobe Air在Fedora 15下无法使用,准确说是无法安装Air程序包。
More

Sunpinyin加速脚本 – 内存缓存词库

24 Comments

UPDATE2:感谢“据说要有”的建议,已修改脚本。

UPDATE1:脚本在异常退出(比如收到KILL信号,系统断电等)后再次运行时会有严重的BUG,导致用户词库丢失。现已修正,强烈推荐各位使用者更新。如果已经有过异常退出的用户,请退出脚本后至~/.sunpinyin/目录下检查(ls -l),若userdict为符号链接,请删除之,sunpinyin将重建新的用户词库。对因此造成的数据损失表示抱歉。

之前在一篇文章里,我提到了在Ubuntu下使用fcitx + sunpinyin配合hubertstar的大词库实现媲美搜狗的流畅输入,但是仍然有一个大问题——当词库过大的时候输入中会出现停顿现象,严重影响用户体验(因此我当时也只推荐使用small版词库)。

这是因为fcitx和sunpinyin的词库都是使用SQLITE,在输入时需要反复查询,由于词库的特殊性(前后两个查询的词经常离得很远),SQLITE的缓存机制很难起效,因而只能反复读硬盘,导致速度很慢。

不过,在大宝的启发下,我参考了Ubuntu中文论坛里hubertstar的帖子,以及大宝的博客,我写了一个供Ubuntu使用的sunpinyin加速脚本,效果非常不错,拿上来和大家分享。

More

解决PulseAudio的爆音问题 – 大幅提高Ubuntu音质

2 Comments

很早就发现Ubuntu下的音量调节范围比Windows要大得多,刚开始还以为是Linux的音频驱动更NB而窃喜,然而后来发现这并非是什么好事——音量条左端10%和右端20%几乎是废的,前者声音小得根本听不见,而后者则大得出现了爆音。有意义的音量条长度变短直接导致了音量调节非常困难,而且,就算是中间音量也经常出现爆音。

作为一个GEEK,遇到问题怎么能这样被难倒?必须得认真研究解决之!

本文中提到的Ubuntu均指10.04及以后版本。

More

Fcitx Sunpinyin – Ubuntu下享受输入的快感

13 Comments

在Ubuntu下的中文输入一直是一件很蛋疼的事情……原先使用多年的scim输入平台已经腐朽不堪,现在默认的ibus虽然是一个优秀的平台,但是缺乏优秀的输入法——常用的ibus pinyin的算法实在是令人无语,只好通过使用更大的词库(100MB+的搜狗词库)来弥补不足,不过效果也只是一般般,而且由于词库变大了许多,响应速度也变慢了。我后来知道了一个基于统计语言模型的优秀输入法——sunpinyin,于是尝试安装了ibus sunpinyin,果然组句能力非常强大,但词库实在是太小了,弄了一个大词库后发现性能又一次出现了大幅度的下降……

性能低下的主要原因,是因为他们都是运行于一个“输入平台”ibus之上的——越复杂的系统架构会带来越低下的性能,ibus是一个十分灵活的、能够安装各种语言的输入法的平台,十分臃肿,其性能很难好到哪里去。我们需要的,仅仅只是一个简单的——拼音输入法!其实早就有一般人想要这么干了,于是他们写了一个叫做fcitx的轻巧、纯粹的输入法。

我第一次接触fcitx还是v3时代,最大的感受就是——真的是太轻了,甚至连gtk都不依赖,而且只有一个用GBK编码的中文配置文件(蛋疼)……速度果然很快,算法也还行。不过在我试图导入大词库后,发现了一个致命的问题——fcitx会把整个词库读到内存里……最终,fcitx 3.x难用的配置方式、较差的稳定性、难看的界面以及表现平平的算法令我抛弃了它……

More

可用的Google Docs IP

3 Comments

Google Docs在天朝上不了是公认的事实了,不过其实也不算完全被墙,只要添加几条hosts记录就行了(用OpenDNS也无用,因为返回的那几个IP被墙了)。

记录几个大陆可用的Google Docs IP,将以下添加到/etc/hosts(*nix)或者C:\Windows\System32\Drivers\etc\hosts(Windows)即可。

1
2
3
4
5
6
7
8
9
10
74.125.227.2 docs.google.com
74.125.227.2 docs0.google.com
74.125.227.2 docs1.google.com
74.125.227.2 docs2.google.com
74.125.227.2 docs3.google.com
74.125.227.2 spreadsheets.google.com
74.125.227.2 spreadsheets0.google.com
74.125.227.2 spreadsheets1.google.com
74.125.227.2 spreadsheets2.google.com
74.125.227.2 spreadsheets3.google.com

添加以上条目后,http和https访问Google Docs都没问题。

另外,AutoProxy的GFWlist里有https://docs*.google.com,其实没有必要,禁用掉吧……

Firefox插件精选集——极速浏览 & 强大开发

No Comments

由于前两天折腾Elementary for Firefox的时候不小心把FF搞得乱七八糟,最后只好咬牙删掉了已经使用一年多的配置文件夹,重新调校。于是正好趁机重新调整一下半年未变的插件列表,以KISS(Keep It Simple Stupid)为原则重新挑选轻量、强大的插件。所以便有了以下两份我精心制作的插件精选集:

(以下所有插件都能在Firefox 3.6下完美工作)

All for Speed

一切为了速度。此精选集适合一般网页浏览者,功能强大、轻量快速。

A lite and powerful collection consisting of mouse drag & go, tab enhancement, ad-block, download manager, auto proxy, etc. Strongly enhance your browsing experience. But everything is lite and fast.

包含:Adblock Plus、DownThemAll!、Firefox Sync、AutoProxy、QuickDrag、Tab Utilities Lite。提供了去广告、下载器、书签/密码/配置同步、自动代理、鼠标拖拽和标签页管理等功能。基本满足了日常需求,并且尽量选用轻量版,对速度几乎没有影响。

特别说明两点:一、放弃了著名的Tab Mix Plus,虽然功能强大,但是对速度的影响实在是太大了(能让首次启动耗时半分钟…),而Tab Utilities作为后起之秀效率要高上不少,而且功能毫不逊色(Lite版就已经能满足基本需要);二、放弃了许多国人常用的Fasterfox,一来不再更新,对FF 3.6兼容不佳,二来默认设置却又违反了RFC协议,对服务器造成极大负担,但实际效果却又不甚明显,如果确实有需要可以用Ailurus来自动调整有关设置。

Development Kit

专为网页开发人员准备,让FF成为最强大的WEB调试平台。

A powerful collection for web developers.

包含:Firebug、Greasemonkey、Web Development、User Agent Switcher、wmlbrowser、Page Speed。提供了强大的开发人员工具、用户脚本管理器、代码校验、UA切换、wml页面支持、页面载入速度优化等。是一个完备的开发人员工具箱。

在Debian/Ubuntu下安装使用Tor+Vidalia套件(Up-to-date)

8 Comments

网络上有不少在Ubuntu下安装Tor的教程,其中大部分让你直接从软件源安装,然而由于种种原因,tor已从Ubuntu软件源中剔除,而且源里的vidalia也是很旧的版本的了。(本来有个tor的PPA,也已经“停止维护”了;ubuntu-cn源也把tor剔除了。)有部分较新的教程注意到了这点,指导用户从mirror.noreply.org/pub/tor这个源获取,然而这样做也有问题:一、这个源是针对Debian的,且未及时更新(如geoip严重过期),打包还十分粗劣,兼容性、稳定性有问题;二、源的pgp密钥已经过期,同时,由于源里的deb包并非官方版本,而是由某个不知名的组织重新打包过的,安全性值得商榷。所以我在这里介绍一下正确、可行、简便的tor安装方法。

以下对于Debian/Ubuntu较新的发行版均适用。
More

Ubuntu入门指南

No Comments

这是我在去年学校的社团巡礼中配合Ubuntu 10.04光盘发放所写的简略的快速入门指南,参考了清北服务网在北京高校发放光盘时所编写的手册。

再次强调一下,本文档遵循CC(by-nc-sa)协议(详见右侧边栏)。

GOOGLE DOCS地址:https://docs.google.com/document/edit?id=1iJAqSIEoip7j6uapBFHx4hh5xLk7NvcbYZlbgduCm7A&hl=zh_CN

DOC文档下载地址:http://down.robotshell.org/UBUNTU%e5%85%a5%e9%97%a8%e6%8c%87%e5%8d%97.doc

Older Entries

第 1 页,共 2 页12