Plan9 を載せる上でまず調べる必要があるのは VGA と NIC である。
CF-C33 の VGA コントローラは NeoMagic MagicGraph であり、これは Plan9 でサポートされている。実際に Plan9 のインストール用の FD から起動したところ /lib/vgadb には手を加える必要がない事が判明した。
CF-C33 で筆者が使用しているのは Melco の LPC2-T である。日本のメーカのものは屡々素性が良く分からない。使用されているコントローラは公表して欲しいのだが日本のメーカは公表しない事が多い。インターネットで検索した結果素晴らしいホームページに出会った。
http://www.rccm.co.jp/~juk/linux/server_setup/このホームページはI/O機器のコントローラに関する膨大な調査結果を載せている。それによると LPC2-T は NE2000 クローンらしい。
ether0=type=ec2t id=LPC2と書いて NIC が認識された。
CF-C33 の購入時のハードディスク( HD )容量は 4GB である。
ついでに 20BG の HD と交換する事にした。
HD のサイズは 2.5 インチ、厚さ 9mm である。
この作業の詳細
さて、予定では新しい HD に、最初に Windows98 を組み込むつもりであったが、これは一筋縄では行かない事に気付いた。
筆者は CF-C33 のために IO データの PCSC-F を用意していた。いざと言う時のために SCSI の CD-ROM へのアクセスルートを確保しておいたのである。(実際には一度も使用されなかったが。)
ところが CF-C33 用に作成した 「First Ade FD for Windows」が CD-ROM を認識しないのである。多分筆者が軽く考え過ぎていたのであろう。再インストール可能の確認を怠ったために関連するドライバが全く組み込まれていなかった。IO データから提供されているドライバを CONFIG.SYS に組み込んでも認識しない。原因は CardBus 用のドライバが CONFIG.SYS に組み込まれていないかららしい。ところがこのドライバがどこにあるのか分からない。結局 Windows98 の組み込みは後回しにした。
ネットワークを通じて組み込むしかない。幸い Plan9 には素晴らしいネットワーク環境がある。
pc と note はここに登場する2つのパソコンの(筆者が勝手に付けた)名称である。
note は今問題にしている CF-C33 、 pc は組み立てパソコンで、Windows98、Windows2000、Plan9、Linux が動く様になっている。
最初の目標は note を FD からブートして Plan9 端末にすることである。
note のルートファイルシステムは pc の HD である。
pc 側では
disk/kfscmd listen disk/kfscmd noneattachを実行しておく。
note の FD の内容
9pc.gz
plan9.ini
plan9.ini には
monitor=xga vgasize=800x600x8 mouseport=ps2 pcmcia0=type=XXX irq=10 ← これは多分不要 ether0=type=ec2t id=LPC2 ← LPC2 で Melco の LPC2-T が認識された bootfile=fd0!dos!9pc.gz fs=192.168.1.2 ← これは pc の IP アドレス
ブート時の選択
user [none]: ← ユーザ none でログインする
note の HD に Plan9 パーティションを作成する。
ついでに dos パーティションも作成しておく。dos パーティションは外したディスクのコピーをとる予定なので、サイズを一致させる。
注意: win98 に付属する fdisk は 8GB までしか扱えない。またパーティションサイズを正確に設定するのが困難である。従って fdisk は Plan9 に付属するものを使用するのがよい。
disk/mbr -m /386/mbr /dev/sdC0/data disk/fdisk /dev/sdC0/data disk/prep -baw /dev/sdC0/plan9 disk/format -b /386/bpslba -d -r 2 /dev/sdC0/9fat 9load 9pcdisk plan9.ini参考のために筆者の割り付けを載せる。fdisk
disk/kfs -rb4096 -f/dev/sdC0/fs
term% disk/fdisk -r /dev/sdC0/data cylinder = 8225280 bytes p1 0 512 (512 cylinders, 3.92 GB) FAT32 empty 512 1027 (515 cylinders, 3.94 GB) * p2 1027 1700 (673 cylinders, 5.15 GB) PLAN9 empty 1700 2432 (732 cylinders, 5.60 GB) >>>fdisk のマニュアルには t (タイプ)コマンドの説明が無い。パーティションを設定してもタイプコマンドでパーティションタイプを指定しないと書き込まれない。
disk/prep -baw /dev/sdC0/plan9によって
9fat fs swapが適当に割り付けられる。
term% disk/prep -r /dev/sdC0/plan9 9fat 0 20482 (20482 sectors, 10.00 MB) fs 20482 10695777 (10675295 sectors, 5.09 GB) swap 10695777 10811745 (115968 sectors, 56.62 MB) >>>Ref: prep(8)
disk/format -b /386/bpslba -d -r 2 /dev/sdC0/9fat 9load 9pcdisk plan9.ini9fat がフォーマットされる。
9fs pc但し /n/pc を作成しておく。(読者は多分 pc ではなく他の名前を使用しているであろう。)
note の kfs を /n/kfs にマウントする
mount -c /srv/kfs /n/kfs disk/kfscmd allow
disk/kfscmd allow
disk/mkext disk/mkfsを使用するが、筆者は自作のもっと手軽なツールを使っている。
これで完了。
note の古い HD を pc に取り付ける。何かの役に立つと思って買っておいた 2.5/3.5
の変換ベイがこんな所で活躍するとは思っていなかった。
Plan9 は Windows98 のファイルシステムを認識してくれるが、Plan9 を利用してファイルを1つひとつコピーするのは賢明ではないようだ。
dos パーティションを丸ごとコピーするのが最も確実である。但しこの方法が使用できるためにはコピー元とコピー先では同一容量のパーティションが必要になる。
Plan9 の disk/fdisk はパーティションをシリンダ単位で作成するので(多分多くのOSはそのように行うであろう)、Plan9 で note 側に新たに DOS パーティションを作成する時には同一容量にする必要がある。この事はシリンダの容量が2つの HD で同じであれば実現できるが、異なる場合にはパーティションをもっと柔軟に切れるツールが必要になろう。(幸いにして、筆者の場合にはシリンダ容量は両者で同じであった。)
#/bin/rc mount /srv/dos /n/d: /dev/sdC1 bind -a '#S' /dev exportfs -r //dev/sdC1/data と /dev/sdC1/dos をユーザ none が読み取れるようにする
chmod 644 /dev/sdC1/data chmod 644 /dev/sdC1/dos
9fs pc c: cp /n/pc/dev/sdC1/dos /dev/sdC0/dos数時間かかる
boot manager MBM R0.37b by Takeshi Akamatsu http://elm-chan.org/このブートマネジャーは強力で筆者は気に入っている。
Intel 82371 AB/EB PCI to USB Universal host Controller irq=10 I/O=FF60-FF7F Ref: Windows98 注意: FF60-FF7F はI/Oで使用するメモリのアドレスのはず CF-C33 のルート HUB は1個
参考: 正常に USB マウスが使用できる pc
term% cat /dev/pci/*ctl 06.00.00 1106/0691 0 06.04.00 1106/8598 0 02.00.00 8086/1229 11 0:f9000000 4096 1:0000a401 64 2:f8800000 1048576 01.00.00 10cd/1300 10 0:0000a001 256 1:f8000000 256 06.01.00 1106/0686 0 01.01.8a 1106/0571 0 4:0000b801 16 0c.03.00 1106/3038 11 4:0000b401 32 0c.03.00 1106/3038 11 4:0000b001 32 06.00.00 1106/3057 0 04.01.00 13f6/0111 11 0:0000a801 256 03.00.00 1002/4742 5 0:fa000000 16777216 1:0000d801 256 2:f9800000 4096このうち、
0c.03.00 1106/3038 11 4:0000b401 32 0c.03.00 1106/3038 11 4:0000b001 32が USB interface controller の情報を表している。
0c.03.00 # USB interface controller 1106/3038 # vender ID 及び 製品の型番 11 # irq 4 # base address register ID 0000b401 # その値 32 # I/O で使用されるメモリのサイズ(10進数) 注: 8086 のメモリ管理は 16B 単位(メモリセグメント) なので 0000b401セグメントを基にした 32B であれば 0000b401セグメントと0000b400セグメントを意味している。 (スタックと同様に小さなアドレスの方向にメモリを確保するらしい。) 即ち、0000b4000 から 0000b401f の範囲である。この Win98 で調べると
Properties of VIA Tech 3038 PCI to USB Universal Host Controller Resource 0: irq: 11 I/O range: B000 - B01F 1: irq: 11 I/O range: B400 - B41Fとなっている。
note の HD を pc で作成したほうが良かった。 pc で plan9 が動いていれば、この作業は非常に楽である。また速い。 (その場合には2.5/3.5 の変換ベイが2個必要) もっともネットワークを利用したインストールを心得ていれば安心できる。 (なにしろノートパソコンの分解が不要だから。)
Ref: mouse(3)'#U' usb device
Ref: usb(3)'#$' pnp and pci device
Ref: pnp(3)'#y' pcmcia device
Ref: i82365(3) Ref: pcmcia(8)
aux/listen -d /rc/bin/services tcp aux/listen -d /rc/bin/services ilを実行。
import pc / /n/pcを実行できるか?
答: YES
pc で
auth/factotum -g 'dom=aichi-u.ac.jp proto=p9sk1 user=arisawa !password=XXX'note で
auth/factotum -g 'dom=aichi-u.ac.jp proto=p9sk1 user=arisawa !password=XXX'即ち共通のキーを登録して置けばよい。
protocol
server: exportfs (il17007, tcp=17007)
cpu -h pcを実行できるか?
cpu -oh pc authproto=p9sk2 used protocol server: cpu (il17013, tcp17013)
cpu -h pc authproto=p9any used proto server: ncpu (il17010, tcp17010)
9fs pcを実行できるか?
答: NO
protocol server: 9fs (il17008, tcp564)
term% 9fs pc post... srv net!pc!9fs: mount failed: authentication failed term%kfscmd listen