很郁闷的一天
RunOnce
昨晚老婆拿回来他们公司的一个电脑,说是买了一个联通的的CDMA卡装不上驱动,但是在联通那里就是好的,在我们家的另一个电脑上也可以装上。
我吃完饭就开始折腾它。那是联想的一个PCMCIA卡。最先是怀疑这个机器的PCMCIA槽是不是没有驱动,因为的确不插卡的时候也有一个unknow device。但是松下的网站上根本没有PCMCIA的驱动,也没有chipset的驱动。后来发现这是一个hotkey的设备,就当了一个驱动下来,准备装上。有趣的是,这个设备居然安装不上,快安装完了的时候报错:2: The system cannot find the file specified. 很奇怪,反复安装了几遍,都不行。
后来再去装卡的驱动,联想自带的驱动安装程序比较有意思,插入卡之后,明显看到一些窗口一闪,然后就不见了,系统发出错误的声音,应该是驱动没有被sign的窗口。安装失败它也不报错,好在它还把inf文件放在安装好的目录底下了,这时候windows也能认出那个设备名,叫Lenovo,但是驱动没有装好。手动安装,指定inf文件,果然出没有sign的警告,忽略,到最后一步的时候,居然出跟hotkey那个一样的错误:文件找不到。
有趣的是,出了错误之后,那个设备到是work了,不再有一个问号,联想的CDMA1x拨号程序也能找到这个设备,但是连不上,而且重启之后这个设备又出问题了。
既然文件找不到,我就看看它要找哪个文件——事实证明,这是走了弯路,这个驱动在别的地方是好的,而且松下的hotkey驱动应该也没有问题的。我下了Mark的filemon (File Monitor)程序,来看看它到底要找那个文件。但是在那些NOT FOUND的文件中,却没有发现太多有意义的东西。我也试图把需要的sys文件,dll文件都多复制几份,但是都没有成功。
于是我走了更远的弯路,因为我发现windows安装驱动的程序(rundll32 newdev.dll)会在%windir%下,一般也就是c:\windows下,写一个setupapi.log,里面有详细的如何处理inf文件的记录。察看之。发现inf文件里描述的文件都找到了,并且都已经成功复制了,但是安装快结束的时候,居然就除了那个system cannot find the file specified的错误。hotkey的安装也是一样的。
黔驴技穷,google之,用”install driver system cannot find he file specified”去搜,翻了一翻,还真有人遇到过,他的说法是,HKLM\software\microsoft\windows\currentversion\下,runonce这个键被人给删了,可能是某个特傻缺的uninstaller干的,然而安装驱动的程序往往要在这个RunOnce下面写点东西,并且Open这个registry key不成功的时候,返回值也是2,就是cannot find the file! 解决方法很简单,在那个地方建立一个结点,叫做RunOnce就好了。我一看,果然我那个机器没有这个key!!果然,加上之后,hotkey和卡的驱动都很容易装上了。
最后那个拨号还是不work,我注意到那个卡应该是装两个驱动的,另外一个是一个modem,应该是这个设备没有被安装上,而且不是PnP的。再运行一次联想的安装程序,嗯,搞定。
结论是,知之为知之,不知google之啊!
PS. 如果我不用filemon,而是用更NB的procmon (process monitor)的话,我应该也能自己发现那个RunOnce的问题。Mark Russinovich的确写了一些好tool的。
IPOD 修好了,开始折腾e680i
周一硬盘送到了,不过感觉不是特好,里面还有嘎达的生音。Anyway,装上去之后,使劲一扣,就好了。然后用最新的IPOD updater 2006-1-3,更新一下它的firmware。
Rockbox看起来不错,不过界面还是不如苹果做得好,而且似乎比较费电,暂时不用他了。不过用rockbox可以不用itunes upload歌曲,直接可以播放文件系统里面的mp3,比较好。我试了用floola来给ipod加歌曲,有两个问题:一个是新装的ipod不能用,必须要用itunes加至少一首歌。这是因为这个软件没法自己创建ipod的数据库,必须itunes来做这件事。第二就是很多中文tag显示的不对,显然是使用的iso-8859-1的编码。嗯。。还需要改进。对了,canvendish,这个软件是有linux版本的。
关于IPOD的firmware,其实就是装在那块硬盘上的了。如果你用windows的磁盘管理器去看ipod的磁盘,就会发现在你放歌曲的盘之外还有一个小分区,里面装的就是ipod的系统软件了。Rockbox就是修改这个分区的MBR,放了一个rockbox bootloader来实现双启动的。嗯,bootloader,很熟悉吧。。。rockbox本身是直接放在FAT32分区里面的。如果要装ipod linux,他没法装在FAT32上,必须要再弄一个ext3的FS,看起来比较麻烦。。。
IPOD就折腾到这里吧。前两天跟老婆换了她的e680i,忍不住又hack了一下,主要是默认的AMCSL字体很难看,记得以前我把simsun.ttf放进去的时候还是很不错的。在网上看了一些帖子,发现那些人还是很有想法的。他们的hacking基本是这样的:
- 修改rootfs,在/etc/rc.d/rc2.d里面加两个启动脚本,S70和S75,link到/diska/和/mmc/mmca1下,这样,只要在userfs或者mmc卡上写上两个脚本,这两个脚本就可以执行了,这样就可以做很多的事情。
- rootfs的修改方法大概是,把刷机过程中的smg文件,用linux mount一下,然后cp出来,修改内容,再用mkcramfs作出来,就可以了,同理可以搞任何一个分区。
- 这样一来,要替换字体就比较容易了,只要在启动脚本里面把ttf文件,甚至包括fontdef.cfg,用mount –bind替换掉原来的文件就可以了。当然,如果ttf文件放在userfs上,那么机器就不能使用大容量磁盘模式,只能使用usbnet模式,好在这个模式下可以使用smb通过网上邻居来访问,不错。变通的方法就是启动的时候把这个文件cp到/tmp下去,也就是内存里。当然这样ttf文件不能太大。
- 还有人修改/usr/language里面的内容,就可以直接替换现有的theme了。。我用了一个apple的theme,感觉不错。
又拿起pst,又见MontaVista,颇有点怀念呢。记得我第一次去moto,就看见老姚在烧板子,我就傻乎乎在那看着……
Rockbox rocks!
支持很多的播放文件格式:mp3, ac3, aac/mp4, mpc, ogg/vorbis, wav, aiff, flac, alac, wavpack.
支持均衡器(Equalizer),还有crossfeed——这是干嘛的?
更精确的音量控制。
可以使用主题(theme)
支持ReplayGain
可以看jpeg图片和文本文件。。。
可以玩doom。。。
支持unicode。。
据说On-The-Go的功能也增强了
还有很多plugin。。
拆了IPOD


