发觉如果仅仅是用来做路由或者加上U盘做个FTP的话,WL-500gp v2刷openwrt的2.4内核+brcm wl的wifi驱动应该是完美了。
但对于wl-500gp+linux 2.6来说,能发挥想象的空间真的是太多了,虽然现在open source的b43驱动对于wl-500gp v2的那个妖腻的无线模块来说还不能用,不过还是有先放弃WIFI,刷2.6做自己想做的东西的冲动~~!
冲动之下,参照http://wiki.openwrt.org/OpenWrtDocs/Hardware/Asus/WL500GPV2先尝试了一下没有USB的配置,成功BOOT。一开始是SVN了最新的kamikaze代码(r13774),且没有修改prom.c和setup.c(CFE的问题导致无法BOOT),不修改是为了偷懒(哈哈),想看看是不是最新的代码里解决了这个CFE的问题,结果发觉不行,启动不了,倒~~!
期待B43快点搞定LP PHY~~~!
对于USB2.0,似乎存在问题,所以只启用了USB1。在make menuconfig里面没有选USB2,只是选了OHCI的USB1,然后也没有patch usb2.0,直接在make kernel_menuconfig的Device Drivers-->
USB support-->OHCI support for Broadcom SSB OHCI core。
Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts
Tuesday, December 30, 2008
Monday, December 22, 2008
OpenWRT kamikaze with linux2.4 on wl-500gp v2
京东上买了一个wl-500gp,看中的是有2个USB2.0口,用处多多啊~~!拿到手一看是v2版本的。昏倒了,V1的缩水版,不过没关系,跟自己比是缩水了,但和其他的比还是不错的。由于bcm5354芯片在LINUX2.6下WIFI部分暂时不能用,所以本来是想用kamikaze linux2.6内核的,只能暂时等等,希望OpenWRT的开发队伍努力把WIP这个状态快点改变成SUPPORT。
对于BCM5354,TOMATO支持的是不错的,DD-WRT也支持,貌似都是2.4内核。可惜DD不太稳定,慢;TOMATO是不支持USB,只能放弃这2个。对于ASUS的那个OLEG,准备在刷OpenWRT和DD以及TOMATO都不成功的情况下尝试。
在OpenWRT的主页上发现跟WL-500GP V2几乎一样硬件的WL-520GU,最后给出了一个WL-520GU上刷kamikaze with linux2.4内核的一个页面http://mightyohm.com/blog/2008/11/building-a-wifi-radio-part-4-installing-openwrt。这个完全兼容WL-500GP V2,那个页面也有作者自己编译好的TRX文件下载。我自己也编译了,但是因为没有CONSOLE,不高兴尝试。直接拿来主义。
刷的过程挺简单,比上次刷WHR-HP-G54要简单:
1.先是把电源拔掉,然后按住RESET不放,接上电源。
2.看到灯闪了之后过一秒,然后放掉RESET,此时应该进入了RESTORE模式。
3.应该这个时候能PING到路由器192.168.1.1。
4.然后TFTP把trx文件传上去(我是在XP的CMD里的):tftp -i 192.168.1.1 PUT openwrt-brcm-2.4-squashfs.trx
5.我发现4秒钟就搞定了。按照网上说的,因为ASUS的路由没有刷好之后自己重新启动的功能,所以要等个3到5分钟(主要是没有串口连接,否则人家都能从串口输出上看是不是完成)。
6.3分钟后我拔掉了电源,然后等了几秒再接上电源。
7.发现很快就能PING到路由,但是POWER的灯要过一段时间才亮,因为在创建JFFS文件系统(就是那个可写的文件系统)。
8.一切OK之后就可以TELNET进去了,如果进去之后改了密码,就开启了SSH同时关闭了TELNET。
9.一开始无线是关闭的,要进行配置,具体见http://mightyohm.com/blog/2008/11/building-a-wifi-radio-part-4-installing-openwrt
对于BCM5354,TOMATO支持的是不错的,DD-WRT也支持,貌似都是2.4内核。可惜DD不太稳定,慢;TOMATO是不支持USB,只能放弃这2个。对于ASUS的那个OLEG,准备在刷OpenWRT和DD以及TOMATO都不成功的情况下尝试。
在OpenWRT的主页上发现跟WL-500GP V2几乎一样硬件的WL-520GU,最后给出了一个WL-520GU上刷kamikaze with linux2.4内核的一个页面http://mightyohm.com/blog/2008/11/building-a-wifi-radio-part-4-installing-openwrt。这个完全兼容WL-500GP V2,那个页面也有作者自己编译好的TRX文件下载。我自己也编译了,但是因为没有CONSOLE,不高兴尝试。直接拿来主义。
刷的过程挺简单,比上次刷WHR-HP-G54要简单:
1.先是把电源拔掉,然后按住RESET不放,接上电源。
2.看到灯闪了之后过一秒,然后放掉RESET,此时应该进入了RESTORE模式。
3.应该这个时候能PING到路由器192.168.1.1。
4.然后TFTP把trx文件传上去(我是在XP的CMD里的):tftp -i 192.168.1.1 PUT openwrt-brcm-2.4-squashfs.trx
5.我发现4秒钟就搞定了。按照网上说的,因为ASUS的路由没有刷好之后自己重新启动的功能,所以要等个3到5分钟(主要是没有串口连接,否则人家都能从串口输出上看是不是完成)。
6.3分钟后我拔掉了电源,然后等了几秒再接上电源。
7.发现很快就能PING到路由,但是POWER的灯要过一段时间才亮,因为在创建JFFS文件系统(就是那个可写的文件系统)。
8.一切OK之后就可以TELNET进去了,如果进去之后改了密码,就开启了SSH同时关闭了TELNET。
9.一开始无线是关闭的,要进行配置,具体见http://mightyohm.com/blog/2008/11/building-a-wifi-radio-part-4-installing-openwrt
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的路由玩。呵呵~~!
既然效率不高,就打算换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的路由玩。呵呵~~!
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上能跑你想要的程序哦。
有了这个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的运行时跟自制系统无任何关系哦。
果然能够正常运行,但毕竟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,那真的是大大部分都可以划出来了。
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,那真的是大大部分都可以划出来了。
Sunday, April 13, 2008
Saturday, April 12, 2008
linux的tmpfs与windows的ramdisk
在windows上用的是ramdisk,可以把内存作为硬盘用,发觉在上面作压缩等操作很爽啊,把windows的temp文件夹和ie临时文件夹都放上面,开网页速度也有提高,把bt下载暂时存放在ramdisk上再也不用担心有损硬盘了,不过鱼和熊掌不能兼得,现在担心的是BT下到最后一点断电了怎么办?在linux上2.4之前的kernel也使用ramdisk,之后开始在内核中增加了tmpfs的支持,于是直接尝试tmpfs,把gentoo编译时的临时文件夹/var/tmp/portage挂载成tmpfs。
tmpfs和ramdisk有些不同,在windows里我创建了512M的一个ramdisk之后内存就直接被用去了512M,不管你有没有往这个分区放东西,而tmpfs挂载的64M的/tmp并没有一上来就全部用掉64M内存,而是要多少从内存中取多少直到64M。这么看来tmpfs还是比较能够节约内存的,就算分配了2G的tmpfs分区,不往里放东西也不用担心2G内存会白白耗在那里。而且就算装满2G,把这2G东西都删了,那这2G又都还给内存了。
其实这就是ramdisk和tmpfs本质的区别,一个是块设备,而tmpfs是一个文件系统。但tmpfs也有一个问题,因为是文件系统,所以在内存吃紧的时候可能会使用到swap,又回到硬盘了,昏倒。看样子主要关键还是要内存,内存大才是硬道理!但至少巧妙使用ramdisk或者tmpfs可以使得系统速度有很大的提升。
tmpfs和ramdisk有些不同,在windows里我创建了512M的一个ramdisk之后内存就直接被用去了512M,不管你有没有往这个分区放东西,而tmpfs挂载的64M的/tmp并没有一上来就全部用掉64M内存,而是要多少从内存中取多少直到64M。这么看来tmpfs还是比较能够节约内存的,就算分配了2G的tmpfs分区,不往里放东西也不用担心2G内存会白白耗在那里。而且就算装满2G,把这2G东西都删了,那这2G又都还给内存了。
其实这就是ramdisk和tmpfs本质的区别,一个是块设备,而tmpfs是一个文件系统。但tmpfs也有一个问题,因为是文件系统,所以在内存吃紧的时候可能会使用到swap,又回到硬盘了,昏倒。看样子主要关键还是要内存,内存大才是硬道理!但至少巧妙使用ramdisk或者tmpfs可以使得系统速度有很大的提升。
Friday, April 11, 2008
gentoo开机启动第二块网卡
首先要把网卡驱动编译进内核或模块加载,
此时使用ifconfig eth1命令应该能看到网卡的信息。
然后在/etc/conf.d/net中把第二块网卡配置好。
之后使得开机启动第二块网卡。
#ln -s /etc/init.d/net.eth0 /etc/init.d/net.eth1
#rc-update add eth1 default
此时使用ifconfig eth1命令应该能看到网卡的信息。
然后在/etc/conf.d/net中把第二块网卡配置好。
之后使得开机启动第二块网卡。
#ln -s /etc/init.d/net.eth0 /etc/init.d/net.eth1
#rc-update add eth1 default
Tuesday, March 4, 2008
linux统计目录下文件个数的命令组合
使用ls -l列出文件和目录,如果还需要子目录中的话就ls -lR
然后用grep "^-"过滤以-开头的行(即普通文件)
最后用wc -l统计过滤出来的行数。
即$ls -l | grep "^-" | wc -l
然后用grep "^-"过滤以-开头的行(即普通文件)
最后用wc -l统计过滤出来的行数。
即$ls -l | grep "^-" | wc -l
Friday, February 1, 2008
在RHEL5.1上安装oracle 11g(linux x86_64)
以前在Debian上面成功安装过oracle 9i,那时费了好大的力才把需要的包一个一个apt-get过来。现在用Gentoo,但使用的是纯64位软件,所以估计没法装oracle 11g(x86_64版本貌似仍然需要一些32位的包)。都怪linux发行版五花八门,不象windows那么千篇一律。
这次在HP ProLiant G5上装了一个RHEL5.1,所以准备在这上面装一个oracle 11g x86_64的版本用作开发测试。值得庆幸的是RHEL是oracle认证的linux发行版,而且oracle自己的那个linux也是基于redhat的,所以应该问题不大。
最最值得庆幸的也是要感激的就是Jeff Hunter已经在CentOS5.1上成功安装了oracle 11g,英文原文Installing Oracle Database 11g Release 1 on Linux - (RHEL 5),因为CentOS是对RHEL的100%兼容版本,所以理论上RHEL上按照他给出的步骤可以100%成功安装。太easy了,傻瓜式的按部就班。在扮演傻瓜的同时也学到了不少redhat linux与Debian,Gentoo,FreeBSD所不同的地方。
1.安装RHEL5.1
这个没什么好说的,每个人有每个人的装法,就罗列一下安装的package groups。
*Desktop Environments
GNOME Desktop Environment
*Applications
Editors
Graphical Internet
Text-based Internet
*Development
Development Libraries
Development Tools
Legacy Software Development
*Servers
Server Configuration Tools
*Base System
Administration Tools
Base
Java
Legacy Software Support
System Tools
X Window System
2.装好之后把firewall和SELinux都暂时关掉。然后把oracle11g需要的包都检查一下是否全部都有,没有就从dvd装。
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.1
gcc-c++-4.1.1
glibc-2.5-12
glibc-2.5-12 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5-12 (32 bit)
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libgcc-4.1.1
libgcc-4.1.1 (32 bit)
libstdc++-4.1.1
libstdc++-4.1.1 (32 bit)
libstdc++-devel 4.1.1
make-3.81
sysstat-7.0.0
3.确保/tmp有大于400M的空间并设置内核参数。
在/etc/sysctl.conf文件中有内核参数。
# +---------------------------------------------------------+
# | SHARED MEMORY |
# +---------------------------------------------------------+
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
# +---------------------------------------------------------+
# | SEMAPHORES |
# | ---------- |
# | |
# | SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value |
# | |
# +---------------------------------------------------------+
kernel.sem = 250 32000 100 128
# +---------------------------------------------------------+
# | FILE HANDLES |
# ----------------------------------------------------------+
fs.file-max = 102696
# +---------------------------------------------------------+
# | LOCAL IP RANGE |
# ----------------------------------------------------------+
net.ipv4.ip_local_port_range = 1024 65000
# +---------------------------------------------------------+
# | NETWORKING |
# ----------------------------------------------------------+
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
使用#/sbin/sysctl -p命令让以上设置生效而不需reboot。
4.在/etc/hosts文件中把不要的hostname从回路地址中去掉,把ipv6也去掉。
127.0.0.1 test2 localhost.localdomain localhost
应该改为 127.0.0.1 localhost.localdomain localhost
5.创建oinstall,dba,oper,asm,asmdba这5个组,然后创建一个属于这5个组的oracle用户。在英文原文中对这5个组对应的数据库组有详细的说明。
可以使用命令行来创建:
# groupadd -g 501 oinstall
# groupadd -g 502 dba
# groupadd -g 503 oper
# groupadd -g 504 asm
# groupadd -g 506 asmdba
# useradd -m -u 501 -g oinstall -G dba,oper,asm -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper),504(asm)
之后设置密码给oracle用户。
6.查看nobody用户是否已经存在。
# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
如果不存在就创建:
# /usr/sbin/useradd nobody
7.接下来就是创建oracle base directory了,对于非advanced安装,不需要指定数据文件的文件夹。
# mkdir -p /xxx/app/oracle
# chown -R oracle:oinstall /u01/app
# chmod -R 775 /u01/app
如果使用advanced安装,请看英文原文。
8.为oracle用户创建登陆脚本,在/home/oracle/.bash_profile文件中加入:
# User specific environment and startup programs
export ORACLE_BASE=/xxx/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=MYDBSID
export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
9.用oracle用户进入X根据提示进行安装。我选的是基本安装,并且创建初始化数据库应该是没什么问题的,只是等待而已,呵呵~~!好了之后应该可以用https://localhost:1158/em登录了。
10.装好之后我发现重新启动后oracle没自动起来,看来自动启动/关闭脚本还没加,编辑/etc/oratab文件:
MYDBSID:/u01/app/oracle/product/11.1.0/db_1:Y
然后创建/etc/init.d/oracle文件,使得oracle作为系统的service。
文件内容:
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/xxx/app/oracle/product/11.1.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
;;
esac
之后# chmod 750 /etc/init.d/oracle
最后就是把这个启动脚本放到服务里面去。
英文原文中使用的是# chkconfig --level 345 oracle on这个命令把这个启动脚本防到3、4、5这3个run level中,但我用这个命令说command not found,只能从图形界面进去手动把这个服务加到服务列表里。效果一样。哈哈。
11.最后的最后就是这个,为了要使用web页面的em,所以必须要把emctl start dbconsole和emctl stop dbconsole放如/etc/init.d/oracle文件的适当位子。否则每次都要手动启动多麻烦啊~~!
英文原文写得很好很详细,我只是把我使用到的步骤从中抽取出来中文化了一下,而且很简略,有能力的朋友强烈建议看英文原文。
这次在HP ProLiant G5上装了一个RHEL5.1,所以准备在这上面装一个oracle 11g x86_64的版本用作开发测试。值得庆幸的是RHEL是oracle认证的linux发行版,而且oracle自己的那个linux也是基于redhat的,所以应该问题不大。
最最值得庆幸的也是要感激的就是Jeff Hunter已经在CentOS5.1上成功安装了oracle 11g,英文原文Installing Oracle Database 11g Release 1 on Linux - (RHEL 5),因为CentOS是对RHEL的100%兼容版本,所以理论上RHEL上按照他给出的步骤可以100%成功安装。太easy了,傻瓜式的按部就班。在扮演傻瓜的同时也学到了不少redhat linux与Debian,Gentoo,FreeBSD所不同的地方。
1.安装RHEL5.1
这个没什么好说的,每个人有每个人的装法,就罗列一下安装的package groups。
*Desktop Environments
GNOME Desktop Environment
*Applications
Editors
Graphical Internet
Text-based Internet
*Development
Development Libraries
Development Tools
Legacy Software Development
*Servers
Server Configuration Tools
*Base System
Administration Tools
Base
Java
Legacy Software Support
System Tools
X Window System
2.装好之后把firewall和SELinux都暂时关掉。然后把oracle11g需要的包都检查一下是否全部都有,没有就从dvd装。
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.1
gcc-c++-4.1.1
glibc-2.5-12
glibc-2.5-12 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5-12 (32 bit)
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libgcc-4.1.1
libgcc-4.1.1 (32 bit)
libstdc++-4.1.1
libstdc++-4.1.1 (32 bit)
libstdc++-devel 4.1.1
make-3.81
sysstat-7.0.0
3.确保/tmp有大于400M的空间并设置内核参数。
在/etc/sysctl.conf文件中有内核参数。
# +---------------------------------------------------------+
# | SHARED MEMORY |
# +---------------------------------------------------------+
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
# +---------------------------------------------------------+
# | SEMAPHORES |
# | ---------- |
# | |
# | SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value |
# | |
# +---------------------------------------------------------+
kernel.sem = 250 32000 100 128
# +---------------------------------------------------------+
# | FILE HANDLES |
# ----------------------------------------------------------+
fs.file-max = 102696
# +---------------------------------------------------------+
# | LOCAL IP RANGE |
# ----------------------------------------------------------+
net.ipv4.ip_local_port_range = 1024 65000
# +---------------------------------------------------------+
# | NETWORKING |
# ----------------------------------------------------------+
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
使用#/sbin/sysctl -p命令让以上设置生效而不需reboot。
4.在/etc/hosts文件中把不要的hostname从回路地址中去掉,把ipv6也去掉。
127.0.0.1 test2 localhost.localdomain localhost
应该改为 127.0.0.1 localhost.localdomain localhost
5.创建oinstall,dba,oper,asm,asmdba这5个组,然后创建一个属于这5个组的oracle用户。在英文原文中对这5个组对应的数据库组有详细的说明。
可以使用命令行来创建:
# groupadd -g 501 oinstall
# groupadd -g 502 dba
# groupadd -g 503 oper
# groupadd -g 504 asm
# groupadd -g 506 asmdba
# useradd -m -u 501 -g oinstall -G dba,oper,asm -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper),504(asm)
之后设置密码给oracle用户。
6.查看nobody用户是否已经存在。
# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
如果不存在就创建:
# /usr/sbin/useradd nobody
7.接下来就是创建oracle base directory了,对于非advanced安装,不需要指定数据文件的文件夹。
# mkdir -p /xxx/app/oracle
# chown -R oracle:oinstall /u01/app
# chmod -R 775 /u01/app
如果使用advanced安装,请看英文原文。
8.为oracle用户创建登陆脚本,在/home/oracle/.bash_profile文件中加入:
# User specific environment and startup programs
export ORACLE_BASE=/xxx/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=MYDBSID
export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
9.用oracle用户进入X根据提示进行安装。我选的是基本安装,并且创建初始化数据库应该是没什么问题的,只是等待而已,呵呵~~!好了之后应该可以用https://localhost:1158/em登录了。
10.装好之后我发现重新启动后oracle没自动起来,看来自动启动/关闭脚本还没加,编辑/etc/oratab文件:
MYDBSID:/u01/app/oracle/product/11.1.0/db_1:Y
然后创建/etc/init.d/oracle文件,使得oracle作为系统的service。
文件内容:
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/xxx/app/oracle/product/11.1.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
;;
esac
之后# chmod 750 /etc/init.d/oracle
最后就是把这个启动脚本放到服务里面去。
英文原文中使用的是# chkconfig --level 345 oracle on这个命令把这个启动脚本防到3、4、5这3个run level中,但我用这个命令说command not found,只能从图形界面进去手动把这个服务加到服务列表里。效果一样。哈哈。
11.最后的最后就是这个,为了要使用web页面的em,所以必须要把emctl start dbconsole和emctl stop dbconsole放如/etc/init.d/oracle文件的适当位子。否则每次都要手动启动多麻烦啊~~!
英文原文写得很好很详细,我只是把我使用到的步骤从中抽取出来中文化了一下,而且很简略,有能力的朋友强烈建议看英文原文。
RHEL5.1 vnc的使用
RHEL5.1 自带了Xvnc,省得象gentoo里面自己装x11vnc了。先查看一下是否有vncservers的包:
[root@test2 jojo]# rpm -q vnc-server
vnc-server-4.1.2-9.el5
然后编辑配置文件:
[root@test2 jojo]# nano /etc/sysconfig/vncservers
把VNCSERVERS="1:ccair"这行的注释去掉。就是使用ccair登录到display:1,这里display和用户看你的系统了。
现在要设置一个vnc的密码,否则vnc不能被连接使用:
[ccair@test2 jojo]$ vncpasswd
Password:
Verify:
设置好之后在ccair用户的~/.vnc目录下会有相应的passwd文件。
一切设置ok之后就是启动vncserver服务:
[root@test2 jojo]# /sbin/service vncserver start
接下来在ccair用户的~/.vnc目录下会生成一个xstartup文件,打开之后把如下两行注释去掉:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
最后restart vncserver即可:
[root@test2 jojo]# /sbin/service vncserver restart
现在用vnc客户端可以顺利连接到display1上去了,相应的端口是5901,所以防火墙的5901要打开。
[root@test2 jojo]# rpm -q vnc-server
vnc-server-4.1.2-9.el5
然后编辑配置文件:
[root@test2 jojo]# nano /etc/sysconfig/vncservers
把VNCSERVERS="1:ccair"这行的注释去掉。就是使用ccair登录到display:1,这里display和用户看你的系统了。
现在要设置一个vnc的密码,否则vnc不能被连接使用:
[ccair@test2 jojo]$ vncpasswd
Password:
Verify:
设置好之后在ccair用户的~/.vnc目录下会有相应的passwd文件。
一切设置ok之后就是启动vncserver服务:
[root@test2 jojo]# /sbin/service vncserver start
接下来在ccair用户的~/.vnc目录下会生成一个xstartup文件,打开之后把如下两行注释去掉:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
最后restart vncserver即可:
[root@test2 jojo]# /sbin/service vncserver restart
现在用vnc客户端可以顺利连接到display1上去了,相应的端口是5901,所以防火墙的5901要打开。
Monday, March 19, 2007
sound on gentoo
it seems i installed a generic kernel. at default, no device configed for the sound.
when i wanna use ALSA, but can't emerge alsa-driver cause couldn't download a patch for my kernel.
so i use "emerge alsa-utils", after that, run "alsaconf", after a reboot manually, everything with the sound are work well.
:)
when i wanna use ALSA, but can't emerge alsa-driver cause couldn't download a patch for my kernel.
so i use "emerge alsa-utils", after that, run "alsaconf", after a reboot manually, everything with the sound are work well.
:)
Subscribe to:
Posts (Atom)