我们实验室的项目开发是采用远程连接上服务器进行的,由于要开发大名鼎鼎的“龙芯”上的一个虚拟机,完成x86/Linux到Loongson/Linux可执行程序的直接执行,因此毫无疑问的需要两类服务器――x86和Loongson,出于效率的考虑,x86机器上开发虚拟机的静态翻译部分――静态翻译器,Loongson机器上开发动态翻译部分――动态翻译器。最新的4核Loongson 3还没有拿到,目前采用的是Loongson2f机器,大概有5台吧,我们组每人可以分到一台,呵呵,“龙芯”机器还是不错的。但是,x86机器上的静态翻译器用到了又是一个很有名气的开源编译ORC的后端优化部分,ORC也是我们实验室跟intel合作开发的哦。我们使用的ORC版本比较老了,因此得用gcc 2.96来编译(现在gcc 都4.3了),因此只在一台x86服务器上有这东东,这东东又是共享的,那真是小心翼翼啊,改对了还好,错了可成了害群之马,于是下定决心自己编译一份出来。说干就干,我用较新的gcc来编译orc,试了n次,死活不过,耐心都快被消耗殆尽。gcc 2.96在gcc的官方服务器上都下不到,有说明称GCC 2.96 is not a formal GCC release nor
will there ever be such a release,我晕死。查看x86机器的的Linux发行版本,原来是老得掉牙的redhat 9,幸好在实验室的ftp上下到了redhat 9的ISO文件,找来gcc2.96 的rpm包想要安装在自己本本的linux操作系统上(ps: 现在我的windows操作系统平时都不用了,真想格了它,又舍不到,还是留下了,以备不时之需),但是那一大堆依赖关系啊又是无法解决,没辙了,这不是逼我出绝招吗。
于是,在linux操作系统下安装了个VMWare 6.5,再在上面把redhat装上,接下来编译ORC和静态翻译器顺丰顺水,一路畅通。哎呀,讲了这么多还没到主题,这作文水平啊,估计又被小学老师称之为文不对题了,好了,进入主题。
我现在需要在虚拟机的redhat上开启nfs服务,以在主linux系统上mount成一个分区。步骤如下:
1. 安装好系统后,在/etc/init.d/下有了portmap和nfs两个脚本用于启动nfs服务,首先在建立文件/etc/exports文件,加上主linux系统ip及权限:
/home/lzs 10.3.0.81(rw,no_root_squash)
/home/lzs 172.16.96.1(rw,no_root_squash)
1.1 /home/lzs 10.3.0.81(rw,no_root_squash)。/home/lzs为nfs开放的根目录,10.3.0.81为实验室给我分配的ip,()中为权限设置,既然给我自己用就加上可读可写以及不禁root(访问者为root映射成服务端的root用户)。此时的虚拟机网络配置成bridge方式,占用一个ip――10.3.0.69。
1.2 /home/lzs 172.16.96.1(rw,no_root_squash)。当虚拟机网络配置成nat方式时选择这个出口,172.16.96.1为虚拟网卡vmnet8的地址。
2.在系统防火墙文件/etc/sysconfig/iptables中打开nfs的2049号端口,再重启防火墙:
/etc/init.d/iptables restart
3. restart portmap和nfs:
/etc/init.d/portmap restart
/etc/init.d/nfs restart
4. 到主linux下挂载nfs分区,一切OK
4.1 虚拟机nat方式时:
mount.nfs 10.3.0.69:/home/lzs ~/project/sbt
4.2 虚拟机bridge方式时:
mount.nfs 172.16.96.130:/home/lzs ~/project/sbt/
现在在主Debian/Linux下wine出source insight看代码写代码跟windows没有了差别,redesktop上服务器的帐户弄其他的也很方便,最主要的是在linux下可以学到很多windows下学不到的东西,要想深入了解计算机系统,就得去实践,就得去接触源码,包括内核代码,众所周知windows是不开源的,而Linux恰好与之相反。
上面的步骤写来简单,第一次配置时遇到不少问题,怎么诊断这些问题呢,原来/var/log/messages会给出丰富的信息,现记在这里以备查询。