Monday, September 8, 2008

从dd-wrt v24-sp1刷到tomato v1.21

能刷dd-wrt不代表你能高效得运行。果然今天就遇到了路由CPU 100%的时候,网页都开不了。而且dd的控制页面虽然蛮漂亮,但内存少了之后就反应很慢了。看来16M内存还是相当不够的,况且我还有很多DD的服务都是没有开的。这么看升级到32M甚至64M的内存不是没道理。

既然效率不高,就打算换tomato,从二进制的bin文件上看,tomato东西的确应该比dd要少,dd标准版2.4sp1是3.6M,而tomato v1.21是2.7M,小了差不多1M,跟dd的micro版本差不错。同时LINUX2.4内核,东西小,功能就少,希望效率也高,呵呵。

从原厂刷比从dd刷步骤繁琐(这个繁琐的步骤在刷DD的时候已经体验过了),幸好现在我是从dd刷起。网上说dd在nvram中的密码是加密的,而tomato是不加密的,所以要把dd的密码设置成密文大家都知道的admin(尤其是没有reset按键的路由,一开始没理解为什么),其密文是bJz7PcC1rCRJQ,也就是tomato的密码。否则不是admin作为密码的话你就要自己登录到路由的控制台去看nvram里的密文了,具体操作GOOGLE一下就知。

从DD的更新页面选tomato.trx,点UPDATE的时候说不是BIN文件,看来够笨的,只从后缀看,那就把后缀改成BIN,然后再选择,再点UPDATE。然后就是等待,发现等待的时候会出现秒数倒计时,不过明显不准的,呵呵。

好了之后路由自己就重新启动了,最紧张的时候到了,因为我在更新的时候选的是don't reset,不回复到默认设置,所以现在路由的地址还是原来的192.168.2.1。果然,打这个地址要求登录,不过怪了,死活登录不了,用了root+bJz7PcC1rCRJQ和admin+bJz7PcC1rCRJQ都不行,不知道哪里出问题了。这回才体会到reset按键的重要性,不管三七二十一,反正进不去了,直接按了RESET,重启之后用PSP连了一下,发觉路由地址变成192.168.1.1了,看来RESET起作用了,由192.168.1.1登录,然后用默认用户名和密码root+admin顺利进去了。

第一感觉,web的ui管理界面速度很快,比DD的快不少!看了下菜单,功能的确没有DD多。功能没有DD多不是说拥有的功能没有DD强!用了一下,看了下空闲内存,果然印证了网上流传的一句话,用来玩刷DD,用来当路由刷TOMATO。现在要把NVRAM清空一下,这样就可以去除之前遗留在NVRAM中但TOMATO用不到的数据。TOMATO的WEB管理UI中直接有清除NVRAM的功能,在administration->Configuration->Restore Default Configuration中,选择Erase all data in nvram memory(throrought),点OK之后所以的设置就像按了RESET一样(不知道我之前按的RESET是不是已经做了这步了?)。希望TOMATO能稳定快速的运行。

对于DD,其实我还是蛮喜欢的,但就是硬件机能不够,玩DD不爽。现在DD有支持X86的了,貌似可以考虑把家里的c400+i810+256M的老台机整成DD的路由玩。呵呵~~!

Friday, September 5, 2008

给WHR-HP-G54-AP洗脑

本来是想用一阵子Buffalo AirStation的原厂固件的,但发现老是有人蹭我的网,而且你蹭就算了,关键是搞得我下载东西只有10k/s的速度了。可以做MAC过滤,但这个比较不好玩,直接到www.dd-wrt.com去下了v24-sp1版本的固件准备刷到小黑脑袋里。然后玩玩QoS,呵呵!

做任何事情貌似还都要求手快,原来把下载的固件传到路由上还不是那么简单的,不过说不简单,其实对于手快的朋友简直就是小事。

