Logo address

第5版で予想される fossil の姿

目次

2004/09/17 作成
2004/10/16 更新
2004/09 現在で kfs に依存せず fossil だけで動く Plan 9 端末が動作可能になっている。venti も必ずしも必要ではない。このような端末は将来の版(第5版)において Plan9 のシステム構築の基礎になるはずである。筆者は Mac OSX のノートパソコンで fossil ベースのシステムを作ってみたので、それを基にシステム設定などについて解説したい。読者は既にディスクレスの Plan 9 端末を作り、その下で fossil ファイルシステムを構築できることを仮定している。

注意: Mac OSX では Virtual PC を使用する。VGA は S3 Trio32/64、イーサネットコントローラは Intel 21041 である。これらのドライバは /sys/src/9/pc では標準的に含まれている。21041 は 10Mbps で遅いのが問題ではある。

カーネルの作成

Plan 9 にとって fossil は venti に対するローカルキャッシュであるが、単独のファイルシステムとしても機能する。ノートパソコンではその方が使いやすいと思われる。fossil ベースのファイルシステムはノートパソコンをディスクレスの Plan 9 端末にし、その下で /dev/sdC0/fossil を作成し、サーバのファイルをコピーすればよい。

fossil ベースのカーネルの推奨名称は 9pcf である。9pcf の標準的な構成は /sys/src/9/pc/pcf で与えられている。この内容を見ると、最後の部分は

bootdir
        bootpcf.out boot
        /386/bin/ip/ipconfig
        /386/bin/disk/kfs
        /386/bin/auth/factotum
        /386/bin/fossil/fossil
        /386/bin/venti/venti
となっている。これはカーネルに含めるべきプログラムを表している。kfs を使わない場合には /386/bin/disk/kfs を外してよい。/386/bin/venti/venti も外して良さそうに思うのだが、システムパニックに陥る。この問題はそのうち改善されるであろう。
なおブート時に
	venti, ... /net/net/clone file does not exist
のメーセージが出るが、気にしなくてもよい。

PLAN9.INI

カーネルをコンパイルし 9pcf を作成し、それを /n/9fat にコピーする。plan9.inibootfilebootargs
bootfile=sdC0!9fat!9pcf
bootargs=local!#S/sdC0/fossil
とする。(fs の指定はいざと言う時のために残しておいた方が良いであろう。)

fossil の編成情報

fossil が立ち上がるときに fossil は編成情報(flconf)を読む必要がある。筆者のは次のようになっている。このファイル名を flconf とする。
#
#       flproto after installation
#
fsys main config /dev/sdC0/fossil
fsys main open -AW
fsys main
# users  -r /active/adm/users
# srv -p fscons
srv fossil
#でコメントアウトした行は fossil を最初に立ち上げるのに使用されていた部分であり、ここでは不要である。
さてカーネルが立ち上がるときにカーネルは fossil の編成情報を見る必要がある。この段階ではカーネルは DOS の 12bit/24bit FAT しか認識しない。つまり fossil の編成情報(flconf)を fossil のファイルとして持っていても、それを見る手段は無いわけである。従って 9fat の中にこの編成情報を置くのは一つの考え方ではあるが、現在の配布では別の方法をとっている。それは fossil ファイルシステムの空きスペースの特定の位置にこの fossil の編成情報を置くのである。この位置に編成情報を書き込むために
	fossil/conf -w /dev/sdC0/fossil flconf
を実行する。(flconf が置かれているデイレクトリで実行する。) 内容の確認には
	fossil/conf /dev/sdC0/fossil
を実行すればよい。

Venti を使いたいときには

2004/10/16 追加
現在の fossil の仕様ではノートパソコンの場合には リモートのventi を使用する事はできない。なぜなら venti にバックアップをとったら、fossil からそれらのファイルが消えるからである。
固定端末であれば リモートの venti サーバを利用できる。その場合には flconf を次ぎようにすればよい。
#
#       flproto after installation
#
fsys main config /dev/sdC0/fossil
fsys main venti tcp!192.168.1.2!17034
fsys main open -AW
fsys main
# users  -r /active/adm/users
# srv -p fscons
srv fossil
但し、ここで 192.168.1.2 は筆者の家庭での venti サーバの IP アドレスであるから、使用環境に応じた変更が必要である。
ノートパソコンでどうしても venti を使いたいなら venti を構築し plan9.ini で
	venti=#S/sdC0/venti
のように指定する。

