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

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?

  1. Take out Compact Flash from CC/NET
  2. Mount the compact flash on some linux box.
  3. Format with ext2, if necessary.
  4. assign / label with e2label
  5. extract CC/NET system from tar ball in Restore CD or on the CC/NET Wiki
  6. 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";
    };
    
  7. mount the compact flash on CC/NET
  8. booting CC/NET, playing to GOD
  9. (force to ) upgrade to ETCH!!
    # apt-get update
    # apt-get -f dist-upgrade
    
  10. Modify /etc/fstab from hdc1 to sda1.
  11. Delete /etc/apt/apt.conf
  12. reboot CC/NET to ETCH
  13. install packaged needed .....
  14. test pcc.{h,c}
  15. test sample programs
  16. 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に対してioctlPCCIOC_ENABLE_INTERRUPTを書き込むのであれば、 これが汎用ライブラリの外側にくるというのは間違っている。 最新版でどうなっているのか未確認であるが、個人的には
int CENLAM( int crate, int mask ){ return( cam_enable_lam( cc_fd, mask ) ); }
でいいのでは?と思うのだが。。。。。。