南側実習室のDebian(Squeeze)の小修正のためのリストア第1回。入れ替えたばかりだがrc.localのセットのし忘れ、javaのデフォルトがsunからgcjに戻っていたなどで修正版を作って再度リストア(2010-10-18-st40-rcjava/)をしました。前回はリカバリーDVDを作成してリストアしましたが、、今回は前回うまく行かなかったリカバリーUSBを作りDVDより速くできることを確認しました。
リストア後、vers=3 のオプションがなければ rc.local が動かないことがわかりましたがリストアのやり直しをせず、USBブートのKnoppixを作ってknoppix.shの自動実行で修正しました。
多少の変更はrc.localでできるのですが、今回はそのrc.localの問題だったので40台を2回まわるはめになりました。
まずsaveします。USBはFATなのでsaveするデータは2GBで区切るようにする必要があるかもしれません。イメージからリカバリを作るときに変更できるのかもしれません。ここは未確認ですが、デフォルトで進めば2GBで区切ります。clonezillaはどうせフォルダの中にたくさんのファイルが保存された状態にsaveしますからこれでかまいません。
いつものように サーバーにnfsで接続し、2010-10-18-st40-rcjava という名前でsaveしました。
次にリカバリーの作成です。もう一度clonezillaをスタートします。
いつもの様にキーボードを選択、nfsでイメージの場所を選んで進みます。ここまでは「(4)全部のコンピュータにコピーする」で解説したものと同じです。以下(12)から操作が変わりますので記録しておきます。まずは、初心者モードでなくエキスパートモードを選択します。前回リカバリを作ったときには初心者モードで、不要な作業が加わったので今回はそれを排除しようとしています。

あとは「(4)全部のコンピュータにコピーする」で解説したものと同じです。
Clozezillaのサイトの説明に従うと、次の様になります。(もちろん/dev/sdb1は環境に合わせます)
最後のmakeboot.shでは、partdが必要と言われます。一般のdebian環境ではパーティション管理がpartdではないのでこれがありませんから、makeboot.shを正常に実行できません。リカバリの他にメモリチェックやパーティションの管理もメニューにいれようとしているようです。
debianてはパーティション管理は gpartd なのでいまさら partd を入れたくありません。そこでsyslinuxのインストールされたマシンで syslinux /dev/sdb1 としてから、isoをsysに書き換えることでもリカバリUSBにすることができます。
syslinux /dev/sdb1 #sdb1はもちろん一例
パーティション管理をこれでやらないならpartdがなくても問題はありません。(osがlinuxの場合)
OSがWindowsの場合もコマンドがありますから、makeboot.sh にこだわらずリカバリUSBにすることができます。
USBドライブのファイル群(このページ下部参照)をみると、たぶん リカバリDVDの内容をそのままコピーして、syslinux /dev/sdb1 とするのでも作成できるのではないだろうかと思います。
どちらも -r -c オプションを外した場合の速度です。
| media | 転送速度(概数) | time |
| DVD | 1.54GB/min | 5'10" |
| USB | 2.24GB/min | 3'34" |
「(4)全部のコンピュータにコピーする」nfsマウントが失敗する問題で解説したのと同じ問題がDebian(Squeeze)でも起こることが判明。mount -t nfs と指定してもnfsv4から順に試行していくのが原因なのでやはりClonezillaだけの問題でなかった。
これが原因でrc.local中でマウントできず、使えない事態になっていた。ただし全部のホストがだめなのではない。BIOSTARのマザーボード TA785GE 128M を使う41台のうち16台は問題がない。
BIOSのバージョンも同じ。接続しているハブに偏りがある。つまり4つのハブのうち2つに接続されているものは問題が起きない傾向にある。しかし全部ではないことと、ハブのつなぎ替えでは変化がないので原因と言えない。
BIOSは一つ新しいのが出ているが、更新しても変化がない。
マザーボードは10枚が一箱に入って納品された。ロットの違いもあるかもしれない。
接続のオプションにvers=3を加えるとよいことがわかっている。

