博文

目前显示的是 二月, 2010的博文

FreeBSD的dtrace怎么都用不了

dtrace -n "BEGIN::::"
dtrace: invalid probe specifier BEGIN::::: "/usr/lib/dtrace/psinfo.d", line 88: failed to resolve type kernel`struct thread * for identifier curthread: Module is no longer loaded
我重新编译kernel了 ,编译的时候也加WITH_CTF=1了 。用ctfdump去查看/boot/kernel中的东西,也能看到符号。
用dtrace -l能看到很多
神奇在于,某次刚make installworld,然后reboot之后是能用的。然后我不知道操作了什么,突然又不能用了。郁闷
谁能告诉我究竟是为什么啊!!

maven真强大

最近在verycd总看见他们推这个:http://www.yunduan.cn/。我觉得maven和它很像。
比如,我机器上有maven,但是我没有装groovy和ant。没有关系,瞧
mvn groovy:shell -Dargs="load test.groovy"
用这样的方式就可以打开groovysh运行groovy脚本。
可是,即便是已经下载过groovy,本地有缓存的情况下,运行一个hello world需要也需要6秒:
time mvn groovy:shell -Dargs="print 'hello'"
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'groovy'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [groovy:shell] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [groovy:shell {execution: default-cli}]
hello===> null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Sun Feb 28 22:07:13 CST 2010
[INFO] Final Memory: 32M/350M
[INFO] ---…

今天终于在64位win7下把vpn搞定了

openvpn+飞天的ukey。之前总是报告Cannot load certificate "SUBJ:sunchangming" from Microsoft Certificate Store: error:C5066064:microsoft cryptoapi:CryptAcquireCertificatePrivateKey:Key not valid for use in specified state.今天仔细查了下邮件列表,发现是不能用Subject选择证书,应该用THUMB
把cryptoapicert "SUBJ:sunchangming"
改成cryptoapicert "THUMB:1f563a901b75752f1b762xxxxxxx"
这样就好了原因未知。我把我的所有证书仔细查了一番,没有找到其它的具有相同CN的证书。

什么是迷信?

星期五,我们去开年会。13号车在路上翻进了水沟。是说这两个数字不吉利吗? 按休谟所说,我们对外在世界的因果性所做的推论从来都是基于经验的而不是基于逻辑的。若你将这种不吉利视作迷信,那么科学和迷信之间并不存在本质的或明确的界限。任何科学学科,必定需要依赖于实验观察。而在实验中,两个总是同时出现的事件,究竟是相关的还是不相关的呢? 谁能给出判断依据? 连数学,都不得不借助于归纳法

2010-02-24

最近有点奇怪,尽管下班很早,但是很困很累,一到家就开始睡觉。从晚上9点睡到第二天早上8点。 最近被bug搞的焦头烂额,有些问题不是技术可以解决的,刚写完的代码,测的不到一个小时,就要被发到外服正式环境中。一周五天,至少有四天都在发版本,这么高的频率,如何保证代码是稳定可靠的?况且,全是一帮刚毕业的学生写的。 交叉着给别人的代码写单元测试用例?可是,没有产品文档,这一切都像空中楼阁

meego也还是生死未卜啊

如果nokia被微软收购,微软会推出基于linux平台的手机吗?会吗?nokia把maemo抛给了社区,但是核心源代码都不开放。如果它离去,这个社区必然会倒掉。

今天又把zfs搞挂了

我没做什么啊!!反正就是reboot之后无法引导系统了。就在ddb/gdb那3行信息刚打完,说什么"no bios smap info from loader",就进ddb了。
可是我发现,问题似乎是出在zpool.cache上。如果去掉加载zpool.cache的那一行,就没有问题了。orz
但是那样的话,又挂不上根文件系统
烦恼中

2010-02-18

今天在freebsdchina创建了一个grub2的条目,http://wiki.freebsdchina.org/howto/g/grub2
freebsd和opensolaris下的eclipse都很老,3.4.2的,但是我想要3.5。freebsd的jdk更老,有一个xml的严重的安全漏洞一直放着没修。
今天把ports的devel/loki更新了一下,只是编译过去了,并没有仔细测试。有了新的ports工具之后,做patch简单多了,以往为了生一个plist,折腾好一半天。我现在是用/usr/ports/Tools/scripts/patchtool.py自动生patch,用genlist生plist,用port命令测试包,提交pr
今天还发现2个莫名其妙的现象,一个是tmpfs满了,但是…… 它什么时候突然变的这么小了?
Filesystem Size Used Avail Capacity Mounted on
rpool/bsdroot 46G 30G 17G 64% /
devfs 1.0K 1.0K 0B 100% /dev
tmpfs 16K 16K 0B 100% /tmp
还有一个就是时钟有问题
t_delta 15.fd7806cc2e3df800 too short
t_delta 15.fd7a348c001bfa80 too short
t_delta 15.fd78a6278ec68b00 too short
t_delta 15.fd78aad76bf7bc80 too short
t_delta 15.fd7940d3121dec80 too short
t_delta 15.fd7a1614e25c38c0 too short
t_delta 15.fd78a87f7d5f23c0 too short
默认用的是ACPI-fast。我准备换成HPET。但是,自动降频和ACPI的timecounter有关吗?我只知道不能用TSC

一夜回到奔腾3

昨天晚上还是好好的,今天早上起来之后,发现机器特别特别慢。查了一下发现是CPU的自动降频率功能出了问题,CPU的频率一直被锁定在100MHz。直接手动调整dev.cpu.0.freq是不管用的,会立刻被再调整回来。查了下文档,先把debug.cpufreq.lowest设置到一个比较高的数,然后再设置频率就好了
不知道acpi/acpi_ibm和cpufreq之间是什么关系,看conf/NOTES,貌似只有前者不可用或者不完善的时候才需要后者?

cpu overheat

今天把无线网卡在freebsd下配好了。freebsd 8之后,无线网卡的配置方式还是和以前很不一样的,它需要创建单独的wlan虚拟网卡。
不过操作方式也很简单,只需要改2个地方,一个是/etc/rc.conf中加上
wlans_iwn0="wlan0"
ifconfig_wlan0="WPA DHCP"
然后编辑/etc/wpa_supplicant.conf,最简单的方式就是只加这么几行:
network={
ssid="scmdlink"
psk="mypass"
priority=5
}
刚才打开firefox在看duowan,突然就开始shutdown了。
重启之后查日志,发现
Feb 17 12:56:40 fb kernel: acpi_tz1: temperature 96.0C: decreasing clock speed f
rom 2401 MHz to 1800 MHz
Feb 17 12:57:40 fb kernel: acpi_tz1: temperature 94.0C: resuming previous clock
speed (2401 MHz)
Feb 17 12:58:09 fb wpa_supplicant[86616]: CTRL-EVENT-SCAN-RESULTS
Feb 17 12:58:40 fb kernel: acpi_tz1: temperature 96.0C: decreasing clock speed f
rom 2401 MHz to 2100 MHz
Feb 17 12:58:57 fb root: WARNING: system temperature too high, shutting down soon!
Feb 17 12:59:07 fb kernel: acpi_tz1: WARNING - current temperature (100.1C) exceeds safe limits
居然是CPU 过热导致的。t400的散热是极好的,我用了一年多,还从未因为散热问题死机或重启过。orz...这是冬天啊
重启之后,CPU的温度一直持续在50-60度左右
dev.cpu.0.temperature: 57.0C
dev.cpu.1.tempera…

又在重编gnome2

昨天听delphij说我的无线网卡的驱动有了,于是我就琢磨着把freebsd从vmware中挪到了裸盘上单独放着。root fs用的是zfs.14/3,和opensolaris用的是同一个zpool,用grub2引导。
我发现,如果编译kenel的时候指定了只编译那几个module,其它的都不编译,然后加上-j8,真的是飞快啊。我今天编译了20多次。Orz..加点调试语句,然后编译,就为了查究竟是为什么mountroot的时候没有挂载上。
zpool.cache真是一个奇怪的文件。
fb# file /boot/zfs/zpool.cache
/boot/zfs/zpool.cache: PDP-11 UNIX/RT ldp

maemo + moblin = meego?

我想,n900的市场表现远不如nokia的预期吧?首先我不明白,nokia为什么会把OS这么核心的一个东西抛给社区?而不是像symbian那样联合几家大公司来搞。迄今为止,n900上几乎没有多少商业软件,整个操作系统也是开源的,可以自定义kernel,自己编译。但是遗憾的是,maemo这个短命的家伙要被终结了,昙花一现这4个字用在它身上真是一点都不为过。已有确切的公告说maemo要和intel的moblin项目合并,我对这张资产表尤为感兴趣,http://wiki.meego.com/Maemo_and_Moblin_community_assets,它给出了大致的合并方案。尽管没有确切的答复说meego是否会支持n900,但是这是计划中的事情。可是我不敢相信intel会让它的软件具有良好的平台兼容性,e.g. intel compiler在AMD cpu上故意塞些bug代码。moblin在arm上会怎样? intel从来不指望它的软件部门能怎么赚钱,完全是为了辅助intel推销它的硬件。比较郁闷的是这对软件开发商是个噩梦。最终的结果必然是一部分人用的maemo,一部分人用的meego,然后呢?在两个平台分别编译并测试、发布?本来N900的用户数量就小,这个代价很不值得。p.s.大年初二去加班,朝九晚十,留念一下这JP的日子

gpt的悲剧

最早,我把这个分区用win7的diskpart做成gpt格式的分区,但是发现它无法启动win7(我现在在想能不能用grub2让它支持),所以就改成了mbr格式。方法是,我用pq 8对这个硬盘重新分区。一切都良好,但是freebsd认不出来新的分区表。用gpart show,看到的是这样#gpart show ad0
=> 34 976773101 ad0 GPT (466G)
34 976773101 - free - (466G)但是fdisk能认出来mbr中的分区表。询问了delphij后得知,是我没有清除gpt的primary gpt header的备份。网上搜了一下关于这个的位置以及如何清除,http://forum.ubuntu.org.cn/viewtopic.php?f=77&t=190435。原来ubuntu的早期版本也有这个问题,但是9.10肯定没有,因为我刚装了。那个帖子下面的简直就是装神弄鬼满口胡言。grub那么肥,重装grub的时候,把它装在硬盘的开始而不是分区的开始,自然就把主的干了。从的我是这么清的:先用gpart看硬盘信息:# gpart list ad0
Geom name: ad0
fwheads: 15
fwsectors: 63
last: 976773134
first: 34
entries: 128
scheme: GPT
Consumers:Name: ad0 Mediasize: 500107862016 (466G) Sectorsize: 512 Mode: r0w0e0然后用dd复制出来看看,skip到last+1的位置
#dd count=100 skip=976773135 if=/dev/ad0 of=/tmp/backup
33+0 records in
33+0 records out
16896 bytes transferred in 0.004368 secs (3868073 bytes/sec)恰好是33个。用emacs打开看,果然在最后一个扇区的开头找到了”EFI PART”标记。算好位置,用dd覆盖掉(last+33)
#dd count=1 seek=976773167 of=/dev/ad0 if=/dev/zero 再拿gpart sh…

原来win7必须得有硬件支持,才能用gpt啊

我终于明白我为什么总是引导失败了。如果硬件不支持UEFI,那么是不能把win7安装在gpt分区上的。装之前明明读过那个FAQ了,可是,不仔细,不仔细,5555"5 . Is EFI required for a GPT disk? No. GPT disks are self-identifying. All the information needed to interpret the partitioning scheme of a GPT disk is completely contained in structures in specified locations on the physical media."我就看了这个。是啊,我都用GPT装过freebsd了,没必须需要硬件做什么啊。 可是,win7就是必须要uefi,否则,只能用来做数据盘。

系统挂了

今天买了一块新硬盘。然后我把老硬盘卸下来放硬盘盒里,把新硬盘放进去。我希望尽可能的不要重装系统,而是用ghost复制到新硬盘上。但是发现我并不能从U盘引导原有的系统。win7和opensolaris都不行。并且我准备把分区格式换成gpt,导致复制的难度更大了。 没有win7的安装盘,惆怅中

n900第5天

把javase/iptables/tomcat/groovy装上了,还装了一个mmorpg:The Mana World.发现一个很奇怪的事情,打开keepassx的时候,他会监听1个tcp端口和2个udp端口,是在0.0.0.0上,而不是127.0.0.1。这个相当的可疑,有人审过patch code,没有发现被动什么手脚。莫非keepassx本来就是这样??今天用groovy/swing写了一个简单的hello world,我发现这个手机对java的支持真的很好。这就意味着它的开发门槛很低很低啊。在windows上随便写点swing程序然后扔上去即可,只是不要使用右键菜单这样的功能,左键还是可以用的。另外,没有网络连接就不能用ovi map吗?

n900,第三天

基本上把我该装的东西都装够了. rootfs还剩11M,反正还够用,所以暂时不去清理。我觉得最该被清理的就是apt-get/dpkg的那些cache文件,哗啦哗啦几十M就没了。网上满天飞的什么“优化N900的rootfs”,进去一看,不过是把一些目录软链接到ext3的分区上。其实,用mount也能达到同样的效果(只不过对于不解内情的用户这个危害更大)。不明事理的优化是万恶之源啊,比如,把font目录挪出去真是不应该,因为几乎每个应用程序都会去读这个文件。字体就应该装在自己的~/.fonts目录下,如果这个字体很常用,就应该放在rootfs里。n900的一个很大的问题就是package依赖的问题。举个例子,我想装一个闹钟程序,但是它是用qt写的。所以我安装的时候就连QT一起安装了。后来我不想要这个闹钟了,我就把闹钟卸载了,但是QT呢?依然会被保留在系统中。日积月累,垃圾package就越来越多,对于PC,这不是什么问题,顶多占点硬盘,顶多update的时候多耗的时间,可是对于N900,这是一个非常严重的问题,因为它的“硬盘”就是内存,NAND Memory。这是非常稀缺的资源。而对于End User而言,别指望都能明白这每个package的作用,哪些是可以被删除的。于是越来越多的人发现rootfs不够用,然后去“优化”。其实rootfs不够用另外一个常见的原因就是用完apt之后没有进行apt-get clean,释放/var/所占的空间。相比于apt-get update,每天执行的更多的是hal-device bme,查看电量。因为nokia自带的那个电量显示很诡异,一共7个格子,第一个格子代表了50%的电量,还不显示百分比。orz。。。昨天我兴冲冲的把syslog装了,结果发现用途竟然不大,每天的日志很少,大部分程序都不使用syslog。cron暂时还没找到,sendmail也别想了,但是最好还是找个轻量版的sendmail,否则为手机增加uucp和mail relay的功能简直和拿n900玩星际一样脑残!(p.s.上周末我有幸见到diablo2的制作人了)n900,作为一个手机,电话本的功能太残废了。连分组都不支持,因为我登陆了skype/gmail,它就把这些联系人以及我本身的号码本粘在一起,上千个啊!经常看见几个联系人是同样的名字,实际就是一个人,但是没有…

nokia的n900实在是太有意思了

我买不起蓝牙键盘,但是它有ssh,非常好使每天必须要执行的命令:apt-get update刚装好nmap/wireshark,我正在寻觅syslog/sendmail。文件系统丰富多样,它独特的rootfs,自带的ext3/fat,可装的samba。用fuse读写zfs/ntfs也只是迟早的事情吧。作为nokia最贵的机型,居然不支持彩信!操作界面难用的一塌糊涂,xterm是王道。自带的文本编辑器有2个,一个手写一个输文字的,居然是分开的,并且,没有清空按钮。回到之前,命令行是王道,我不喜欢vi,我正在装emacs。不知道何年何月才能支持拼音查找电话本。我的contacts有900多个……正在加速膨胀中。原因:sim卡的、qq的、skype的、msn的都被列一起了。没有方便的查找功能,真的会死人滴!经常会getpty失败例如:Can not write log, openpty() failed (/dev/pts not mounted?)后来发现原来是ssh连接因为wifi的自动省电设置导致断线,而ssh进程还在,pty也没有释放。把僵死的进程kill掉就好了

2010-02-02

solaris的ps工具是建立在procfs之上的,而freebsd的ps工具似乎是通过kvm_xxx实现的。但是kmv_xxx中还有极少数的函数依然是依赖于procfs的。
solaris的/proc目录下只有子目录,没有普通文件。freebsd的/proc的包含一个符号链接curproc。linux则是变态至极,什么的东西都往里塞。
举个例子,在linux,想看有几个cpu有多少内存,直接看/proc下的文件即可
如果是freebsd,那么最好的方式就是sysctl hw.physmem。无论是对于程序员还是系统管理者,都可以方便的使用sysctl
如果是solaris,那么就应该用prtconf今天在solaris下做这个测试
测试代码如下:#include <stdlib.h>#include <unistd.h>intmain(){ void* p=malloc(512*1024*1024); if(p==NULL) return -1; sleep(10000000); return0; } 然后我用g++ 4.3.2编译
g++-4.3.2 -o testm testm.c
开了5个,开到第6个的时候,malloc就返回-1了。可是,可是,令人惊奇的是
这个时候,我无论是用vmstat还是用mdb看,我都还有大量的空闲的物理内存
>::memstat
Page Summary Pages MB %Tot
—————————————————————————————————————————————
Kernel 144849 565 14%
ZFS File Data 62043 242 6%
Anon 146323 571 14%
Exec and libs 3640 14 0%
Page cache 34357 134 3…