VMEを用いたデータ取得系の準備について記載。VMIVME用のファイルを某所の某方に頂きました。VMEコントローラとして使用するのはV7768。Transcendのコンパクトフラッシュ(4GB)をマウントして使用。まずはデスクトップ側でCFを認識できているか確認。
$ dmesg
SCSI device sdc: 7962192 512-byte hdwr sectors (4077 MB)
sdc: test WP failed, assume Write Enabled
sdc: assuming drive cache: write through
sdc: sdc1
Attached scsi removable disk sdc at scsi6, channel 0, id 0, lun 0
USB Mass Storage device found at 9
sdcにあるようです。PC内で解凍。
$ su
$ tar zxf vmivme2018.tar.gz
root権限がないと一部展開できないファイルがあったのでスーパーユーザになった 。コンパクトフラッシュにパーティションを作成。
$ fdisk /dev/sdc1
fdisk内のコマンド(n: 新規パーティション, a: ブートフラグ, t: システムID変更)を駆使して下記のパーティションを作成。大きすぎないプライマリディスクと少しのスワップ領域を作成 (ここでは/dev/sdc1p1と/dev/sdc1p2が生成)。最後にwコマンド(write)を入れてパーティションを書き込むのを忘れずに。
Command (m for help): p
Disk /dev/sdc1: 2039 MB, 2039579136 bytes
64 heads, 63 sectors/track, 987 cylinders
Units = cylinders of 4032 * 512 = 2064384 bytes
Device Boot Start End Blocks Id System
/dev/sdc1p1 * 1 838 1689376+ 83 Linux
/dev/sdc1p2 839 968 262080 82 Linux swap
ファイルシステムをext3でフォーマットしマウント。さきほど解凍したvmivmeフォルダをrsyncで同期。device.map内にあるhdaをsdcと書き換え、OSを起動するために必要なブートローダのプログラムGRUBをインストール。デバイスマップを元に戻しアンマウント。作業しているディレクトリのままだとumountが機能せずbusyとなるので適当な場所で行う。
$ mkfs.ext3 /dev/sdc1
$ mount /dev/sdc1 /mnt
$ rsync -a vmivme2018/ /mnt/
$ emacs /mnt/boot/grub/device.map
(/dev/hdaを/dev/sdcにかえる)
$ grub-install --root-directory=/mnt /dev/sdc
$ emacs /mnt/boot/grub/device.map
(/dev/sdcを/dev/hdaにかえる)
$ e2label /dev/sdc1 /
(ラベル'/'をつけておく)
$ umount /mnt
以上の作業でコンパクトフラッシュの作成は終わり。VMEコントローラにコンパクトフラッシュを乗せVMEクレートに差し込み、電源を入れれば使えるようになる(*1。rootのパスワードは某方に教えてもらいましょう。
*1: 完成したコンパクトフラッシュを差して起動させたとき e2labelで指定した "/" 関連でエラーが出てその後も起動が成されないことがあった。仕方ないのでもう一度ブートローダ関係の手続きをやり直したら無事起動し、問題が起こらないようになった。「運が良ければ起動できるようになる」とのアドバイスを頂いたのでそういうものだと思ってひとまず作業終了。
VMEコントローラから各VMEへのアクセス。現在VMEクレートにはMesytecのMulti Hit TDCがささっており、アドレスは0xA100。MTDCのアクセスモードはA24かA32。データの長さを設定するには0x6032。これを3=64bitに変更し、その変更がなされていることを確認。
$ cmdvme -am 0x39 (A32でアクセスすることに設定)
$/usr/nbbq/bin/cmdvme -ww 0xa1006032 3
$/usr/nbbq/bin/cmdvme -wr 0xa1006032
0x0003 / 3