Tech Sketch Bucket of Technical Chips by TIS Inc.

LinuxでLispMachine(OpenGenera)を動かす(その3)

Pocket

2015年2月3日に公開した「LinuxでLispMachine(OpenGenera)を動かす(その2)」の続きです。 起動はしたけど、エディタを使おうとしても必ずしもキーボードがうまく使えなかったり していることが起きていると思われるのでそのあたりの話をすることにします。

 OpenGeneraは実質的に1990年代のものなのでマウスは3ボタンを使用しています。 キーボードもsymbolics独自のもので本当に今のものとはいろいろ異なるのでその対応の話をします。 symbolics-keyboard

symbolicsはキーボードとして前の図にあるようなレイアウトのものを使用していました。 見たことない名前のキーがたくさんあること気づくと思います。 通常のキーボードならあるCtrlやShiftキーと同様にそのキーだけでは特に入力が発生しない 他のキーと組み合わせて使うmodifierキーが非常に多く10個存在しています。

    SHIFT,CAPS LOCK,CONTROL,META,SUPER,HYPER,SYMBOL,LOCAL,REPEAT,MODE LOCK

modifierキーだけでなくfunctionキーと呼ぶ機能キーも22種用意されています

    ESCAPE,TAB,BACKSPACE,RUBOUT,RETURN,LINE,END,SCROLL FUNCTION,REFRESH,CLEA INPUT,SUSPEND,RESUME,ABORT,NETWORK,HELP,PAGE,COMPLETE,SELECT,CIRCLE,SQUARE,TRIANGLE

この記述は、ソースと一緒に含まれているオンラインドキュメントの"Genera Handbook"に記述されています。

HYPER,CIRCLE,SQUARE,TRIANGLEはユーザがあとで使うために準備されていて、Generaでは使用されていません。

キーボードを設定する

symbolicsは上記のキーボードを基本としています。 opengeneraではx windowを用いて使用するので symbolicsキーボードでなくても一応操作はできるようにされています。 現状の状態を確認するにはShow X Keyboard Mapping コマンドを用いて確認することができます。 候補のデフォルトを選択するには [SPACE]キーで可能なので

    sh[SPACE]x[SPACE]k[SPACE]m[SPACE][SPACE]:a[SPACE]

と入力すると次の画面の内容を参照することができます。

showXkeyNIL

 標準で画面出力の多くは**more** と表示して表示が中断されます。続きを表示するには[SPACE]を用い、 途中で終わらせる場合はABORTを用います。

 この初期設定状態は必ずしも使いやすい状態にはなっていないので、現状の使用キーボードにより近い登録済みキーボードタイプとしてNDSに設定を変更してみます。 このNDSは101キーボードに非常に近いもので比較的現在一般に使用される109キーボード等に比較的近いものと言えます。 キーボードレイアウトは若干ことなっていますが、LinuxでのX windowでのキー定義を参照しているので英数字などは正しく動作します。
showXkeyNDS

代表的な機能キーを紹介しておきます。

SELECTキー NDSではF1キー

Activityと呼ばれる画面の呼び出しを行います。

SELECT LがLispリスナ

SELECT EがZmacsというEmacsの派生エディタ

などを呼び出すことができます。

HELPキー NDSではF12キー

各種ヘルプ機能が呼び出されます。

ABORTキー NDSではF6キー

キャンセル的な目的で使用されるものです。

SUSPEND NDSではF4キー