按照网上教程所说的:
1.按住RESET(居然说至少30秒,我用牙签按得手酸快了),然后拔掉路由电源。
2.到固件存放的本地目录准备好用tftp上传固件到路由。先把命令打好,回车先不按,要等下考验眼明手快的,哈哈。
我的固件放在I盘,上传命令:tftp -i 192.168.11.1 PUT dd-wrt.v24_std_generic.bin
3.这部是关键,先接上路由电源,按住RESET,当面板上红灯开始闪的时候立马放开RESET去按回车。我失误了2次,主要是对于红灯闪的时机没有判断好,导致了2次上传失败的TIMEOUT。成功的话会告诉你TRANSFER SUCCESSFUL。之后就是等路由重启。现在可以通过192.168.1.1进入DD-WRT的设置界面了。哈哈。

听说TOMATO比DD稳定,等我发现DD不稳定的时候再洗脑一次,洗个烂番茄进去,咔咔~~!

ibook G4 + Netgear wg111 v3 实现无线上网

ibook g4的airport extreme ii卡实在是贵得离谱,无奈之下google了一下mac os x 10.4支持的usb无限网卡。发现价格比较合理的有一款美国网件netgear的wg111 v2的usb无线网卡官方驱动支持mac os x,顿时看到了希望,立刻去淘宝和京东看有无现货。

令人失望的是,v2版本的都没有卖了,现在市面上卖的都是v3的版本。上netgear官网看了下,v2是有mac os x的驱动的,v3还没有。我倒~~!没驱动不就等于零嘛,总不见得去买个二手的wg111 v2?

继续google,发现原来netgear的这款wg111 v2是使用realtek的8187L芯片的,而wg111 v3是使用realtek的8187B芯片的,难怪有些同学用v2的驱动来驱动v3没有效果,原来内部芯片都改变了。既然什么都是芯片导致的,那就直接去realtek官网看看8187B芯片有没有mac os x 10.4的驱动吧。

哈哈!运气不错,realtek虽然现在还没有提供8187B芯片的linux驱动,但windows和mac os的驱动都有了。马上下载安装,重新启动之后等了蛮长时间进了系统,然后拿出从京东上买的WG111 V3,插入usb接口,哈哈,跳出了realtek的设置界面,从WHR-HP-G54-AP上dhcp了ip地址,隔了两堵墙,信号强度在60%左右,比较稳定。立即打开FF3,写下了这篇日志。

希望对于有ibook但觉得airport extreme ii卡贵的朋友可以作为一个参考!

Wednesday, August 13, 2008

20080809-20080812 HongKong

這次去香港主要是為了看奧運的馬術比賽,在雙魚河。

第一天
一大早就赶到虹橋,發覺奧運期間的2次安檢也不是想象中那麼慢。和上次一樣,花了2小時多一點到了寶安,順利坐上了K568前往羅湖。中途由于司机開得太猛,爆胎了,只能被迫上了之後那輛K568,順利到達口岸,在羅湖的橋上我拿出了手機想看一下申請的漫遊是不是有用,呵呵,滿格信號,半信半疑,叫妮妮拿出她沒有漫遊的手機對比一下。問題來了,死活找不到她的手機,這下妖了,難到掉了?我立刻打她手機,無人接听,還好,應該沒有落入他人之手,問題是在哪呢?我一刻不停的打,妮妮仔細聽聲音,完了,不在身上,也不在包裏,難到在路上掉了?或者是在K568上?那一定完了,K568到站之後就立馬上客,客滿即走,看樣子要去香港再買部手機了,哎!出師不利阿!!!不過妮妮這時拿了通行證就跑向了關卡,我知道她要去K568到這里的一路上找一下,必竟現在還是無人接听狀態。我不停打了大概15分鍾,突然有人接起來了,哇塞!陪伴了妮妮一年的N95失而复得!後來妮妮說還好手機是掉在了爆胎的那輛上,之後那輛早就開走去寶安了。她發現爆胎的那輛司機正坐在車上吃午飯,而後她上去找了一圈沒找到,正准備离開的時候突然聽到自己手機響,才在加坐的夾縫裏找到的。如果當時我沒有打她手機的話估計真的要買新手機去了。哈哈!

到了銅羅灣後立馬去換領了奧運馬術門票。哈哈!晚上吃了頓日本料理,發覺价格和上海差不多,還便宜呢!