vers=3 のオプションをいれただけ。
rc.localそのものについては、「(1)使用するソフトを揃えること」の「rc.localによる操作」に詳説がある。
rc.localの修正部分の修正前
mount -t nfs jonah:/zhome/star-rc /mnt/sys
修正後
mount -t nfs jonah:/zhome/star-rc /mnt/sys -o 'vers=3'
1つのファイルのためにもう一度保存とリストアはもったいない。
組み立ての後テストのためにDVD起動した Knoppix 6.1 をUSB起動にして自動実行させることにした。
以前は Knoppix Edu のCDをUSBにしたものを使っていたが、今回のマザーではどれも起動できない。Knoppix 6.1 がなら起動できる。nfsサーバーと接続するのは試していないが今回はそれは不要。起動してスクリプトの自動実行ができればよい。
Knoppix 6.1 は isoファイルを産総研からダウンロードしてDVDにしてある。このDVDのファイルを、4GBのUSBにコピーした。
KNOPPIX の場合は knoppix.sh に書いたものが起動時に自動実行される。このファイルを KNOPPIX ディレクトリ内に作成する。KNOPPIX という名前のファイルと同じディレクトリに置けばよいとのこと。
以下はコピー後のファイルツリー
autorun.bat
autorun.inf
autorun.pif
cdrom.ico
index.html
ldlinux.sys
version.txt
KNOPPIX/
KNOPPIX
LICENSE.txt
README_Security.txt
SOURCES.txt
background.jpg
index_de.html
index_en.html
index_fr.html
index_it.html
knoppix-cheatcodes.txt
knoppix-logo-medium.png
knoppix-logo-small.png
knoppix.sh
md5sums
modules
sha1sums
adachi/
d1021.txt
hosts
rc.local
boot/
syslinux
balder.img
boot.cat
boot.msg
boot.msg.orig
f2
f3
german.kbd
isolinux.bin
isolinux.cfg.orig
isolinux.cfg.tokyo
linux
logo.16
memdisk
memtest
minirt.gz
minirt.gz.org
syslinux.cfg
adachi/ というフォルダは、/mnt-system 以下がシステムの入ったUSBドライブであることを利用して書き出したもの。これで2つめのパーティションにしなくてもデータの交換が可能だ。
Clonzilla Live USB を作ったときと同じくsyslinuxのインストールされたマシンで
syslinux /dev/sdb1 #sdb1はもちろん一例
/boot/isolinux というフォルダを syslinux に改名。その中の isolinux.cfg を syslinux.cfg に改名。フォルダの改名は不要かもしれないが。
adachi/の中の rc.localファイルをコピーして終了する。
GUIに移行する前に実行されるので、CUIのまま init 0 でシャットダウンされる。
echo -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- echo This is Knoppix.sh usb-KNOPPIX here. pwd echo We will copy rc.local and hosts mount /media/sda1 cp /mnt-system/adachi/rc.local /media/sda1/etc/ chmod 755 /media/sda1/etc/rc.local echo -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- init 0
4GBのUSBの内容
adachi@debian64:/media/5CBB-0AE4$ ls *
COPYING
Clonezilla-Live-Version
ldlinux.sys
home/
partimag/
2010-10-18-st40-rcjava/
Info-dmi.txt
Info-lshw.txt
Info-lspci.txt
Info-packages.txt
parts
sda1.ext3-ptcl-img.gz.aa
sda-chs.sf
sda-hidden-data-after-mbr
sda-mbr
sda-pt.parted
sda-pt.sf
isolinux/
chain.c32
drblwp.png
isolinux.bin
isolinux.cfg
memdisk
menu.c32
ocswp.png
vesamenu.c32
live/
filesystem.packages
filesystem.size
filesystem.squashfs
freedos.img
gpxe.lkn
initrd1.img
memtest
vmlinuz1
syslinux/
chain.c32
drblwp.png
memdisk
menu.c32
ocswp.png
syslinux.cfg
vesamenu.c32
utils/
README.txt
linux/
VERSION.txt
makeboot.sh
syslinux
mbr/
mbr.bin
win32/
VERSION.txt
makeboot.bat
syslinux.exe
rpcinfo -p で調べると、nfs が ver4 でアクセスできるように見える。これが原因か??
adachi@amos:~$ rpcinfo -p jonah.st.seiai.ed.jp
プログラム バージョン プロトコル ポート
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 udp 32768 nlockmgr
100021 3 udp 32768 nlockmgr
100021 4 udp 32768 nlockmgr
100021 1 tcp 32778 nlockmgr
100021 3 tcp 32778 nlockmgr
100021 4 tcp 32778 nlockmgr
100005 1 udp 802 mountd
100005 1 tcp 805 mountd
100005 2 udp 802 mountd
100005 2 tcp 805 mountd
100005 3 udp 802 mountd
100005 3 tcp 805 mountd
100024 1 udp 915 status
100024 1 tcp 918 status
100011 1 udp 919 rquotad
100011 2 udp 919 rquotad
100011 1 tcp 922 rquotad
100011 2 tcp 922 rquotad
rpcinfo command
op: meaning / usage -p: portmapper / -p [host] -u: udp / -u host program [version] -t: tcp / -t host program [version] -b: broad cast / -b program version -d: delete? / -d program version