d02: OS Install

HIMEのDAQではV7768(GE7768, VMIVME等々)というVMEボードにPCとvmeコントローラ(ICといういみで)が乗っていて
直接vmeボードに刺せるタイプのvmeコントローラを使っている。
このPCにはevent senderとして親のDAQにデータを送る役割を持たせる。
VMEボードに直接CF(コンパクトフラッシュ)が一枚のみ刺せるので、これに馬場さんからいただいたOS imageをコピーする。
RIBFでははPXEというネットワークブートを使っているみたいだがそういうのはやらない。

biosの設定

まずはbiosの設定を確認しておく。
基本的にそのままでよいが、CFには強い相性(詳細は下の方のエントリー参照)があるため、
インストール前にCFがちゃんと読めているか確認しておくとよい。
1. キーボード/マウスの端子に二股ケーブルをつなぎ、その上でキーボードとマウスを刺しておく。
2. 起動直後、delete連打(クイックbootの設定になっていてbios画面がほとんど見えない)
3. とりあえずクイックbootをdisableにする。
4. IDE configurationだかなんだかでCFの詳細を確認。ここでサイズが見えてない場合はアウト
5. 正常に動き出したらクイックbootをenableにしておくと起動が早い。

成功例

試行錯誤の記録は下の方に書いておいて、ここでは成功した手段のみ示す。

いろいろCFを買った結果、CF/4GB-S2(133倍速)というのが動いた(馬場さんでは動いたGH-CF4GDというのはこちらではだめだった)。
なので、普通にこれにOSイメージをインストールして終了。
ここでは普段使っているPCでOS imageをマウント・コピー・調整したあとCFをVMEに刺した。

1. 馬場さんにV7768用のOS imageをもらう。(これは別に自分で先に作っておくのもありかとおもう)
僕の手元にもあるのでまずは僕に言ってください。
ちなみにディストリビューションはScientific Linux SL release 5.1 (Boron)みたい。

2. os imageをmount
$ mkdir imgmnt
# mount -o loop vme7768.img imgmnt

3. 用意したCF(sdd)をフォーマット
# fdisk /dev/sdd (普通にlinux partitionでよい。boot flagを一応つけた)
# mkfs.ext3 /dev/sdd1

4. mount
# mkdir /mnt/sdd1
# mount /dev/sdd1 /mnt/sdd1

5. コピー。このとき権限とかもまるまるコピーする必要がある。
# rsync -av imgmnt/ /mnt/sdd1/ (/mnt/sdd1/etc /mnt/sdd1/var ... となるようにコピーする)

6. device.map を書き換える
emacs /mnt/sda1/boot/grub/device.map
(hd0)     /dev/sdd

7. grubをMBRにinstall
grub-install --root-directory=/mnt/sdd1 /dev/sdd

8. device.mapをVMEコントローラで認識されるであろう状態にする。
BIOSのデフォルト設定ではCFはsecondaryのmasterとして認識されるのでhdcになると、そんな適当な理解。
emacs /mnt/sda1/boot/grub/device.map
(hd0)     /dev/hdc

9. ラベルをつけかえる
e2label /dev/sdd1 /

10. 安全にunmount
umount /mnt/sdd1

11. CFとusbをVMEボードに刺して起動。
12. ESC連打でGRUBの画面に入る
13. 'e'を押してkernelの行の最後にsingleと書き込む。(single user modeで起動する)
14. rootとdaqのpasswd, host名, ipを変更して再起動。

ちなみにsdaとして見えるか、hdaとして見えるかというのは、hddを扱うドライバー?によるらしく、
最近のシステムだとIDE接続でもsdaとして見えるみたい。
馬場さんにもらったos imageだとIDE接続は'h'として見える。

d02: network設定

こっちはsystem-config-network(デフォルトでtuiが立ち上がる)のtui版で適当にやった。

d02: 再起動の高速化

d02は初めのうちはdriverの問題で再起動を頻繁にすることになる。
CFの読み込みが遅いので再起動の時間が結構長くてウザいので
chkconfigで不要なサービスの停止する。
「linux 不要サービス」でググるといっぱい説明してくれる。



以下奮闘記

問題1

一般的にはusb外付けのドライブからインストールメディアをつかって内蔵ドライブにシステムをインストールするものだが、まず普通のインストールメディアが読み込めない。
手元で試したのは、
fedora14,15,17, lubuntu, ubuntu netbook rimix, puppy linux, windows XP sp1.
以上で起動できたのがpuppy linux 5.1.1のみ。

