もくじ

star小修正のためのリストア第1回(2010/10/20)

概要

南側実習室の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回まわるはめになりました。

clonezillaでリカバリUSB作成

一旦saveする

まずsaveします。USBはFATなのでsaveするデータは2GBで区切るようにする必要があるかもしれません。イメージからリカバリを作るときに変更できるのかもしれません。ここは未確認ですが、デフォルトで進めば2GBで区切ります。clonezillaはどうせフォルダの中にたくさんのファイルが保存された状態にsaveしますからこれでかまいません。

いつものように サーバーにnfsで接続し、2010-10-18-st40-rcjava という名前でsaveしました。

saveしたデータからリカバリーデータを作る

次にリカバリーの作成です。もう一度clonezillaをスタートします。

いつもの様にキーボードを選択、nfsでイメージの場所を選んで進みます。ここまでは「(4)全部のコンピュータにコピーする」で解説したものと同じです。以下(12)から操作が変わりますので記録しておきます。まずは、初心者モードでなくエキスパートモードを選択します。前回リカバリを作ったときには初心者モードで、不要な作業が加わったので今回はそれを排除しようとしています。

(12)実行モード選択
Beginner 初心者モード:デフォルトオプションを了解 Expert エキスパートモード:自分自身のオプションを選択
今回の状況に合わせて不要な作業を排除するため。
(13)保存・リストア選択
savedisk ローカルディスクをイメージに保存 saveparts ローカルパーティションをイメージに保存 restoredisk イメージをローカルディスクにリストア restoreparts イメージをローカルパーティションにリストア recovery-iso-zip リカバリ用のClonezilla_Liveディスクを作成 exit 終了. コマンドラインプロンプトに移行します.
あらかじめ保存されたイメージから、isoファイルやzipファイルを作成するものです。isoはDVD、zipはUSBを作ることを想定しています。
(14)リストアするイメージファイルを選択
2010-10-18-st40-rcjava ___2010-10-18_09:23_sda1 star33-2010-08-29mount 2010-08-29_14:10_sda1 star39-2010-08-19-3 2010-08-19_13:08_sda1_sda2 2010-08-17-04-img 2010-08-17_15:14_sda1
保存したイメージファイルの名前が一覧になります。だんだんたまってきています。名前の他に保存した日時とデバイス名が説明としてついています。
(15)リストアするデバイス(コピー先のディスクの指定)
sda1 ________________
リカバリディスクの作成なので作業中のコンピュータでないコンピュータ用のものを作成する可能性もあるので、選択でなく入力するのでしょう。最初のディスクの最初のパーティションは hda1 か sda1 などと簡単な説明が書いてあります。
(16)拡張パラメータの設定
-r,-c オプションを無効にします。
いつもこうすればいいのではありません。今回の事情からの選択です。
このオプションは出来上がったCD,USBイメージでリカバリするときに採用されるもの。画面では次の様に説明されています
図中の赤文字は加工したものです。デフォルトでついていた -r, -c の * を外したことを示しています。なぜ外したかというと、
-c をとると2度のリストア確認が1度になる。
HDDの内容がすべて書換えられるのですからリストアはとても危険なことです。でも40台リストアしようというとき、いちいち確認のためにEnterキーを押さなければならないのは能率を落とします。ただ、これでも2度の確認が1度になるだけで確認が不要になるわけではありません。
-r をとるとリストア後にファイルシステムのリサイズをしなくなる
同じ大きさのパーティションにリストアするのが確実であればリサイズは不要。3-5分は早く終わる。別の実習室ではHDDの大きさが2種類あり、この場合には有効に利用できそうです。
この後もいくつか選択があります。
(16)拡張パラメータの設定
   イメージのパーティションテーブルを使用         -k   クライアントのコピー先ハードディスクのパーティションテーブルを作成しない -k1  適切にパーティションテーブルを作成(MBR 形式は OK、GPT 形式は NG) -k2  コマンドラインに移行し、その後手動でパーティションを作成 -j0  パーティション作成で dd を使用(論理ドライブ存在時には使用不能) exit  終了