実行中の中断とか行う際に使用します。 c-m-SUSPEND(controlキーとmetaキーを押しながらSUSPENDキーを押下すると強制的にデバッガーを起動することができます。

RESUME NDSではF5キー

SUPEND等で中断したものを再開させたりする際に使用します。

COMPLETE NDSではF11キー

入力の補完とか実行します。

RUBOUT NDSではDELETEキー

最後の入力した文字の削除を行います。 BAKSPACEは削除しません。

さらに自分で使用している109キーボードの設定ファイルを定義することもできます。

通常の2ボタンマウスでも 3ボタンマウスの左と右はそれぞれのボタンで 中は真ん中のトグルのところが対応しています。
左は標準の機能を右はメニューを中はオプション機能が呼び出すことが標準とされています。 controlやmetaなどのmodifierキーとの組み合わせて呼び出す場合があります。 shiftとの組み合わせは標準ではダブルクリックと認識されることになっていたはずです。
エディタであるZmacs上では種々の試みがされていたりしました。 たとえばダブルクリック以上のクリックの可能性とかも試されていたと記憶しています。 実際の使用には耐えられるものではないですが、システムの認識として7th ckickも認識したいたと記憶しています。

それでは最後に これまで復習として前回まだの起動の話で 一応、現在もサポートされているCentOS 5上での手順をまとめておくことにします。

実際にインストールを開始する前に準備しておくもの

1.ハードウェア、OS

 CentOS5 64Bitが起動可能なPC もちろんディスプレイ、キーボード・マウス、ネットワークなど CentOS 5.11 64bit版を準備してください。

 opengeneraのウィンドウは確か元々のコンソールの解像度近い1000x900程度のウィンドウが表示可能なディスプレィを準備した方がより正常に動作させることができます。またかなり昔のx window systemのプロトコルで描画等を行うのでそれが可能なモジュールもインストールした状態のOS(例:Ubuntu7.10,CentOS5など)をセットアップしてください。  

2.OpenGeneraのインストールモジュール snap4.tar.gz

 エミュレータを作成したMr.Brad Parkerのサイトから実行モジュールである  http://www.unlambda.com/download/genera/snap4.tar.gz  を入手します。

3.opengeneraのソース opengenera2.tar.bz2

opengenera2.tar.bz2をネット上から入手してください。  これでDocumentExaminerでオンラインドキュメントとして基本マニュアルも参照可能になります。  linux上に展開し、そのファイルを後で設定するnfsを用いてアクセスします。

OSのインストールからOpenGeneraの起動まで

1.CentOS5.11 64bit版を立ち上げる

別に特別なことではなく、CentOS5.11 64bit版のISOメディアで起動してHDDにインストールするだけの話なので、ここでは特に書きません。 *SELinuxの設定 通常の使用ではファイルをNFS等で参照等するだけなので有効していても大丈夫みたいです。 但し、Save Worldと言う実行中のlisp環境を保存する際には、NFSを用いていないためかSELinuxが有効な状態ではエラーになってしまいます。 *Firewallの設定 ポート37を使用するudpのtimeサービスとNFS(v2)サービスをopengenera(標準では10.0.0.2)が利用できるように設定しておいてください。

1) opengenera用にサービスを準備する

udpのTimeサービスを設定する

OpenGenera起動時に現在時刻をudp上のtimeサービスで取得しています。 手で現在日時を入れることでも対応できますが、その場合前回のその2で説明したように一度デバッガに落ちてしまうので、 udpのtimeサービスでlinux上の現在時刻を取得することをおすすめいたします。

/etc/xinetd.d/time-dgram ファイルを修正してudp timeサービスが起動されるようにします。

nfsを設定する

/etc/exports ファイルを編集してOpenGeneraの10.0.0.2からのアクセスを認める設定をします。

<

blockquote> 10.0.0.2 は後で.VLMで設定するopengenera環境のipアドレスです。 要注意: この設定ではOpenGenaraからは全てのフォルダが参照・書込み可能になっています。

<

blockquote>

上記設定を反映するためにnfsサーバのサービスを再起動します。

$ sudo /etc/rc.d/init.d/nfs restart

正しく設定されているかどうかを確認します。

・参考にしたサイトではNISサービスも必要との記述がありますが、現状なくても動作します。

2.ファイヤウォールを設定する

現状のgenera起動プログラムはlinux上の仮想ネットワークTUNを用いてlinuxと通信を行います。 この際のlinux側のアドレスは10.0.0.1と固定されています。

3.snap4を取得して配置する

symbolicsというフォルダ上にsnap4の中身ファイル展開します。

このフォルダ名は編集しなければならない量を減らすためだけで別にsymbolicsにしなくても大丈夫です。

起動設定ファイルである .VLMファイルの内容を整えます。

'../symbolics/Genera-8-5.vlod'は提供されるlispイメージのファイル名です。

4.OpenGeneraを起動する

symbolics フォルダでOpenGeneraの起動ファイルを実行します。



するとOpengeneraが起動されます。

ソースを参照できるようにする

本当はset siteコマンドで正しくサイト情報を作成することが推奨されますが、 ここでは出荷時に使用されているdistributionサイトのままで、設定の変更を行います。 ここではopengenera2.tar.bz2を/home/lispm/に展開した場合のものです。

サイト情報を保存するsys:site;は特別なフォルダとして扱われており、 上の通常の設定であるfs::set-logical-pathname-hostとは別に下の設定でNET:*LOCAL-SITE*の:SITE-DIRECTORYプロパティの値を設定しないと有効な設定になりません。
次のコマンドを実行して正しく情報が参照可能になったか確認してみましょう。
show directory sys:site;

【OpenGenera関連で参考にしたサイト】

http://www.advogato.org/person/johnw/diary/12.html
http://www.cliki.net/VLM_on_Linux
https://github.com/ynniv/opengenera
http://www.textfiles.com/bitsavers/pdf/symbolics/genera/Open_Genera_User_s_Guide.pdf

エンジニア採用中!私たちと一緒に働いてみませんか?