2010年7月14日星期三

Xen的时间问题

发现VPS的时间很诡异,ntp同步没用,人间跑2秒,VPS里面跑3秒。这是一个Ubuntu的VPS,内核是2.6.32-5-xen-amd64,是把VPS的时区从UTC调成北京时区后出现了这样的问题。后来知道原来Xen虚拟机的时间从domU得到,反正和正常系统时间的机制不同。我发现VirtualBox里面的Plan 9和NetBSD的时间都没有和宿主系统同步,只有Fedora和Windows XP的同步了。虚拟机时间是种新情况。

找到了解决办法:echo HWCLOCKACCESS=no >>/etc/default/rcS。然后重启了。

几条经验

Network Mananger里面,有线连接的DNS要手工指定才能连接出去。

在网页,如Wikipedia,正在加载的过程中,如果在Chrome里面用Proxy Switchy从无代理切换到SSH代理,就连接不上去了,必须重新启动mysshtunnel.sh才行。经验就是停止页面刷新后再切换代理状态。

发现Blogspot不重新定向我新设置的个人域名了,纠结几天,还去Google的论坛发贴了。刚刚发现是因为Chrome的Proxy Switchy插件是自动切换模式,所以就不用代理要打开,而自然是打不开的。最近发现解决问题需要有一套正规的方法,不然就是瞎碰。

2010年7月12日星期一

运行级的问题

Virtualbox和dictd开机不能启动。查看/etc/rc?.d下面的脚本链接没有问题,但是runlevel输出的是unknown。我以为是Ubuntu里面的upstart已经没有runlevel的概念了,但是查看/usr/share/doc/upstart/README.Debian.gz,里面说了runlevel的概念没有变,不过是在/etc/init/rc-sysinit.conf里面定义的。我看这个文件里面又说,runlevel可以被/etc/inittab里面的设置覆盖,而我的inittab里面只有一行了,是IBM DB2的。我想应该是这个文件造成了runlevel无法正确设置。

以前装了个IBM DB2 Express-C 9.7,想学学,但是装好后从来没有碰过,这次顺便就删除算了。没想到这个软件安装容易卸载难,安装的时候有详细的文档,卸载却制造各种障碍还没有文档。按照一个DB2 Express-C的卸载步骤,才卸载掉。重启后运行级还是unknown。干脆把inittab文件删除掉,问题还是照旧。

在launchpad上Ubuntu的Bug 543506里面,看到可以查看/var/log/boot.log(由bootlogd记录)。我发现我的里面有这样的记录:

init: network-interface (lo) pre-start process (748) terminated with status 1
init: network-interface (lo) post-stop process (752) terminated with status 1
init: network-interface (eth0) pre-start process (757) terminated with status 1
init: network-interface (eth0) post-stop process (766) terminated with status 1
…………
init: networking main process (948) terminated with status 1

这表明network-interfaces脚本启动出错,进而导致iinit没没有进入到运行级2,也就没有启动/etc/rc2.d里面的启动脚本。
我想起最近用了Network Manager上上网,为了不让interfaces文件起作用,我把/etc/network/interfaces文件改名了。这正是导致networking启动不起来的原因。我把interfaces文件改回去后重启,系统的运行级成了2,/etc/init.d下下面的vboxdrv和dictd都都启动了。

在上面说的bug记录中,有人指出了问题所在,就是upstart需要lo网络接口启用才能运行成功,而Network Manager启用lo后不会通知upstart。如果确实如他所说,在我的情况里,lo在interfaces文件里面,我把这个文件改名后,lo自然不是由networking启动的,而是由network-manager启动,没有通知upstart,所以就造成了init不能启动的问题。

OpenVPN

今晚,阅读了OpenVPN主页上对开源版本的介绍性文档。在VPS上下载并安装了OpenVPN Access Server。这是一个闭源的OpenVPN软件,提供Web管理界面。在Access Server上配置了服务,从Windows、Ubuntu和Fedora下面都可以连接到VPN服务器,但是如果在服务端选择替换客户端的默认路由,那么三个系统下的客户端都收不到包,ping不通除VPN的因特网地址和私有网地址外的任何IP。需要下次再研究这个问题。

PS: 上面说的Fedora是在Ubuntu下用VirtualBox虚拟的。为了用它读取宿主系统上的OpenVPN客户端配置文件,需要挂载宿主硬盘;为了挂载硬盘,需要虚拟机系统支持vboxsf文件系统;为了支持vboxsf,需要在虚拟机安装VirtualBox Guest Additions;为了安装Guest Additions,需要虚拟机挂载安装ISO文件。下面用图来表示吧,还包括安装Guest Additions需要的依赖条件。