パーティションテーブルを書き換えるのかどうかを選択します。ここでは何も変えず、デフォルト(イメージのパーティションテーブルを使用)を選択する。
(17)クライアント複製終了時の動作
-p true   複製終了時に何もしない -p reboot  複製終了時にクライアントを再起動 -p poweroff 複製終了時にクライアントを停止
複製終了時にそのままにするかリブートするかシャットダウンするか選択。デフォルトは何もしない。連続作業ではリブートがいいでしょう。動くかどうかの確認とfscheckが入ることが多いため。
(18)リカバリ Clonezilla Live 使用時の言語を選択
en_US.UTF-8 en_US es_ES.UTF-8 es_ES fr_FR.UTF-8 fr_FR it_IT.UTF-8 it_IT ja_JP.UTF-8 ja_JP ru_RU.UTF-8 ru_RU zh_CN.UTF-8 zh_CN zh_TW.UTF-8 zh_TW
言語を選択します。リカバリ時は読まなくていいので英語でよいでしょう。
(19)リカバリ Clonezilla Live で使用する keymap
NONE ________________
キーボードの配列を選択します。リカバリなのでNONE(英語キーボード)でよいでしょう。
(20)作成したいリカバリ Clonezilla Live のファイルタイプを選択
iso _CD/DVD用のISOファイルを作成 zip USBメモリ用のZIPファイルを作成 both CD/DVD用のISOファイルとUSBメモリ用のZIPファイルを作成
USBなので zip を選択します。実際は今回両方作って早さを比較しています。

あとは「(4)全部のコンピュータにコピーする」で解説したものと同じです。

zipからリカバリUSBを作る

Clozezillaのサイトの説明に従うと、次の様になります。(もちろん/dev/sdb1は環境に合わせます)

  1. FAT32でフォーマットされていることを確認。 いなければ mkfs.vfat -F 32 /dev/sdb1 などでファイルシステムを作る
  2. マウントする
  3. unzip してコピーする unzip clonez....zip -d /media/usb/
    COPYING は /media/usb/COPYING になるように
    GUIで展開コピー可
  4. cd /media/usb/utils/linux
    この中に makeboot.sh があり、bash makeboot.sh /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"

vers=3 がないと rc.local でもnfsマウントできないという問題

原因不明

「(4)全部のコンピュータにコピーする」nfsマウントが失敗する問題で解説したのと同じ問題がDebian(Squeeze)でも起こることが判明。mount -t nfs と指定してもnfsv4から順に試行していくのが原因なのでやはりClonezillaだけの問題でなかった。

これが原因でrc.local中でマウントできず、使えない事態になっていた。ただし全部のホストがだめなのではない。BIOSTARのマザーボード TA785GE 128M を使う41台のうち16台は問題がない。

BIOSのバージョンも同じ。接続しているハブに偏りがある。つまり4つのハブのうち2つに接続されているものは問題が起きない傾向にある。しかし全部ではないことと、ハブのつなぎ替えでは変化がないので原因と言えない。

BIOSは一つ新しいのが出ているが、更新しても変化がない。

マザーボードは10枚が一箱に入って納品された。ロットの違いもあるかもしれない。

対策

接続のオプションにvers=3を加えるとよいことがわかっている。

変更後のrc.local

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'

USB-Knoppix で変更したrc.localを40台に

1つのファイルのためにもう一度保存とリストアはもったいない。

組み立ての後テストのためにDVD起動した Knoppix 6.1 をUSB起動にして自動実行させることにした。

以前は Knoppix Edu のCDをUSBにしたものを使っていたが、今回のマザーではどれも起動できない。Knoppix 6.1 がなら起動できる。nfsサーバーと接続するのは試していないが今回はそれは不要。起動してスクリプトの自動実行ができればよい。

USB-Knoppix 6.1 を作る

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 に改名。フォルダの改名は不要かもしれないが。

USB-Knoppix に仕掛けた knoppix.sh の内容

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

(補足)USB-Clonezilla-live-recovery のファイルリスト

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

(補足)ver=3問題のもう一つの原因候補

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

Linuxクライアント/サーバ運用
聖愛中学高等学校
安達 順一
http://www.seiai.ed.jp/
2010-05-02