VMWare 6 安装 VMWare Tools for Linux 的一个问题

在 VMWare 中安装 Linux 操作系统,最好在装好后安装 VMWare Tools。其好处是可以接管运行于 VMWare 中的操作系统的一些设备驱动程序,使之更好地支持 VMWare 提供的各项功能。比如,安装 VMWare Tools 之后,鼠标就可以在虚拟机和宿主机之间平滑移动,而无需按 Ctrl+Alt 进行切换。安装的方法很简单,在 VM 菜单中选择“Install VMWare Tools”项即可。其实现的机制是:将虚拟机的光驱中的内容改换成一个含有 VMWare Tools 安装文件的 .iso 文件(可以在宿主机 VMWare 安装目录中找到为不同操作系统预备的这个 VMWare Tools “安装光盘”镜像)。

然而,在新版本 VMWare 中安装 Linux 下的 VMWare Tools,却遇到一些问题。更确切地,是 2.6.22 内核版本,在编译“vmhgfs”模块时出现问题。这个模块的功能是为虚拟机提供共享宿主文件系统的功能。这项功能允许用户在虚拟机中直接挂载宿主文件系统中的某个目录,并进行一些操作。

编译内核模块时的错误如下:

Trying to find a suitable vmhgfs module for your running kernel.

None of the pre-built vmhgfs modules for VMware Tools is suitable for your
running kernel.  Do you want this program to try to build the vmhgfs module for
your system (you need to have a C compiler installed on your system)? [yes]
Extracting the sources of the vmhgfs module.

Building the vmhgfs module.

Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config2/vmhgfs-only'
make -C /lib/modules/2.6.22-14-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.22-14-generic'
  CC [M]  /tmp/vmware-config2/vmhgfs-only/backdoor.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/backdoorGcc32.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/bdhandler.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/cpName.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/cpNameLinux.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/cpNameLite.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/dbllnklst.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/dentry.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/dir.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/eventManager.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/file.o
  CC [M]  /tmp/vmware-config2/vmhgfs-only/filesystem.o