問題2

CF(コンパクトフラッシュ)を一枚刺せるのだが、相性が強いのか、はたまたBIOSがクソなのか、
32GBと4GBのCFはBIOSが読めず、128MBという前時代なCFはBIOSが認識できた。
BIOSが認識できない(正確にはBIOSの設定画面でCFの容量が読めない)ということは、
OSをbootするときにBIOSが直接ドライブを読める必要があるのでbootドライブとして使えないということになる。
逆に言えば、OSが起動できてしまえばBIOSでサイズが認識できなくても普通に扱うことはできる。
要は、大容量のCFにシステムを一括してインストールしても起動できない。

試行錯誤のインストール

こちらは128MBのCFとusbメモリで頑張った記録。
CFはbootのみに使って本体をusbに入れると、VMEボードを外さずにシステムが変更できるし、
高速なusb(最近はSSD並のusbがある)を使えば現代的なlinuxを無駄に高速に動かすこともできる。
usbメモリの容量の上限はおそらくかなり高い(137GBかもしくは2Tとかそんな壁かと思われる)ので
スタンドアローンもできないことはないかも。
起動を早くできるので実験で緊急に再起動しなければいけないときに心が少し休まるかも。


以下の作業はVMEコントローラ上でやる必要はない。
だけどCF読める環境がない場合は外付けusbドライブ(usbの電力供給量が小さいので二股ケーブル必須)+puppy linuxを
VMEコントローラ上で起動して、その上で作業可能。
ただしemacsは使えないので注意(こういうときviを使えると助かる)。
sshやrsync, grub-install等は使える。

なお下記はVMEコントローラ上のpuppy linuxでやったときの例を示す。

1. 馬場さんにV7768用のOS imageをもらう。

2. os imageをmount
# mkdir imgmnt
# mount -o loop vme7768.img imgmnt


3. 用意したCF(sda)とusb(sdb)をフォーマット p
# fdisk /dev/sda (boot flagをつける、あとは普通にlinux partitionでよい。)
# fdisk /dev/sdb (普通にlinux partitionでよい。大きさもたぶん数十ギガとかなら問題ないと思う。)
# mkfs.ext3 /dev/sda1
# mkfs.ext3 /dev/sdb1

4. mount
# mkdir /mnt/sda1 /mnt/sdb1
# mount /dev/sda1 /mnt/sda1
# mount /dev/sdb1 /mnt/sdb1

5. コピー。このとき権限とかもまるまるコピーする必要がある。
rsync+sshでコピーするときはrootでログインできるようにしないといけない
(rsync -av -e ssh root@host:/home/hoge/imgmnt/boot /mnt/sda1/ とか sshdの設定変更も忘れずに)。
# rsync -av imgmnt/boot /mnt/sda1/ (/mnt/sda1/boot/... となるようにコピーする)
# rsync -av imgmnt/ /mnt/sdb1/ (/mnt/sdb1/etc /mnt/sdb1/var ... となるようにコピーする)
rm -r /mnt/sdb1/boot (bootはsda1のを使うのでこっちのはいらない)

6. device.map を書き換える(現在のdeviceの状況に合わせておくらしい)
emacs /mnt/sda1/boot/grub/device.map
 (hd0)     /dev/sda
 (hd1)     /dev/sdb

7. grubをMBRにinstall
grub-install --root-directory=/mnt/sda1 /dev/sda

8. device.mapをVMEコントローラで認識されるであろう状態にする。
このときはbiosの設定でSATAをenableにしてIDEしか読めなくしていたのでhdaになっているが場合によってはhdcやsdaになるかも。
emacs /mnt/sda1/boot/grub/device.map
 (hd0)     /dev/hda
 (hd1)     /dev/sda

9. ラベルをつけかえる
e2label /dev/sda1 /boot
e2label /dev/sdb1 /

10. grub.confを変更
root=LABEL=/
とかなっているのを
root=/dev/sda1

11. fstabを変更
LABEL=/
とかなっているのを
/dev/sda1

12. 安全にunmount
umount /mnt/sda1
umount /mnt/sdb1

13. CFとusbをVMEボードに刺して起動。
14. ESC連打でGRUBの画面に入る
15. 'e'を押してkernelの行の最後にsingleと書き込む。(single user modeで起動する)
16. rootとdaqのpasswd, host名, ipを変更して再起動。

ということでなんとかインストールできた。基本的に上の処理の肝をおさえれば他のOSでもインストールできると思われる。