ブートマネージャ

筆者は MBM ( http://elm-chan.org/fsw/mbm/mbm.html )を愛用している。特に Virtual PC を使っている場合には FD boot の選択が容易なので重宝するかも知れない。

日本語キーボードの設定

Plan 9 の最近の配布ではキーボードの設定がとてもエレガントになった。/sys/lib/kbmap には様々なキーボードの設定ファイルが置かれている。jp が IBM-PC のための日本語キーボードである。/sys/lib/kbmap に移動し
	cp jp '#κ/kbmap'
を実行すれば日本語キーボードとして反応する。(この命令は termrc のどこかに置けばよいであろう。) ここに κ はギリシャ文字のカッパーである。これを打ち込むには ALT + * を打ち続けて k を打つ。あるいは
	man kbmap
を実行すると κ が表示されるのでそれをコピーしてもよい。
Mac OSX では固有の問題が発生する。バックスラッシュ (\) の問題である。OSX はバックスラッシュと円マーク(¥) を区別する。これは正しい方向であるが、バックスラッシュを出すには ALT キーを押しながら ¥ マークを打たなくてはならない( ALT + ¥ )。筆者はそのために大変不便な目に遭っている。(筆者には ¥ マークのニーズは全くないのである。) この動作が逆になっていた方が遥かにありがたいのであるが、それが可能なのかどうかが分からないのである。
/sys/lib/kbmap/jp は 109 キーボードに対応している。Mac OSX + VirtualPC + Plan9 では円マークは ¥ で、(バックスラッシュの表示は無いが) 109 キーボードと同様に「ろ」のキーを打てばバックスラッシュが打ち込める。
日本語キーボートを使う場合にもう一つ戸惑うのは fscons の終わり方である。ASCII キーボードでは CTRL + | で >>> が表示された。日本語キーボードでは CTRL + ] である。日本語キーボードの ] の位置が ASCII キーボードの | なのである。
キーボードに関する素晴らしいホームページに出会ったので紹介しておく。

ホスト環境とのインターフェース

Virtual PC を使用している場合にはどうしても Virtual PC が動いているホスト環境(すなわち OSX が動いているノートパソコンの環境)とファイルの交換をしたくなる。Cut&Paste もやれれば良いのであるが、それは Virtual PC 側のサポートと深く関わっているので望めない。Cut したデータはファイルを通じて Paste する事になる。
ファイルの交換をするには u9fs を使う。OSX 側で u9fs を動かすのである。OSX が PowerBook で動いている場合にはそのままではネッワークサービスを行わない。つまり xinetd が動いていない。
OSX 10.3.5 に関して言えば、筆者はどのように xinetd を起動しているか仕組みを知らない。関連するファイルは
	/System/Library/StartupItems/IPServices/IPServices
である。この内容は
#!/bin/sh

##
# IP Services
##

. /etc/rc.common

StartService ()
{
    ##
    # Internet super-server.
    ##
    ConsoleMessage "Starting internet services"
    xinetd -inetd_compat -pidfile /var/run/xinetd.pid

    ##
    # Internet Address Sharing.
    ##
    if [ -a /etc/com.apple.named.conf.proxy ]
    then
		ConsoleMessage "Starting Internet address sharing"
		/usr/libexec/InternetSharing
	fi
}

以下省略
であり、ブート時に PowerMac はこれを実行し、PoweBook は実行しない。筆者はこのコントロールがどこで行われているかを知らないのである。もちろん PowerBook では他の Unix と同様に /etc/rc の中に
	xinetd -inetd_compat -pidfile /var/run/xinetd.pid
を書き込んでもよいはずであるが、あまりにも安易に過ぎる。VirtualPC で Plan 9 環境を立ち上げたときに sudo でこれを実行するのが無難であろう。
VirtualPC のゲスト環境からホストの IP アドレスを自動的に読み取る仕組みはない。従って Plan 9 端末から 9fs を実行するときにはホストの IP アドレスは手作業で入力する事になる。ホストの IP アドレスは固定していないので
	autofs
を実行しておくと便利である[注1]。これを実行しておくとホストの IP が 192.168.1.100 の場合には
	9fs 192.168.1.100
を実行すると自動的に仮想ディレクトリ
	/n/192.168.1.100
が生成される。

注1: autofs は Fco. J. Ballesteros によるプログラムで、現在はこの機能は Plan 9 のリリースに mntgen として含まれています。(2004/09/30 追加)