`

在 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 环境, 这部分内容请看下一篇文章.

分享到:
评论

相关推荐

    VLM(基于linux磁盘容量修改)

    ### VLM(基于Linux磁盘容量修改):深入解析与实践指南 在现代数据中心和企业环境中,磁盘容量管理是一项至关重要的任务,特别是在资源需求不断变化的场景下。本文将详细探讨如何在Red Hat Enterprise Linux (RHEL) ...

    VLM - MetaTrader 5脚本.zip

    日内相对交易量 Voltest (VLM)指标

    红旗Linux

    更值得关注的是,RedFlagDCServer4.0的核心支持在32位Intel平台上分配超过4GB内存的数据库缓存,即VLM特性,理论上可将SGA扩大至62GB,极大地突破了传统限制,满足了企业级应用对海量数据缓存的需求。 ##### 可靠性...

    VLM.rar_VLM_升力

    用VLM编制了二维机翼的升力计算,与课本上的算例一致

    vlm.rar_VLM_飞行器_飞行器 fortran

    1. "vlm.dat":这可能是一个数据文件,包含了飞行器的几何参数、飞行条件等初始输入数据,供程序读取和处理。 2. "VLMpcv2.f":这是Fortran源代码文件,很可能就是描述中的低速飞行器设计程序的核心部分。用户可以...

    波音 737-300 - VLM - 面板法:使用 VLM 方法计算 Cl(y) 和 Cp(y)。-matlab开发

    用户需要解压缩文件后,在MATLAB环境中运行该脚本,并可能需要根据自己的飞机几何数据进行相应的参数调整。 通过VLM计算,工程师可以了解飞机在飞行过程中如何与空气相互作用,从而优化设计,提高燃油效率,增强...

    linux与oracle内核与内存技术.pptx

    【Linux与Oracle内核与内存技术】 在x86-32位体系结构中,Linux与Oracle数据库的结合面临着...通过理解这些技术细节,系统管理员和DBA可以更有效地配置和优化Oracle在Linux环境下的运行,以充分发挥硬件资源的优势。

    linuxVM平台扩展SGA

    本文旨在解决这些问题,并探讨如何在 Linux VM 平台上可靠地运行 Oracle 软件,重点是 SGA(共享全局区)的扩展。 #### 引言 为了实现 IA-32 架构上超过 4GB 的虚拟内存容量,必须对 Linux 的虚拟内存管理机制进行...

    vlc-video.rar_VLC 帧_VLC帧_vlc_vlc vlm_vlc7788-com

    1. **vlm (VLC Media Manager)**:负责管理和控制媒体播放,包括播放、停止、循环等操作,还可以进行流输出和广播。 2. **libvlc**:VLC的主库,提供了播放、控制和解码等功能的API,供开发者调用。 3. **解码器和...

    vlm.zip_VLM_lifting_propeller_propeller design_theory

    propeller design with lifting line theory

    探索微软新VLM Phi-3 Vision模型:详细分析与代码示例

    探索微软新VLM Phi-3 Vision模型:详细分析与代码示例

    vlm:只是另一种以书面编程格式编写的Emacs'(lisp-machine)配置

    显然,它并不是严格意义上的Lisp机器,因为它显然是软件程序,而不是物理计算机,但是随着这条线的逐渐模糊,对于Emacs来说它似乎是一个有用的称呼,因为Emacs ,它越来越像OS 。免责声明我不建议任何人直接安装或...

    Patron_Factory_VLM

    在IT行业中,设计模式是一种被广泛采用的最佳实践,它代表了在特定情境下解决软件设计问题的经验总结。"Patron_Factory_VLM"这个项目很可能是一个关于Java编程中的工厂模式实现示例,其中"VLM"可能是“Virtual ...

    The ASN.1 Compiler:转到github.com/vlm/asn1c以获取最新版本。-开源

    该ASN.1编译器将ASN.1规范转换为C代码。 asn1c与符合要求的BER / DER / XER / PER编解码器一起发货。 X.509,GSM TAP3,MEGACO,RRC和LDAP编码和解码... 注意:asn1c项目已大量移至GITHUB:http://github.com/vlm/asn1c

    涡格法fortran程序

    涡格法(Vortex Lattice Method,简称VLM)是一种广泛应用在航空航天领域中的计算气动特性的数值方法。它主要用于预测飞行器的气动力特性,包括升力、阻力、侧向力以及力矩等。涡格法的核心思想是将飞机表面划分为一...

    涡格法计算气动力MATLAB

    涡格法(Vortex Lattice Method,VLM)是一种在航空航天工程中广泛使用的计算气动特性的数值方法,尤其适用于翼型、机翼以及整个飞行器的气动分析。MATLAB作为一种强大的数值计算和可视化环境,是实现涡格法的理想...

Global site tag (gtag.js) - Google Analytics