Instructions for running the Symbolics VLM virtual machine on Linux.

VLM On Linux
From LispMachinery
Jump to: navigation, search Contents * 1 Running VLM on Linux
o 1.1 What is the VLM?
o 1.2 Using the snap4 Port
o 1.3 inetd
o 1.4 nfs-user-server
o 1.5 File Server authentication using the NIS
o 1.6 Starting Genera and defining your site
o 1.7 Networking the VLM
o 1.8 Getting a Meta Key
o 1.9 Some Painfully Learned Facts Running VLM on Linux This file gives some additional hints on running the Symbolics Virtual Lisp Machine (VLM) port to
Linux/x86_64 by Brad Parker. I am running the VLM on a Ubuntu 6.06.1 host, so whatever I describe
here may not work with other distributions. My background is FreeBSD, so some things I describe may
be obvious to those with a Linux background. The configuration I describe in this file does not try to
provide "security", so by following it, you will potentially expose all files on your Linux host as well as
all passwords you may enter into this configuration to the Internet, and beyond. What is the VLM? The VLM is a development by Symbolics that, in a way, represents the last Lisp machine built before
Symbolics went bankrupt. It was originally written for the DEC Alpha processor, which was the first 64
Bit CPU that was commercially available. A software implementation of the Lisp machine required a 64
Bit CPU to attain acceptable performance. The VLM implements the full Lisp machine architecture, so it
is largely software compatible to the "real" Symbolics Lisp machines (36xx, Ivory). Brad Parker wrote an implementation of the VLM for Linux. It is based on the Symbolics software, and
there is some uncertainty about its legal status as well as the legal status of the rest of Symbolics
intellectual property. This seems to mean that redistribution of the software or using it in a commercial
context is not possible at the moment. The VLM program is an emulator, it implements the environment for the Lisp machine operating
system, Genera, that looks like real hardware from the Lisp side. It supports a virtual ethernet interface
and a console. The screen is implemented using the X Window System, so you need to have X11
running on your host. Presently, the ethernet interface is hardwired to use the address 10.0.0.1 for the Linux host and
10.0.0.2 for the VLM. This cannot be changed. See the section on "Networking the VLM" in this file for
some information on how to work with this. Using the snap4 Port First of all, you need to get the VLM for Linux tar ball from
http://www.unlambda.com/download/genera/snap4.tar.gz - There may be a newer version, so please
check out the base directory and read this file with extra care if you are using a newer version. Unpack
the snap4 distribution on your Ubuntu host system. Make sure that you have read the README file in
the distribution, at least briefly. This file supplies additional information you'll need. You also want the OpenGenera 2.0 distribution tarball which includes the system sources as well as
additional software packages and example files. There is no official distribution site for this tar ball, so
you will have to ask around for this. If you have it, unpack it in a directory that you wish to be accessed
by the VLM, for example /vlm. My starting point is a plain Ubuntu installation from the 6.06.1 boot CD without any special options. A
few packages need to be added in order to make the Linux host system provide the neccessary service
to the VLM. Some of these services are found in auxilary package source which need to be enabled in
/etc/apt/sources.list (I uncommented all commented-out package sources). $ sudo apt-get update needs to be run after the sources have been enabled in order to refresh the local cache of package names. The following packages are required in addition to the base system: $ sudo apt-get install inetd nfs-common nfs-user-server If "inetd" doesn't work for you, try "netkit-inetd". If "nfs-user-server" doesn't work for you, you probably didn't uncomment the package sources in /etc/apt/sources.list as described above. inetd The Internet superserver is used to provide the VLM with the system date and time during startup. After
installation, the following entries in /etc/inetd.conf need to be added or uncommented: $ cat /etc/inetd.conf
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal After the file has been updated, restart inetd with $ sudo /etc/init.d/inetd restart nfs-user-server The NFS file server is used to give the VLM access to a file system. In theory, the kernel mode NFS server
should give better performance, but I had difficulties getting it to run. After installation, /etc/exports
needs to be updated in order to export the host's file system to the VLM by adding a line like: $ cat /etc/exports
/ 10.0.0.2(rw,no_root_squash) Depending on NFS server flavour, you may want to add also the following options after the no_root_squash option to squelch some warnings sync,subtree_check After this has been done, restart the NFS server using $ sudo /etc/init.d/nfs-user-server restart Now verify that your file system is properly exported: $ showmount -e localhost Note that the VLM now has full access to the hosts' file system and can overwrite or delete any file. You
may restrict access by exporting only part file system, but I have not tried this. Also note that this
example exports the file system to 10.0.0.2, which is the compiled-in address of the VLM. Other
systems in the network have no access to the hosts' file system. If you access files from the VLM through NFS using "anonymous" access, the uid 4294967294 and gid
4294967294 will be used. These ids are presumably meant to mean "nobody". Add entries to
/etc/passwd and /etc/group for this uid and gid in order to have something better than the numeric uid
be displayed when listing files on the host system. $ grep lispm /etc/passwd /etc/group
/etc/passwd:lispm:x:4294967294:4294967294::/tmp:/bin/false
/etc/group:lispm:x:4294967294: You now have a basic setup that will allow you to start Genera. Skip to "Starting Genera and defining your site" if you are impatient. File Server authentication using the NIS If you want to set up log ins from the VLM to the NFS server on the host system, the VLM needs to get
access to the mapping from user ids and group ids to user names and vice versa. When Genera was
written, the NIS protocol was commonly used to provide this service within local networks. NIS basically
exports the authentication files in the traditional unix format to a local area network. To run NIS, you need the nis package: $ sudo apt-get install nis You need to decide what your NIS domain name will be. This domain name does not need to
correspond to your DNS domain name. My NIS domain name is the same as my Genera site name
("pharmacy"), but anything else could be used instead. The NIS domain name must be put into the file
/etc/defaultdomain: $ cat /etc/defaultdomain
pharmacy You need to set up your system as NIS master in the file /etc/default/nis: $ grep NISSERVER /etc/default/nis
NISSERVER=master Your password file needs to use "unix crypt" style passwords instead of the now-common md5
passwords. On Ubuntu with the default installation I use, this is configured in the file
/etc/pam.d/common-password by commenting out the string "md5": $ grep md5 /etc/pam.d/common-password
password required pam_unix.so nullok obscure min=4 max=8 # md5 Note that you will now have to re-set all passwords using the "passwd" command so that they appear in the correct format. The VLM does not support shadow passwords, so you need to convert your password database: $ sudo pwunconv
$ sudo grpunconv Once all this is done, you have to initialize your NIS database: $ cd /var/yp
$ sudo make This should leave you with a NIS server that can be used for authentication from the Lisp machine. Starting Genera and defining your site Once you have set up a suitable host environment, you need to configure the .VLM file in the snap4/
directory. (Note: Make sure you are using the .VLM file and not the dot.VLM file!) As distributed, it
contains two wrong lines: genera.world: ../symbolics/MIT.vlod
genera.debugger: ../symbolics/VLM_debugger These should read genera.world: MIT.vlod
genera.debugger: VLM_debugger Fix the two lines and save the file. Now you are ready to start the VLM by changing your working
directory to the snap4/ directory and type: $ sudo ./genera The VLM should start and present you with a welcome screen that asks you to log in. You will then have
to define your site, please see the quickstart.text file in the OpenGenera distribution directory for
information how to do that. Once you have defined your site, save your world: Command: Reset Network
Command: Save World <your-host>:/tmp/my-genera.vlod Replace <your-host> by the name of your Linux host, as defined in the Define Site process. The path
you specify needs to be writable from the VLM through NFS. If it is not writeable, the VLM will crash and
you'll loose the site definition. Networking the VLM As mentioned, the VLM has a fixed network configuration with a private IP address. In order to be able
to access hosts in the Internet, your Linux host needs to do network address translation. I used the
"firestarter" utility to get a basic configuration running, but this has the drawback that the firewall has
to be manually started after the VLM had come up. firestarter creates interface-dependent firewall rules
and the tun0 interface, which is used by the VLM, exists only while the VLM runs. I am sure that a
better setup can be created by someone who knows more about Linux firewalls, and the best way
would be to use a bridge interface in the VLM so that the Linux network stack would be fully
circumvented. Maybe in the next release. Getting a Meta Key Try $ xmodmap -e "keysym Alt_L = Meta_L Alt_L"
$ xmodmap -e "add mod1 = Meta_L" if your left Alt key does not act as a Meta key. (thanks to ecraven) Some Painfully Learned Facts 1. The world images that are included in the snap3 and 4 releases won't boot if the system date is after ~2000! y2k thing?? 2. set genera.network ip in .VLM to 10.0.0.2 * 3. when defining world, set the ip address of yourhost to 10.0.0.1 * 4. xwindow events from the lvm come through on 10.0.0.1, so xhost +10.0.0.1 is usually needed * 5. genera pretty much has to run as root, ymmv but I was didn't figure out how to get it to work otherwise. * 6. Recent linux Xwindows implementations leave out some archaic functionality that the VLM requires
only when saving world. If you get everything else set up then find that the VLM hangs during a save
world, you may need to try using an older version of your host operating system (ouch!). * 7. If running your host OS in a virtual machine and having trouble getting a working meta key,
check that the virtualization software is not munging the keystrokes before they ever get to the X
server. (VMware default key-mappings can be a problem on a Mac keyboard.) * <a href="http://www.cliki.net/Linux%20VLM%20workarounds">But see</a> Tested/working configurations:
Pentium D system with 2 gig of memory running ubuntu 7.04 64 bit desktop
VMware fusion on Mac Pro running ubuntu 7.04 64bit desktop