/tmp/vmware-config2/vmhgfs-only/filesystem.c: In function ‘HgfsInitFileSystem’:
/tmp/vmware-config2/vmhgfs-only/filesystem.c:582: error: too few arguments to function ‘kmem_cache_create’
/tmp/vmware-config2/vmhgfs-only/filesystem.c:593: error: too few arguments to function ‘kmem_cache_create’
make[2]: *** [/tmp/vmware-config2/vmhgfs-only/filesystem.o] Error 1
make[1]: *** [_module_/tmp/vmware-config2/vmhgfs-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-14-generic'
make: *** [vmhgfs.ko] Error 2
make: Leaving directory `/tmp/vmware-config2/vmhgfs-only'
Unable to build the vmhgfs module.

The filesystem driver (vmhgfs module) is used only for the shared folder
feature. The rest of the software provided by VMware Tools is designed to work
independently of this feature.
If you wish to have the shared folders feature, you can install the driver by
running vmware-config-tools.pl again after making sure that gcc, binutils, make
and the kernel sources for your running kernel are installed on your machine.
These packages are available on your distribution's installation CD.
[ Press Enter key to continue ]

根据上面提示的错误,可以发现,是编译器在编译某个文件时发生语法错误。这种低级的错误居然会在 VMWare 这个成熟的产品中发生?感到不可思议。于是展开 vmware-tools-distrib/lib/module/source/vmhgfs.tar 文件,打开 filesystem.c,找到 593 行附近代码在调用函数:

   /* Setup the inode slab allocator. */
   hgfsInodeCache = compat_kmem_cache_create("hgfsInodeCache",
                                             sizeof (HgfsInodeInfo),
                                             0,
                                             SLAB_HWCACHE_ALIGN,
                                             HgfsInodeCacheCtor);

这段代码调用的函数 compat_kmem_cache_create 并非 Linux 本身的 system call,而是经过一层兼容性嵌套。很快就能够找到这个定义,在同一 tar 包中的 compat_slab.h 文件中,到有关片段如下:

/*
 * Destructor is gone since 2.6.23-pre1.
 */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22) || defined(VMW_KMEMCR_HAS_DTOR)
#define compat_kmem_cache_create(name, size, align, flags, ctor) \
                kmem_cache_create(name, size, align, flags, ctor, NULL)
#else
#define compat_kmem_cache_create(name, size, align, flags, ctor) \
                kmem_cache_create(name, size, align, flags, ctor)
#endif

这段代码的目的是,根据不同的 Linux 内核版本选择不同的系统调用形式。根据注释,意思是说从 2.6.23-pre1 版本的内核开始,系统调用 kmem_cache_create 将少了一个参数。而开始所提到的错误恰好是这个函数调用出现参数不够的问题。仔细分析后发现,原来 2.6.22 版本的内核也被当成了 2.6.23 以后的处理办法,当然不对了!

解决方法:将第 26 行的

#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22) || defined(VMW_KMEMCR_HAS_DTOR)

改为

#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 22) || defined(VMW_KMEMCR_HAS_DTOR)

重新打包,执行安装程序,问题即可解决。

注:本文的解决方法来自这个论坛

Comments

寄往美国的挂号信可于 USPS 网站上查询邮寄状态

一个偶然的发现:从国内寄往美国的挂号信、EMS 邮件可于 美国邮政服务(USPS)网站 上查询投递状态。只要将邮寄时收据上的条码号输入即可查询。

这一点,连中国邮政 11185 的客服人员都不知道。

Comments (1)

春节祝福

据不完全统计,本人于今年 2 月 6~8 日(除夕~大年初二)期间共收到各类祝福短信不少于 21 次,恕不能一一回复。发送人的手机号列举如下,在此表示衷心感谢!

1362****463
1352****528
1381****599
1381****725
1381****500
1360****474
1391****715
1358****112
1346****683
1381****636
1381****415
1352****808
1381****278
1381****766
1358****228
1391****021
1381****994
1368****923
1591****703
1381****917
1358****753

祝大家春节快乐!

Comments

用GPS记录旅行路线

去年12月,我买入了一个 iBlue GPS 记录仪。它可以每隔一定的时间记录自己的经纬度,也可根据邻近点记录瞬时速率、里程等信息。

将日志导入计算机后,可以为数码相片添加经纬度信息,也可将形成转换为 Google Earth 地标文件的格式。下图是我“冒生命危险”记录的某次北京至香港的国航客机飞行航线。

Beijing - Hong Kong Airline

有了 GPS 记录仪和 Google Earth 之后,有很多有趣的玩法。下面这张图是我在新加坡市中心附近游玩的行踪,在图示的点上可以看到该点的速度为 13 km/h 多。速度较慢的点,显示为一个绿色的小人,表示步行速度;速度较快的点,显示为一个红色的十字,表示车行速度;而圆点则介于上述二者之间。可以看出,除了个别数据点存在明显误差外,其他的点宏观地反映了合理的行程。

Singapore City Tour

将经纬度信息加入数码照片的 Exif 信息后,可以通过 Picasa 查看。可惜 Picasa Web 服务中尚不能完美支持 Exif 信息中的 GPS 数据的显示。

Picasa showing GPS info in Exif

Comments

远离Peoples

告别 Peoples 电话服务已经一年多了。这家公司是中国移动的全资子公司,在香港经营的同样也是移动电话业务。在以前的文章中,我介绍过使用这个公司的电话上台后,资费较其他公司便宜,这个价格也基本对得起服务。然而,没有香港身份证的情况下,上台是需要交押金的,Peoples 收 HKD 1,000 作为押金,其他公司一般收取 HKD 3,000。

在使用其服务的 4 个月期间,服务基本上令我满意,除了有时接通不了、信号不好外,也没什么不满意的地方。于是我错误地认为让他们在服务结束后退回押金的过程也是轻松愉快的。根据协议,我于 2007 年 1 月 1 日终止使用 Peoples 的服务。根据上台时候的口头约定,我本应于结束服务 1 个月后获得 HKD 1,000 的押金退款。然而,收款容易退款难,但是他们的客服电话、电子邮件回复,说是3个月(90 天)。

Dear Customer,

Thank you for your email regarding deposit issue.

According to Clause 2.3 of the Terms and Conditions of the Subscription Agreement made between PEOPLES and Customer. The balance of the Deposit, if any, shall be refunded to the Customer without interest within 90 days after termination of this Agreement.

Thank you for your past support and patronage to us and we look forward to serving you again in the future. Should you need further assistance, please feel free to contact our Customer Care Hotline at 2945 8888 or sent email to us again.

Customer Care
China Mobile PEOPLES Telephone Company Limited

2007 年 4 月以后,我联系他们,他们总是说“正在处理”……整个 4 月、5 月都是这样说的。终于到了 6 月,他们说已经“安排”寄出了支票(后来说记录显示 6 月 8 日寄出的,平信)。

事实上,这封信到现在也没有被收到。对香港的邮政系统我是很有信心的。因为在香港期间,我应当收到的数十封邮件没有一封是丢了的,我寄出去在本港内的邮件,也被证明至多3天就能收到。偏偏这封有支票的丢掉了,我不太相信。究竟出现了什么问题,恐怕只有他们自己知道了。

由于退款只能接受支票方式,而邮寄地址只能是香港地址,不能寄回大陆,我在终止服务前修改了地址,改为在香港的亲友处。这样做的好处是,当亲友收到支票后,只要替我存入香港的银行帐户即可。

其后我又多次致电客服中心,他们还是很客气,惟不解决实质问题。每次都说我们会尽快回复,留下电话什么的,但是最后就不了了之。又一次我忍无可忍,问他们究竟“尽快”到底是多块,结果他们却说——14 个工作日。

终于在 2007 年 8 月 11 日,我将 Peoples 公司投诉至香港“消费者委员会”(www.consumer.org.hk),并附上有关证据传真过去,等待结果。8 月 23 日,我收到消费者委员会的回复,说投诉收到,已分配人员处理。9 月 17 日,消费者委员会回复如下:

敬啟者: 台端投訴中國移動萬眾電話有限公司之個案敬悉,本會對 台端的遭遇,深表同情及關注。在此須先多謝 台端告知本會有關問題,本會亦已聯絡該機構,該機構表示,會儘快為 台端跟進處理有關問題。

本會或在此,順道希望可以向 台端說明,由於本會並非政府部門執法機關,所以並無法定權力可以限令該機構必須將問題解決或作出回覆,(香港政府專責電訊事務的部門是:電訊管理局,電話:29616333),但仍希望可以透過本會的調停,能夠為 台端將問題解決,唯此亦有賴相關之機構願否合作,始能妥為處理。

而 台端之消費權益,乃受香港法律之保障,故如果問題最終仍然不獲解決,或該機構不作回覆, 台端可再聯絡本會,再作跟進。而 台端亦有權考慮透過其他法律途徑,以儘快將問題解決,例如由 台端主動將個案交遞,或 台端要求該機構儘快將個案交遞法庭,或小額錢債審裁處,由法官作出裁決。

隨函謹附上小額錢債審裁處資料,供 台端參考。有關法庭方面的詳細情況,收費,與堂費等問題, 台端必須直接向法庭(小額錢債審裁處電話:2877 4068)作出查詢。

而 台端亦宜考慮,儘快向法律界人仕尋求專業法律意見,以確切清楚了解 台端的法律權益,與及適宜採取之行動。

在此,特再多謝 台端所提供之寶貴資料,現已存檔留案,本會亦會密切留意該機構,如日後續有投訴,更會考慮對該機構採取進一步之行動,以保障消費者合理之權益。尊此奉覆,倘蒙垂詢,歡迎賜電37611616,或傳真:25906271與本會投訴主任馮先生聯絡為荷。在此特申謝 台端對本會之支持、鼓勵和愛護。順頌祺安!

此致

消費者委員會總幹事謹啟

虽然没什么用,但看来消费者委员会的确介入此事并联系 Peoples 了。果然,10 月 15 日,收到 Peoples 的消息,告诉我支票可以于 1 周后领取了,让我写一个委托书让我的亲友前往一家 Peoples 门店领取支票。问题终于解决。从 1 月 1 日终止服务起,到领取支票,一共用了 325 天,比承诺的 30 天多了将近 10 倍,比书面约定的 90 天也多了 2.6 倍多。

看来,各位没有香港身份证人士,如果想使用 Peoples 的上台服务,一定要小心了。

Comments (3)

新加坡归来

有将近一周了。部分照片上传在 http://picasaweb.google.com/woodsdawn/SingaporeTour/ 。由于时间紧,大约只有半天的时间、并且只在市中心附近闲逛了一下。

由于具有相似的历史原因,新加坡的很多地方和香港很相似。比如道路都是靠左行的。并且总体来说,现代化程度比较高。街上有很多“ERP”设备,经咨询后得知似乎是过路汽车自动收费的装置。很多房子都漆成花花绿绿的,很有意思。

银联在新加坡使用非常不普遍,几乎找不到接受刷银联卡的地方。所有消费都要收 7% 的消费税,不足100新币的消费还不能退税。其他信用卡方面,MasterCard 明显比 VISA 有优势,支持的网点较后者多不少。

Comments

瑞星又捅了一个大篓子

最近,很多学校的网络部门都发布了提醒大家不要使用瑞星2008版的通知。对此,公网上也有相当多数的评论。见下:

可见,问题的确是存在的了。当然,在这件事上瑞星没有示弱,发布了声明。看上去两方面都有道理。那么,这个问题到底是怎么回事呢?

在瑞星官方网站的首页上找到了这样一句话:

防ARP欺骗功能:有效拦截ARP攻击,并提供详细丰富的管理功能,方便用户进行攻击源查询

然而点进去后,这项“重要的功能”却没有了,不知道这是为什么。

其实我觉得,造成这种现象的原因很简单,就是网络协议的缺陷。早期的网络协议设计时,因为联网计算机数量有限,基本上全凭大家自觉,而没有考虑到可能有人在其中捣鬼。随着网络使用的大众化,各种病毒爱好者也开始活跃。这里的 ARP 协议就是这样一种机制:

网络上的机器以某种特定方式进行“自我介绍”。机器甲说:“我是甲,我在这里!”于是大家就记下了甲的地址。然后乙又说,“我是乙,我在这里!”于是大家又记下了乙的地址。如果大家都这样轮流实事求是地说,网络上也就相安无事。

现在突然出来一个捣乱的丙,他明明不是甲,但却对大家说“我是甲,我在这里!”这台机器丙通常是中毒了,或者使用者是个黑客,先前已经把真正的甲搞掉了。于是大家就会认为丙是甲。

现在,如果甲运行了瑞星防火墙呢?那么机器甲发现,好啊,居然有人冒充我。于是开始向网络中疯狂地喊“我是甲!我是甲!我才是甲!……”显然在这种协议中,谁声音大,大家就听谁的。通过这样大声的广播,保护了甲处的网络的连通性。

那么,瑞星的这种设计到底有没有问题呢?

Comments (2)

如何办理新加坡签证

《新加坡旅游局推行的一系列方便中国公民造访新加坡的签证措施》中提到:

从2005年10月起,北京、上海、广州、深圳、杭州、南京、苏州、成都、昆明、厦门、大连、沈阳、天津、西安和福州15个中国城市的居民 (以护照签发地为准) 可以申请赴新加坡2年多次往返的签证。申请者递交相关材料,并通过新加坡使/领馆的批准后,1个工作日就可以拿到新加坡2年多次往返的签证,上午10时30分之前提交可在当日领取签证。(*注:若签证申请表格未填妥或材料不齐,其申请将会不予受理,或将影响签证受理时间)

对于上述城市的市民来说,不但1个工作日内可以办好,现在还支持网上办理。这样,新加坡的旅游签证可能是中国公民最容易获得的签证了(不需要签证的国家除外)。为了进行网上办理,需要做一些准备工作:

  1. 准备一张数码证件照片,要求白底,将其处理成符合下述要求的模式。
  2. 到新加坡政府入境处的“SAVE”系统中注册一个账号,密码到邮箱中取。
  3. 填写表格,上传照片。这里有些问题:
    • 此系统只支持IE,尝试使用Firefox填写,失败。
    • IE浏览器在上传照片时通过ActiveX访问本地文件,需要设置允许。方法:IE的“工具”菜单->Internet选项->高级->安全->允许活动内容在我的电脑上的文件中运行(选中)。否则,用IE6+SP2填写过程中浏览器上方会出现“信息栏”,就不得不刷新页面,从而session失效。
    • 照片需符合规定的大小:400*514像素,JPG格式,文件小于60K。
    • 护照号、有效期等信息一定要double check。
    • 去新加坡旅游无固定地址,纸版申请直接写 HOTEL 即可。网上申请,直接填 HOTEL 无法通过。我尝试在Street, Building都填了 HOTEL,并在 Block 填0,Zip code 填 000000。实践证明是可行的。
    • 填写过程中,不能使用浏览器的前进、后退、刷新按钮。每个页面停留不得超过5分钟,否则否则session都会失效。
  4. 使用信用卡交费,20新币,约合人民币102元多。
  5. 打印出Form 14。由于IE的问题,可能需要设置一下页边距,否则输出后可能不止3张纸。
  6. 在Form 14上粘贴一张照片,并签名。

提交之后,等待几个小时,就收到邮件,通知签证被批准了。带着护照和打印、签名好的Form 14即可前往大使馆领取签证。

应该说,整个网上申请系统制作还是比较死板的。所有内容必须全部填对后才可提交,而不能保存局部填写的状态。填写过程不允许刷新、回退,一旦出错或超时,所有都需要从头再来,这一点也很不user-friendly。网上申请过程对人的耐心、技术、英文都有一定的挑战。

Comments (1)

雅虎中国推出“人物关系”搜索

可惜分词貌似有点问题,查出李彦红有“两个老婆”——马东、马东敏。Two wives

Comments (1)

又一份Google午餐食谱

居然有人认为Google的午餐天天都一样,这世界真是对Google真是充满了误解。那我只好再把7月19日的午餐列一下,由此证明Google的午餐并非每天一样的。有老员工说,菜单大约20天轮换一次。公司的 HR 说,透露午餐的食谱可不算是泄露公司内部机密哟。

为了留下证据,这两天吃饭时我特意带着相机。可惜暂时没有读卡器,只能日后再放出来了。如果你恰好在Google吃饭,并且看到一个拿着相机的人,那人很可能就是我了。

中餐:
* 【刀削面】(没挂牌子)
* 金针菇炝炒油菜(Wok fried bokchoy with mushroom)
* 红烧黄花鱼(Stewed yellow croaker with soy sauce)
* 香茅盐水鸭(Poached prawn in salt and herb water)
* 卤鸭翅(Braised goose wing with herb)
* 老醋花生(Peanut in vinegar sauce)
* 蔬菜炒米粉(Sauteed rice noodle with vegetables)
* 上汤皮蛋浸蔬菜(Spinach and preserved egg in soup)
* 韭菜合子(Chinese calzone with leek chive)
* 鱼香肝片(“Yu Xiang” slices of pig’s liver)
* 土豆烧牛腩(Braised beef with potato)

汤:
* 鲫鱼羊排堡(Lamb and sweet water fish “pot”)
* 番茄浓汤(Tomato puree soup)

西餐:
* 原汁烩蘑菇(Fricassee of mushrooms)
* 奶油茄泥伴松籽(Cream eggplant paste with pine nut)
* 咖喱炒饭(Curry rice)
* 意粉伴芝麻菜及银芽(Spaghetti with arugula, parmesan and bean sprouts)
* 油淋三文鱼(Steamed salmon with soy sauce)
* 泰式烧烤鸡(Thai B.B.Q. chicken)
* 新加坡肉骨茶(Singapore pork bakutek)

色拉:(调料同昨天,略)
* 华道夫色拉(Waldorf salad)
* 黑豆及金枪鱼香橙色拉(Bean salad with tuna and orange)

其他/点心:
* 萨拉米肠比萨(Salami pizza)
* 黄桃蛋糕(Peach polenta)
* 巧克力抓福蛋糕(Chocolate truffle cake)
* 纽约芝士(New York cheese)
(还有几种没有挂牌子,另有三种好吃的home-made曲奇饼。)

Google 午餐的食客有中国人,也有外国人,所以菜名都是双语标注的。从这些牌子上能学到不少菜名(比如“盒子”竟然是“calzone”),当然我相信也有存在不少翻译错误,会不会是 Google Translate 翻译出来的呢?

Comments (5)