南側実習室の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