在 Linux 上运行 VLM 环境 (Part 1)

[准备工作]

1. 一台 x86_64 兼容的服务器或工作站, 只有 x86 平台的话可用 qemu 配 x86_64 虚拟机;
2. 64 位 Linux 系统, 推荐采用经过测试的版本 (Debian 或 Ubuntu);
3. opengenera2.tar.bz2 和 snap4.tar.gz 这两个安装文件.

[理论]

1. Virtual Lisp Machine(VLM) 运行环境由三部分组成:
   启动程序是操作系统接口, 负责 lisp machine 指令到 alpha 指令的转换, 并加载映像文件;
   操作系统映像文件, 包括全部 Lisp 层面的实现;
   源代码以及文档(sys.sct目录);

2. 难以得到的 opengenera2.tar.bz2 实际上只提供最后一部分: 源代码以及文档.
   这个压缩包里含有的其余两部分是用于 Alpha 处理器的 DEC Tru64 UNIX 环境下的, 对 x86_64 环境没有用的.

3. snap4.tar.gz 里包括三个东西:
   启动程序(genera), 操作系统接口, 估计完成了从 lisp machine 指令到 x86_64 的转换.
   映像文件(Genera-8-5.vlod)
   调试器映像(VLM_debugger)

4. VLM 是一台虚拟机, 运行 VLM 的真实服务器称为宿主机. 虚拟机访问宿主机资源是通过网络来完成的. 对于文件来说, 使用的是 NFS. VLM 可以将宿主机的文件系统映射到 Lisp 的 SYS 逻辑路径上.

5. VLM 的系统时间是在启动时通过宿主机提供的 UNIX 时间服务以 UDP 协议获得的, 实践表明不存在千年虫.

6. VLM 的 Linux 移植版本把 IP 地址固定在 10.0.0.2 上,它在运行时建立了一个 TUN 通道,连接到宿主机 10.0.0.1 上,宿主机上的这个地址是自动创建的,无须事先修改任何网络有关的配置文件。但要确保宿主机本身不要配置任何通道网络设备。

[实践]

1. 安装宿主机上必须的一些软件, 包括 INETD, NFS 和 NIS:

# aptitude install openbsd-inetd nfs-user-server nis

注意, 安装 NIS 时系统会提示输入 NIS 服务器所在的网络域, 默认值是当前 Linux 主机所在的 DNS 域, 建议接受这一默认值.

1.1. INETD 为 VLM 提供时间服务, 它的配置文件 /etc/inetd.conf 里要包括下列 4 行:

daytime         stream tcp     nowait root    internal
daytime         dgram   udp     wait    root    internal
time            stream tcp     nowait root    internal
time            dgram   udp     wait    root    internal

然后重启 inetd:

# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.

1.2. NFS 的配置方法是在 /etc/exports 里加入下列一行:

/       10.0.0.2(rw,no_root_squash)

然后重启 NFS:

# /etc/init.d/nfs-user-server restart
Stopping NFS servers: mountd nfsd.
Starting NFS servers: nfsd mountd.

NFS 的正确访问还需要在宿主机上建立一个 lispm 组和 lispm 用户:

# groupadd -g 4294967294 lispm
# useradd -g lispm -u 4294967294 -s /bin/false -d /tmp lispm

上述用户和组在 /etc/passwd 以及 /etc/group 里是这个样子的:
lispm:!:4294967294:4294967294::/tmp:/bin/false
lispm:!:4294967294:

1.3. NIS 提供的配置文件在 /etc/default/nis 里, 主要修改的内容如下:

NISSERVER=master
NISCLIENT=false

然后重启 nis:

# /etc/init.d/nis restart
Starting NIS services: ypserv yppasswdd ypxfrd ypbind.

NIS 服务所需的数据使用下列方法生成:

1.3.1. 修改系统密码加密方式, 取消 md5 特性. 方法是修改 /etc/pam.d/common-password, 把
password   required   pam_unix.so nullok obscure min=4 max=8 md5
改为
password   required   pam_unix.so nullok obscure min=4 max=8 # md5
这相当于把 md5 部分注释掉了.

1.3.2. 将 shadow 密码转换为传统密码, 这样会降低密码安全性, 但这是 nis 所要求的, 没有办法:
# pwunconv
# grpunconv
这两个命令的精确含义可以通过 man 查询到:
pwunconv creates passwd from passwd and shadow and then removes shadow.
grpunconv creates group from group and gshadow and then removes gshadow.

1.3.3. 进入 /var/yp 目录, 执行 make:

ddb-3:/var/yp# make
make[1]: Entering directory `/var/yp/lab.163.org'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating netgroup...
Updating netgroup.byhost...
Updating netgroup.byuser...
make[1]: Leaving directory `/var/yp/lab.163.org'

2. 安装 VLM 所需文件

在主目录里, 解压两个安装文件: (以下假设我的主目录是 /home/binghe, 这个假设会多次用到)

$ tar xvjf opengenera2.tar.bz2
$ tar xvzf snap4.tar.gz

解压 opengenera2.tar.bz2 能得到一个 og2 目录, 对我们来说, 唯一需要的是 og2/sys.sct 目录.
解压 snap4.tar.gz 能得到 snap4 目录, 内容如下:

-rw-r--r-- 1 binghe staff      733 2006-08-08 dot.VLM
-rwxr-xr-x 1 binghe staff 1533760 2006-08-08 genera
-rw-r--r-- 1 binghe staff 54804480 2006-08-08 Genera-8-5.vlod
-rw-r--r-- 1 binghe staff     2902 2006-08-08 README
-rw-r--r-- 1 binghe staff      934 2006-08-08 .VLM
-rw-r--r-- 1 binghe staff   346880 2006-08-08 VLM_debugger

唯一的配置文件是 .VLM 文件, 确保它的内容是这样的:

genera.network: 10.0.0.2;mask=255.255.255.0; gateway=10.0.0.1
genera.virtualMemory: 2048
genera.world: Genera-8-5.vlod
genera.debugger: VLM_debugger
genera.coldLoad.geometry: 800x600

由于 genera 需要打开一个 TUN/TAP 网络设备, 普通用户没有这个权限, 所以 VLM 必须以 root 权限启动, 一个比较好的方法是使用 sudo, 给当前用户设置一个 sudo 的特权. 方法是安装 sudo:

# aptitude install sudo

然后用 visudo 命令修改 sudo 的配置文件, 加上下面一行: (我当前的用户是 binghe, 读者请自行调整配置文件里的用户名部分)

binghe ALL=NOPASSWD: ALL

最后, 如果一切顺利的话, 在 snap4 目录里执行 sudo ./genera 就可以看到 Open Genera 窗口了. 需要注意的是 Lisp Machine 的窗口尺寸非常大,在我的桌面环境下,加上 Linux 自身的窗口边框以后,尺寸达到了 1512x976,幸好我的显示器是 1680x1050 的……

还有一种可能, 那就是这台 64 位机, 并不是工作站, 而是一台远程的服务器. 这种情况下只需通过 SSH 登录时打开 X 转发选项 (ssh 加 -X 参数), 同时确保从一个运行了 X Server 的客户机登录过去就可以了 (所有的 Linux 桌面环境都满足条件, Windows 的话难度较大, 需要安装 Cygwin 并启动 X Server 才行)

启动 Open Genera 窗口以后还需要大量配置工作才能得到一个可用的 Lisp Machine 环境, 这部分内容请看下一篇文章.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值