搬家记

定了要去加州,立刻就面临着搬家的问题。美国人挺流行的一种方式是自己弄一个 U-haul 之类的开过去,可我人在费城,这一路要不间断地开 40 多个小时,在我看来这需要至少五天。要是有人同行轮换陪聊也就罢了,一个人开实在有点吃不消,再加上沿途住宿吃饭以及安全考虑,还是不要冒这个险了。

找搬家公司来看我的房间,这位大叔拿着个 iPad 记我有桌子沙发以及多少箱子之类,第二天开出了一个将近七千刀的天价——按照一立方英尺平均七磅算,林林总总估计我有四千磅东西要搬。这玩意似乎比我当初从国内搬过来还要贵 :((

天知道我这几年怎么就在这两室公寓里面攒下了这么多的东西。在计算出差不多搬一磅东西需要一块五美金之后,我就开始在网上贴广告卖家具,卖掉那些减掉搬家费之后净价值为负的家具。依稀记得当初是怎么把沙发买回家的,怎么把餐桌买回家的,怎么把衣橱装起来的,怎么把书架拼起来的。这段时间,就像是看着时光倒流,看着它们一件件消失,留下生活中一点点的空白。挂在网上的价格,也从一个月之前的斤斤计算,到后来基本上是越来越不在意了,只是希望对方早点来。即便如此,我还是觉得这是我来美国之后最没有契约感的事情——很多人前一天还信誓旦旦一定要买,第二天就短信不回电话不接直接消失。最典型的是我卖俩简易书柜,一共才卖 15 块钱,却被放了三次鸽子。后来临走了我降到 10 块,立刻有两个人打电话过来,其中一位第二天冒雪来把它们搬走了。

Continue reading “搬家记”

在 VMWare 下安装 Ubuntu 13.10 的共享文件夹问题

最近在 VMWare 下面装了一个 Ubuntu,但是共享文件夹总是用不了,每次一加载就报 “无法更新运行时文件夹共享状态: 在客户机操作系统内装载共享文件夹文件系统时出错。”
好在有高人解决了这个问题,虽然不是官方的:

1. 先选“重新安装 VMWare Tools”, 然后解压到 home。
2. 建这么一个 shell 脚本并 sudo 运行:

cd ~/vmware-tools-distrib/lib/modules/source
sudo tar xf vmhgfs.tar
sudo wget https://raw.github.com/rasa/vmware-tools-patches/master/patches/vmhgfs/vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch
sudo patch -p0 <vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch
sudo mv vmhgfs.tar vmhgfs.orig.tar
sudo tar cf vmhgfs.tar vmhgfs-only
cd ~/vmware-tools-distrib
sudo ./vmware-install.pl

3. 一路回车之后重启。应该就好了。

参考来源在这里这里。感谢补丁的作者。

查看补丁具体内容
--- vmhgfs-only/inode.c	2013-08-15 22:32:22.000000000 -0700
+++ vmhgfs-only.patched/inode.c	2013-09-16 21:31:12.323041668 -0700
@@ -31,6 +31,9 @@
 #include <linux/namei.h>
 #endif
 #include <linux/highmem.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
+#include <linux/dcache.h>
+#endif

 #include "compat_cred.h"
 #include "compat_fs.h"
@@ -1890,7 +1893,11 @@
 #endif
                            &inode->i_dentry,
                            d_alias) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
+         int dcount = d_count(dentry);
+#else
          int dcount = dentry->d_count;
+#endif
          if (dcount) {
             LOG(4, ("Found %s %d \n", dentry->d_name.name, dcount));
             return HgfsAccessInt(dentry, mask & (MAY_READ | MAY_WRITE | MAY_EXEC));
@@ -1943,10 +1950,12 @@
       list_for_each(pos, &inode->i_dentry) {
          int dcount;
          struct dentry *dentry = list_entry(pos, struct dentry, d_alias);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 38)
-         dcount = atomic_read(&dentry->d_count);
-#else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
+         dcount = d_count(dentry);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
          dcount = dentry->d_count;
+#else
+         dcount = atomic_read(&dentry->d_count);
 #endif
          if (dcount) {
             LOG(4, ("Found %s %d \n", (dentry)->d_name.name, dcount));