转自http://www.cliki.net/VLM_on_Linux

参考http://www.advogato.org/person/johnw/diary/12.html

[l转]VLM_on_Linux的更多相关文章

  1. JavaWeb 后端 <二> 之 Servlet 学习笔记

    一.Servlet概述 1.什么是Servlet Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应. 2.Servlet中的方法 public v ...

  2. HTML5 3D 粒子波浪动画特效DEMO演示

    需要thress.js插件:     http://github.com/mrdoob/three.js // three.js - http://github.com/mrdoob/three.js ...

  3. 排序算法----基数排序(RadixSort(L))单链表智能版本

    转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...

  4. VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用

    CSDN原博文:http://blog.csdn.net/houkai363/article/details/8134787 遇到了:不能将参数 1 从“const char [5]”转换为“LPCT ...

  5. 排序算法----基数排序(RadixSort(L,max))单链表版本

    转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...

  6. BZOJ 1212: [HNOI2004]L语言 [AC自动机 DP]

    1212: [HNOI2004]L语言 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1367  Solved: 598[Submit][Status ...

  7. latex均方极限符号l.i.m在lyx下的输入方法

    $\mathop{l.i.m}\limits_{x\to +\infty}$ 命令说明: 1.指定数学环境$$ 2.\mathop{l.i.m}指数学符号自定义为l.i.m 3.\limits_{x\ ...

  8. 求单链表L各结点的阶乘之和(c语言)

    链表需要用到指针 阶乘需要用到递归 链表中的注意事项: 1.链表L是否等于NULL ----------是循环结束的条件 2.链表L->Data ---------取链表L中各个结点的值 3.L ...

  9. 模仿迅L看看<音频播放器> 实现点击进度条,跳转播放

    <Style x:Key="btnFallback" TargetType="{x:Type Button}"> <Setter Proper ...

随机推荐

  1. 在Mac上使用vundle自动安装vim插件,并用vim代替sourceinsight

    一直以来在Mac上找不到好的代码阅读工具,最近根据网上的教程,自己总结一下,做了个在Mac的类sourceinsight的vim,感觉很好用.我不喜欢那种把vim搞的很复杂的配置,所以做了个仅仅能满足 ...

  2. 用 C 语言编写 Windows 服务程序的五个步骤

    Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务.为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择.本文将建立并实现一个简单的服务程序,其功能是查询系统 ...

  3. python 反向查找

    python 字符串反向查找大部分在正向查找前面加入r eg: str.rfind('str') str.rsplit(',')

  4. qt之窗口换肤(一个qss的坑:当类属性发现变化时需要重置qss,使用rcc资源文件)

    1.相关文章 Qt 资源系统qt的moc,uic,rcc命令的使用 2.概要    毕业两年了,一直使用的是qt界面库来开发程序,使用过vs08.10.13等开发工具,并安装了qt的插件,最近在做客户 ...

  5. JSP页面中文参数传递get和post方法分析

    原文 http://developer.51cto.com/art/200907/133499.htm 在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如 ...

  6. Friendly number

    Friendly number Long numbers can be made to look nicer, so let’s write some code to do just that. Yo ...

  7. 地址重写--Java中urlrewriter的使用

    最近公司以前的一个项目需要升级改版,其中的一个模块是使用Struts2做的不需要改动,但是需要将其从之前的项目里面剥离出来,看了看官网,发现所有的链接访问的静态地址,以为是FreeMarker实现的, ...

  8. 线程篇-01-NSThread

    一.概述 1.使用NSThread创建线程的三种方式和区别. 二.核心 2.1 NSThread创建线程的三种方式和区别. 主要有NSThread对象的创建线程的类方法detachNewThreadS ...

  9. 数据库中的索引Index

    索引就像一本书的目录,而书中的索引是对一个词语的列表,其中注明了包含各个词的页码.数据库中的索引 是某一个表中一列或者若干列值的集合和相应的只想表中物理标识这些值的数据页的逻辑指针清单. 索引的作用: ...

  10. mysql、添加和删除用户、添加权限

    创建用户      mysql>insert into mysql.user(Host,User,Password) values("localhost","tes ...