第二天 大嶼山
起的不是很早,換東涌線來到大嶼山。原來這里有個OUTLETS,看樣子從山上下來到里面買點東西是個不錯的選則哦。哈哈。本來是想坐纜車上山的,可看了一下這坐纜車的人數,當即決定坐纜車下面的直達大巴——大嶼通!這山路叫驚險阿~~~!路上風景很不錯,還看到了牛,哈哈,山上還有個湖泊,很美~~!在接近蓮花禪寺的時候發覺那里雲霧繚繞,后來進了寺才發現這些雲霧都是三根光盤直經的香燒出來的,倒~~~!

在寺中門票加中飯的素齊是$60,素齊多是多得2個人根本吃不完,難到這是為了體現佛主的大慈大悲?

回家坐的是E11,發覺比軌道交通快不少,才花了30分鐘就到銅羅灣了,難怪票价要比地鐵貴哦,呵呵。

第三天
在雙魚河高爾夫球場舉行的馬術室外越野賽是早上8:00開始的,我們要從銅羅灣赶到金鍾坐頭班奧運班次5:15的地鐵,最終要在比賽前1小時到東鐵的粉嶺站坐奧運馬術穿梭巴士到雙魚河。一大早4:15就起來准備,然后頭一次坐上了紅色的士。發覺副駕駛座位由于把波箱的位置都包括了,所以真的很寬,可以坐2個人。一個起步費$16就到了金鍾地鐵站,發覺等候5:15分那班的多半都是老外!

老天真不作美,居然下雨,不過還好賽事主辦方提供每人雨披,否則就慘了。

第四天
睡到早上10點,呵呵,這幾天起得最晚的一天。四處逛逛買點東西,下午5點坐上東鐵去羅湖。

Sunday, June 22, 2008

这几天突然想玩WII,发觉WII也能运行HOMEBREW了,阿哈哈

论坛逛了一圈想看看有什么好玩的游戏,结果发现就在近日WII的ZELDA漏洞被利用,而且可以跟PSP一样运行自制程序了,哦哟哟,爽了,WII终于升值了(升使用价值,不是升价格,呵呵)。http://hbc.hackmii.com/下载了homebrew_channel的beta8安装iso,刻盘安装,一切顺利。唯一惋惜的就是错过了升级3.2j,依旧停留在3.1j。现在的3.3j据说有猫腻,不能升,反正不急升,有自制才最重要。

有了这个channel之后所有的自制程序都可以通过这个频道免zelda光盘引导了,利马下载了OPERA的WAD文件,然后用WAD MANAGER这个自制程序安装,成功!发现破解的wiiware现在都可以很顺利的通过wad manager安装了,省钱,哈哈。不过下了几个wiiware的游戏,就一个不能玩,就是那个玛丽医生,估计是要3.2j才能玩,可恶的升级~~!

最让我兴奋的是自制程序的fc、SFC、MD等模拟器都能通过homebrew channel正常运行。这下可以免去买GC手柄的开销,直接用WIIMOTE就OK了。

像PSP一样wii能直接运行SD卡上的LINUX(GC-LINUX可以通过homebrew channel运行)。具体没试过。

能运行linux才是无敌的~~!因为LINUX上能跑你想要的程序哦。

Saturday, June 21, 2008

试了一把psp上的linux

uClinux v2.6.22-uc1,在http://dl.qj.net上能下载到,uClinux应该是专门用在嵌入式系统上的一个LINUX版本,老外很钻研阿,搞到PSP上了。我的PSP自制系统是3.52m33,把uClinux v2.6.22-uc1下载后放在运行1.5程序的文件夹下就OK了。

果然能够正常运行,但毕竟uClinux单薄了点,没办法,PSP内存的问题导致啊~~!输入法很奇特,使用L和R或者L+R。唯一遇到的一个问题是发觉用halt命令不能退到自制系统,而是直接关机了,说明uClinux的运行时跟自制系统无任何关系哦。

Tuesday, April 15, 2008

linux里把显存当swap或者ramdisk

原先认为显存大如果不玩游戏是浪费,现在看来在LINUX里并非如此,划出大部分显存当作swap也是个好主意,至少可以让swap脱离疯狂旋转的硬盘,呵呵~~!看了一下 "http://gentoo-wiki.com/TIP_Use_memory_on_video_card_as_swap" 的guide,自己动手把256M的显存的后128M划了出来当swap,nice~~!

