CC/NET情報

CCnetとは東陽テクニカから出ているCAMACクレートコントローラーです。
コンパクトフラッシュを載せ替えてシステムリカバリしました。
マニュアルにあるようにリカバリCD（KNOPPIX）で起動して、
コンパクトフラッシュをフォーマット、マウント、ファイルの展開、grubによる
ブートローダーのインストールを行います。バージョンにもよるとおもいますが、
マニュアルにいくつか間違いがあります

grub への path :
/mnt/sdc1/usr/local/sbin/grub ではなくて
/mnt/sdc1/sbin/grub
rootとtoyoのパスワード！！

grubへのpathなんてものは正しいものを見つければいいだけなので、
大した影響はありません。しかしパスワード！！マニュアルにある
パスワードをいれてもログイン出来なかったのがコンパクトフラッシュを
載せ替えて、システムリカバリをしようとおもいたった理由でもあったのに。
まさか初期パスワードがそもそも違うとは。
パスワードが違うというよりは、マニュアルの版が違うってのが正しいですね。
版の違うマニュアルが二つ添付されていて、新しい方を見ればいいのだけど、
古い方を見ているとパスワードも違えば、いろいろ細かいところも当然異なる。
なので新しい版のマニュアルを見ましょう。

もういちどLinuxホストにもどって
（リカバリ用のKNOPPIXでも、その他なんでもいいですが）、
コンパクトフラッシュをマウントして chroot して、
むりやりrootとtoyoのパスワードを更新。
とりあえずマニュアルにあるパスワードに変更。
CCnetに戻して起動後、ログインできる事を確認。
あとでパスワード変更しましょうか。。。。

Debianのアップデートをしたいところだが、
本家にはserge、etchのレポジトリはない。理研のサーバーを利用して、
アップデートしましょう。
（理研からもなくなってしまう時がいつかくるのではないだろうか。。。。）
（debian-archive側に移動していた。。。。）

アップデートはやりすぎないように。多分etchのkernel-2.4まではOK。
しかし2.6系列にしてしまうと多分やりすぎ。注意が必要。
2.6用のデバイスドライバはあるのだろうか？

BIOSの設定で、使わないIDEはdisableにしておくほうが起動時間を若干短縮できる。
短縮だけではなく、hdaとhdbのチェックにいったきり帰ってこなくなるケースも回避可能。

### How to restore the CC/NET system?

Take out Compact Flash from CC/NET
Mount the compact flash on some linux box.
Format with ext2, if necessary.
assign / label with e2label
extract CC/NET system from tar ball in Restore CD or on the CC/NET Wiki
change password,
/etc/apt/sources.list,
/etc/network/interfaces,
/etc/resolve.conf,
/etc/init.d/mountall.sh,
/etc/init.d/umountfs,
accordingly
Repository: use RIKEN

- deb ftp://ftp.riken.go.jp/Linux/debian/debian-archive/ etch main contrib non-free
deb-src ftp://ftp.riken.go.jp/Linux/debian/debian-archive/ etch main contrib non-free
- Do not forget to create /etc/apt/apt.conf with
- APT{
Force-LoopBreak "true";
};
- mount the compact flash on CC/NET
booting CC/NET, playing to GOD
(force to ) upgrade to ETCH!!

# apt-get update
# apt-get -f dist-upgrade

Modify /etc/fstab from hdc1 to sda1.
Delete /etc/apt/apt.conf
reboot CC/NET to ETCH
install packaged needed .....
test pcc.{h,c}
test sample programs
install ROOT system

他の東陽テクニカ製クレートコントローラーインターフェースとの汎用性を維持した
CAMAC関数ライブラリが提供されている。camlib.{h,c}が、少なくとも
compact-debian-Feb182005.tar.gzについてくるものについては一ヶ所
不具合がある。LAMの有効化用関数CENLAMは

/* CENLAM or cenlam */
int CENLAM( int crate, int mask){
cc_status = cam_single_cc(cc_fd, 25, 1, 16, &mask, &cc_q, &cc_x);
if( cc_status)
return -1;
cc_status = cam_single_cc(cc_fd, 25, 1, 26, &cc_data, &cc_q, &cc_x);
if( cc_status)
return -1;
return 0;
}

のように実装されている。その一方でCC/NET用の対応する関数
cam_enable_lamでは

int cam_enable_lam( int fd, int enable_pattern ) {
int status, data, q, x;
// write interrupt enable bits
data = enable_pattern;
if( (status = cam_single_cc(fd, 25, 1, 16, &data, &q, &x)) < 0 )
return -1;
/// enable interrupt of CAMAC
if( (status = cam_single_cc(fd, 25, 1, 26, &data, &q, &x)) < 0 )
return -1;
/// enable interrupt at PCI
if( (status = ioctl(fd, PCCIOC_ENABLE_INTERRUPT)) < 0 )
return -1;
return 0;
}

となっている。クレートコントローラー（インターフェース）毎の差異を
汎用関数で吸収するのであれば、最後のPCI経由のインタラプトも有効化
する必要があるのではないだろうか？/dev/pccに対してioctlで
PCCIOC_ENABLE_INTERRUPTを書き込むのであれば、
これが汎用ライブラリの外側にくるというのは間違っている。
最新版でどうなっているのか未確認であるが、個人的には

int CENLAM( int crate, int mask ){ return( cam_enable_lam( cc_fd, mask ) ); }

でいいのでは？と思うのだが。。。。。。

CC/net wiki
Korodaq