Archive for June, 2007

修理主板

Monday, June 25th, 2007

家里的老机器终于没有继续健康的工作下去,突然出现了问题。现象是,通电之后,所有风扇都转,硬盘也通电,可以听到硬盘通电的声音,但是显示器却没有任何反应。Google了之后,有人说是主板的电源部分出了问题。轻的,拆下电池放电即可解决;重的,就要修理主板了。在我跟CMOS放电,并且更换了新的电池之后,问题依旧,看来这个属于“重的”,得修。具体是哪儿坏了,心里一点谱都没有。在刘阳同学的提示下,找电容,看看是不是有的电容烧了。果然,在CPU上方发现一个电容比别的都胖了,整个鼓了起来。于是,确定这个电容有问题,看到了一点修复的曙光。

周末去买了电容,5毛一个。回家就开始动手拆旧焊新。不拆不知道啊,这主板上用的锡和普通的不一样啊,熔点比较高,我那个20W的小烙铁有点吃力,不过最终还是拆下来。把新的电容焊上去,插好线,通电,还是不亮。这时候心都凉了,费了这么大劲,它咋就不行呢。于是又把主板拆下来,重新把电容又焊了焊,刚才怕弄怀了,没敢长时间加热。重新焊完之后,插好线,通电,显示器有反应了!这就是一大成功,接着发现内存还是有问题,3条内存,进行排列组合,一条一条地插,最终3条就位,认出256M内存来。总算没白弄,这老机器又开始继续工作了。看看下面图里被我点了红点的电容,比别的都高,这个是新换上去的。

换主板电容

虽然换好了,还有个问题,这个电容的两个管脚是孤立,不知道怎么和其他电路连通的,难道是焊锡渗入电路板的孔里,和里层连上的?

把APE文件转为MP3(续)

Sunday, June 24th, 2007

前两天刚写了一次怎么把ape转为mp3,昨天又完善了一下,就接着续一个。之前只是说了如何把ape转为wav,然后在转为mp3,但是,可能大多数的ape文件都是整张CD的,所以还需要先分割成单个文件。

首先,需要shntool和cuetools。然后,假设有已经转好的CDImage.wav和CDImage.cue两个文件:

$ cuebreakpoints CDImage.cue > offset # 从cue文件中提取时间点
$ shntool split -f offset CDImage.wav

现在已经把wav文件分割成了单个文件了,之后,我们就需要把wav转为mp3了。按之前的方法就可以,但是忽略了cue文件中的歌曲信息,这正是本次的一个重要更新。有人还在网上说没有办法把歌曲信息加入到mp3中去,不如用foobar直接转方便。哎,这都是误解,其实也怪cuetools的文档不太清晰。我发现lame是可以写ID3tag的,所以开始我想自己写一个脚本从cue中提取歌曲信息,写到mp3中。后来发现,cuetools中的cueprint就可以提取这些信息,cuetag就是把这些信息写到mp3里的。但是,cuetag是把歌曲信息写进mp3文件中,并且采用ID3v1.1,这个我不太喜欢。所以,拿过来自己改了改(它是GPL的),就可以实现我的想法了。把wav2mp3.sh放在wav文件同目录下。

$ chmod a+x wav2mp3.sh # 给执行权限
$ ./wav2mp3.sh CDImage.cue split*.wav
# 注意:这里要指定的是分割之后的文件,用*.wav有可能会包含了刚才的CDImage.wav

这样就可以把wav文件转为mp3,并且加入了cue文件提供的歌曲信息。

本脚本用的选项:

-V 0 –id3v2-only
# -V 0 采用VBR,并且使用最高质量;如果希望最高质量,直接用-b 320吧
文件名格式:trackno-song title.mp3,如02-BlahBlah.mp3

可以修改LAME_OPTIONS来选用需要的选项。如果还是什么更多的要求,那就去改脚本吧!

Happy Hacking!

脚本下载:wav2mp3.sh

把APE文件转为MP3

Friday, June 22nd, 2007

原来说过一次关于Debian下听APE音频的问题,但是感觉太简单了,好多细节没说。甚至在我自己想看的时候,都没找到有用的信息。检讨啊!所以,重新再写一次,记录一些细节。

1. 首先,需要mac,lame这两个程序。可以从链接里下载,也可以在发行版里找有没有现成的包。

2. 安装程序。mac的安装方法和原来的一样。

先编译安装mac,然后再安装bmp-mac。如果希望以deb包的形式安装,可以安装checinstall,在编译后,用checkinstall代替make install即可生成deb包。在编译mac的时候,需要./configure –enable-assembly=yes,这样才可以在bmp-mac编译时生成beep-media-player可以识别的.so文件。当然,这需要安装相关的汇编器,如nasm,yasm等。

lame我是从源里安装的,过程就不说了。

3. 安装完mac之后,就可以转APE为WAV了。

$ mac file.ape file.wav -d

然后,用lame转成mp3。

$ lame -b 320 file.wav file.mp3

这里用-b 320是最高质量,也许你希望文件小一点,可以尝试其他。具体的还是要看man lame。

以上这些对我来说够备忘了,如果看这个还想不起来,那就……以后可能还可以写一下怎么把APE刻成CD,慢慢来吧。

无病呻吟