2.6的内核已经加入了MTD(Memory Technology Device),首先当然是要在内核中启用罗。
Device Drivers --->
Memory Technology Devices (MTD) --->
Memory Technology Device (MTD) support
[* or M]Direct char device access to MTD devices
[* or M]Caching block device access to MTD devices
Self-contained MTD device drivers --->
[* or M]Uncached system RAM
[* or M]Physical system RAM
我是全make成module,然后在/etc/modprobe.autoload.d/kernel-2.6中加入,启动时自动加载的。
GUIDE上说"Uncached system RAM" is the slram driver,"Physical system RAM" is the phram。不知道这2个到底有什么区别,我是用了slram,phram应该是一样的。

内核搞定之后就是要找出显存的起始地址了,使用lspci -vvv | grep 256,因为我知道自己的显存的大小,所以直接加上过滤得到
Region 0: Memory at fe029000 (32-bit, non-prefetchable) [size=256]
Region 0: Memory at d0000000 (64-bit, prefetchable) [size=256M]
Region 4: I/O ports at de00 [size=256]
Region 0: I/O ports at ee00 [size=256]
Region 0: I/O ports at ce00 [size=256]
Region 1: Memory at fdcff000 (32-bit, non-prefetchable) [size=256]
只要prefetchable的那条,即Region 0: Memory at d0000000 (64-bit, prefetchable) [size=256M],这里的d0000000也就是0xd0000000(HEX形式)就是我们所要的显存起始地址。

然后就是做加减法运算,先要把预留给显卡用的显存算好(单位是byte),给他128M,那就是128*1024*1024=0x08000000,这个值和起始地址一加,得到的就是我们准备使用的那剩下的128M显存的起始地址,即0xd8000000。有了这个值之后把我们要用的显存的大小也用HEX表示,即要用剩下128M=0x8000000。
然后#modprobe slram map=VRAM,0xd8000000,+0x8000000
## cat /proc/mtd
dev: size erasesize name
mtd0: 08000000 00004000 "VRAM"
这就说明这个slram模块加载成功了。

最后就是要创建一个设备文件,这样就可以通过那个MTD设备文件来使用我们从显存里划出来的那部分了。
因为我使用了udev,所以直接
#modprobe mtdchar
#modprobe mtdblock
就可以了,这样那个mtd设备文件就出来了,即/dev/mtdblock0

最后就是把mtdblock0这个设备文件看成普通的硬盘分区当成swap用了。
mkswap /dev/mtdblock0
swapon /dev/mtdblock0 -p 10

为了不要每次重新启动之后都这样设置,就在/etc/fstab中把原来的swap那行注释掉,换成
/dev/mtdblock0 none swap sw,pri=10 0 0
接下来的任务就是要在LINUX启动时自动重新mkswap一下,因为LINUX不像FreeBSD那样不需要swap标志来使用swap分区。因此要在init过程的swapon -a这个命令执行之前mkswap,在以前的版本是到/sbin/rc这个脚本里去加,现在是在/etc/init.d/localmount这个脚本里,在'swapon -a'这个命令前添加'awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab',这样就可以自动找到fstab中未被注释掉的swap分区,在其上面执行mkswap。
最后要确保/etc/modules.autoload.d/kernel-2.6文件中有如下3行来自动加载模块:
slram map=VRAM,0xd8000000,+0x8000000
mtdchar
mtdblock

OK,全部搞定,重启之后top一下:
top - 06:46:57 up 44 min, 1 user, load average: 0.22, 0.06, 0.02
Tasks: 70 total, 2 running, 68 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.2%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4048616k total, 377812k used, 3670804k free, 16052k buffers
Swap: 131064k total, 0k used, 131064k free, 132188k cached

最后的最后就是要注意的地方,如果使用的是官方显卡驱动,那么他会把所有显存都用掉,那就和我们使用的那部分冲突了,所以我使用的是vesa的驱动,可以自己设置VideoRam这个值,这样就不会使用到我们划出来的部分。其实你可以算出以你的分辨率和色彩需要使用多少显存,然后把剩下的都划出来,估计不超过16M,那真的是大大部分都可以划出来了。