Wednesday, June 20th, 2007

  最近活得有点匆忙,希望太多了,失望也很多。每天6点多下班,进入二环以里就将近8点了。几个好朋友都从国外回来了,都没有什么时间能和她们在一起,心里觉得很别扭。真不知道为什么要活得这么匆忙,忙着工作、挣钱、养家、减肥和删垃圾短信,忽略了很多的人和事情,心里面觉得很自责。

  昨天晚上和两个好朋友吃饭,终于得出了“人之初性本恶”和“除了朋友之间有情谊,其他人不用讲良心,有利益和金钱就够了”的结论。话说得有些狠,可以现实就是这样,它都不给我一点接受它的时间,就把我无情的打倒了。新东方罗永浩老师语录道“真正的猛男,敢于直视惨淡的人生”,其实我是个很爷们儿的人,所以我要勇敢的面对这凄凉的世界。人长大了,毕业了,工作了,谈恋爱了,结婚了,我和身边的朋友们都在经历这样那样的美好和不美好的事情。岁月的变迁总是这样无情的,年轻的容颜稍纵即逝、炙热的爱情也会悄然离去,当我们都能够用一个平淡的心情去面对这一切的时候,也许我们的生活才真正的开始了。26年的时光像一场电影一样,一晃而过,又能留下多少的定格呢?不用任何加工,岁月已经慢慢变黄,坐定的时候,身边的人就像光影一样闪过,皱纹和沧桑爬上了脸颊,那是我们老去的那一天。

  张爱玲的小说确实很好,故事源自于现实的残酷,却让她演绎得如此戏剧化,让人欲罢不能。然而张爱玲自己也说过,“戏剧化的人生是不健康的”。所以就让我们在虚幻的理想和恶劣的现实的夹缝中幸福的生活吧!

在Debian的linux-2.6.21内核下装nvidia驱动

Monday, June 11th, 2007

nvidia驱动一直都是以non-free的类别存在在debian的源里边,而且debian官方提供的二进制包总是很滞后,经常需要自己编译驱动。之前说过一次关于nvidia驱动编译的问题,貌似还是被搜索最多的。那是在两年前写的,现在又出现了新的情况,安装方法又要更新了。其实如果看官方的README.Debian,安装方法并没有变化,但是,你实际操作就是不能成功编译,急啊。通过万能的google,还是找到一些蛛丝马迹,貌似解决了我遇到的问题,相信还是有不少人遇到的。

话说在debian安装nvidia驱动有两种方法,一是从nvidia的网站上直接下载驱动的安装脚本文件,运行脚本,编译安装一次到位;二是可以从debian的源里安装nvidia-kernel-source自己编译,生成deb包再安装。我想一般用惯了debian的人,都有点强迫症,都喜欢用deb包进行安装。不管别人怎么样,反正我是这样的。

新的问题在于,在debian的linux-2.6.21-1-k7的内核下编译nvidia驱动,会出现如下报错:

FATAL: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol ‘paravirt_ops’

这是由于从2.6.20以后,debian的linux内核就启用了CONFIG_PARAVIRT选项来编译内核。现在由于加入这一选项,使得不只是nvidia的驱动不能正常编译,还有别的non-free内核模块也不能正常编译,所以这被视为bug #419943提交了。下面就说一下安装步骤吧,以我的古董tnt2 pro的显卡为例。

首先,修改linux-kbuild-2.6.21:

# apt-get build-dep linux-kbuild-2.6.21
$ mkdir linux-kbuild-2.6.21-build
$ cd linux-kbuild-2.6.21-build
$ apt-get source linux-kbuild-2.6.21

这时,linux-kbuild-2.6.21的相关文件会出现在linux-kbuild-2.6.21-build这个目录,并且有一个解压缩之后的linux-kbuild-2.6-2.6.21目录,修改linux-kbuild-2.6-2.6.21/scripts/mod/modpost.c,在大约1177行前后,找到fatal函数,注释掉这两行fatal函数,保存文件。

生成修改过的linux-kbuild,并且安装

$ dpkg-buildpackage -uc -us -rfakeroot
# apt-get install linux-kbuild-2.6.21

第二,就是安装相应的包:

# apt-get install nvidia-kernel-common nvidia-kernel-legacy-71xx-source linux-headers-2.6.21-1-k7

安装这两个包,应该还会自动安装和debhelper相关的包,如果在之后编译发现还缺少什么包,自行补齐就是了。nvidia-kernel-legacy-71xx-source安装之后,会在/usr/src里出现一个nvidia-kernel-legacy-71xx-source.tar.gz,解压缩到随便什么地方。进入解出来的modules/nvidia-kernel-legacy-71xx/nv目录,修改Makefile.kbuild,在

EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type… 后边加入

PARAVIRT_OPS := $(shell grep “D paravirt_ops” /boot/System.map-$(shell uname -r) | colrm 9)
EXTRA_LDFLAGS := -defsym paravirt_ops=0x$(PARAVIRT_OPS)

之后,安装README.Debian中的方法生成deb包。

进入modules/nvidia-kernel-legacy-71xx

# KSRC=/usr/src/linux-headers-2.6.21-1-k7 KVERS=2.6.21-1-k7 debian/rules binary_modules
# dpkg -i nvidia-kernel-legacy-71xx-2.6.21-1-k7_i386.deb

最后,安装nvidia-glx

# apt-get install nvidia-glx-legacy-71xx

修改/etc/X11/xorg.conf,或dpkg-reconfigure xserver-xorg,改用nvidia驱动既可。

如果觉得上边的方法比较不解,可以等一等debian和nvidia的反应,看看哪边会妥协,那样安装就不会这么麻烦了。下边是几个相关的网页,如果有什么问题,请告诉我。

http://grizach.servebeer.com/nvpatch/
http://www.debianhelp.org/node/6880
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=419943