年末にうまくいかなかった「ソフトウェアRAID1なHDD2台両ブート」に再チャレンジ。 というか、既にネットワーク構成変更までに期限がないので頑張らないと。
bf24 ide0=0x1440,0x1436 ide1=0x1438,0x1432
で起動。cfdisk ではがつんと1パーティションにしてしまう(何度もパーティションを切りなおすのが嫌になったのと、やまだ君のところは1パーティションでやっているという話から)。
ドライバのところでは NIC が ELECOM Laneed LD-10/100 AL PCI Fast Ethernet Adapter なので via-rhine を追加。
後は普通に進めて再起動。
apt-get install grub raidtools2 emacs21 wget lv
でGRUB。
grub-install --root-directory=/boot /dev/hda
stage1 ファイルが grub から見えないでエラーになる場合があった。 その場合は、再起動したら成功するようになった。
update-grub
/boot/grub/menu.lst の kopt を編集
# kopt=root=/dev/hda1 ro ide0=0x1440,0x1436 ide1=0x1438,0x1432
コメントマーク(#)を残さなければならない事に最初気がつかず。
update-grub
再起動。OK。
年末に作ったRAIDを有効にしてある Linux kernel をインストール。 /etc/kernel-img.conf に
postinst_hook = /sbin/update-grub postrm_hook = /sbin/update-grub do_bootloader = no
を書いておいてから、
dpkg --install kernel-image-2.4.18_gate.1.0_i386.deb
再起動。OK。
cfdisk /dev/hdc で1パーティションに切り、タイプを fd に。 その後 /etc/raidtab を編集。
raiddev /dev/md1 raid-level 1 nr-raid-disks 2 chunk-size 64 nr-spare-disks 0 persistent-superblock 1 device /dev/hdc1 raid-disk 0 device /dev/hda1 failed-disk 1
書いたら hdc を RAID1にし、ext3 ファイルシステムを作成。
mkraid /dev/md1 mkfs.ext3 /dev/md1
シングルユーザモードで再起動し、/dev/md1 (hdc) へコピー。
cd / mount /dev/md1 /mnt cp -a /bin /mnt/ cp -a /boot /mnt/ cp -a /cdrom /mnt/ cp -a /dev /mnt/ cp -a /etc /mnt/ cp -a /floppy /mnt/ cp -a /home /mnt/ cp -a /initrd /mnt/ cp -a /lib /mnt/ cp -a /opt /mnt/ cp -a /root /mnt/ cp -a /sbin /mnt/ cp -a /tmp /mnt/ cp -a /usr /mnt/ cp -a /var /mnt/ cp -a /vmlinuz /mnt/ cp -a /vmlinuz.old /mnt/ mkdir /mnt/mnt mkdir /mnt/proc
/mnt/etc/fstab を編集し /dev/hda1 のところを /dev/md1 に。RAID1ディスクをルートパーティションにする。 書き換えたら
/umount /mnt
し、再起動。
kernel /boot/vmlinuz-2.4.18 root=/dev/md1 ro ide0...
で起動できる事を確認。
/boot/grub/menu.lst を編集。kopt を
# kopt=root=/dev/md1 ro ide0=0x1440,0x1436 ide1=0x1438,0x1432
に書き換え、update-grub。
grub-install で hda から起動できるように先にしてあるが、次に hdc 側からも起動できるように。 この段階では grub-install だとエラーになるので、grub で直接。
grub grub> device (hd0) /dev/hdc grub> root (hd0,0) grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst grub> quit
という構成になっているので hda 側のケーブルを抜き、hdc だけ接続した状態で起動してみる。OK。
両方のHDDを接続してroot=dev/md1 で再起動。 cfdisk /dev/hda し、1パーティション・type fd に。
/etc/raidtab を編集。 /dev/hda1 を failed-disk から raid-disk にする。 で、
raidhotadd /dev/md1 /dev/hda1 md: trying to hot-add to md1 ... md1: disk size 80413248 blocks < array size 80418112 /dev/md1: can not hot-add disk: too small disk!
あれ? cfdisk で確認。
/dev/hdc 16 Heads, 63 Sectors, 159560 Cylinders 82348277760 bytes /hdc1 82348.28MB /dev/hda 255 Heads, 63 Sectors, 10011 Cylinders 82348277760 bytes /hda1 82343.28MB
おーまいがー。一緒に買ったディスクなのだが、パーティションを切ると5MB違う。
さて。 hda を /dev/md2 にして /dev/md1 -> /dev/md2 してから再度、hdc を /md2 にして... というのも思い浮かんだのだが、やっぱりあきらめて最初からやりなおす。 hda と hdc のケーブルを入れ換えて hdc 側に(ほんのちょっと)小さいディスクを配置。
で最初から、やりなおして次のセクションへ。
両方のHDDを接続してroot=dev/md1 で再起動。 cfdisk /dev/hda し、1パーティション・type fd に。
/etc/raidtab を編集。 /dev/hda1 を failed-disk から raid-disk にする。 で、
raidhotadd /dev/md1 /dev/hda1
リカバリが始まる。
lv /proc/mdstat
ちゃんとリカバリしている模様。年末にやった時は一瞬で終わってしまったのだが、あれ本当にリカバリしていたのかなぁ。今回はじめて recovery している様子が見れた。一安心。 560min ほどかかる予定。
RAID1上だと遅いんだろうな。メモリ512MBなので、一応作っておく。
dd if=/dev/zero of=/var/swap bs=1024 count=524288 mkswap /var/swap swapon /var/swap lv /proc/swaps emacs /etc/fstab /var/swap none swap exec,dev,suid,rw,sw 0 0
RAIDのリカバリが時間がかかるので、hda 側でブート設定は明日にもちこし。 他の設定をちゃっちゃか始める。
hda 側でのブート設定。
grub grub> device (hd0) /dev/hda grub> root (hd0,0) grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst grub> quit
で両方のHDDでブートできることと、データが複製されている事の確認をする事。
昨日、CLIEとHotSyncできなかったので、もともとUSBまわりが不安定だったし kernel を 2.4.25 に上げておくことにする。
do_symlinks = Yes postinst_hook = /sbin/update-grub postrm_hook = /sbin/update-grub do_bootloader = no
shfs も一緒に入れておく。今回は pcmcia-cs を使わずに kernel のものを入れておく事にする。
$su #(apt-get build-dep kernel-source-2.4.25) #apt-get install kernel-source-2.4.25 #apt-get install shfs-source shfs-utils #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/kernel-source-2.4.25.tar.bz2 $tar jxvf /usr/src/shfs.tar.bz2 $cd kernel-source-2.4.25 $make menuconfig $ make-kpkg clean $MODULE_LOC=/usr/local/src/linux/modules \ fakeroot make-kpkg --revision=sebastian.1.0 \ kernel_image modules_image $cd .. $su #dpkg -i kernel-image-2.4.25_sebastian.1.0_i386.deb #dpkg -i shfs-module-2.4.25_0.32-2+sebastian.1.0_i386.deb
reboot
最新のにしておく。
mkdir -p /usr/local/src/sf cd /usr/local/src/sf cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi cd madwifi make su make install modprobe -a ath_pci lsmod dmsg
本当は cvs checkout はリブート前、ネットワークが使えている間にしておく必要があった。 前の madwifi ソースを make install して一旦接続できるようにしてから、cvs の最新のを取り直してあらためて make install
ThinkPad X31 で tpctl を使ってみるために thinkpad-modules を入れる。 ついでに Linux kernel も 2.4.25 から 2.4.26 に上げておく。
2.4.26 から IBM PCI Hotplug driver (CONFIG_HOTPLUG_PCI_IBM) が追加されたようだ。 ThinkPad には関係あるのか? 以前から hotplug が不安定だった(今日はいつになく不調でフリーズまでしたし。Caps Lock ランプが点滅してた。)ので、有効にしておいてみた。
do_symlinks = Yes postinst_hook = /sbin/update-grub postrm_hook = /sbin/update-grub do_bootloader = no
一緒に入れるモジュール
pcmcia-cs は使わず、kernel のものを使用。
$su #apt-get build-dep kernel-source-2.4.26 shfs-source thinkpad-source #apt-get install kernel-source-2.4.26 #apt-get install shfs-source shfs-utils #apt-get install thinkpad-source tpctl #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/kernel-source-2.4.26.tar.bz2 $tar jxvf /usr/src/shfs.tar.bz2 $tar zxvf /usr/src/thinkpad.tar.gz $cd kernel-source-2.4.26 $make menuconfig $make-kpkg clean $MODULE_LOC=/usr/local/src/linux/modules \ fakeroot make-kpkg --revision=sebastian.1.0 \ kernel_image modules_image $cd .. $su #dpkg -i kernel-image-2.4.26_sebastian.1.0_i386.deb #dpkg -i shfs-module-2.4.26_0.33-3+sebastian.1.0_i386.deb #dpkg -i thinkpad-modules-2.4.26_5.1-1+sebastian.1.0_i386.deb
リブート後、MADWIFIドライバを作り直すのでリブートの前に cvs から checkout だけ済ませておく。
リブート。
mkdir -p /usr/local/src/sf cd /usr/local/src/sf cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi cd madwifi make su make install modprobe -a ath_pci lsmod dmsg
ifup ath0 したらエラー
socket: Protocol not available - make sure CONFIG_PACKET and CONFIG_FILTER are defined in your kernel configuration!
2.4.25 の設定を見ながら 2.4.26 を設定した際、CONFIG_FILTER 有効にし忘れていた。 kernel ビルドからやりなおし。
[ Debian GNU/Linux ]
4日ぶりにPC生活に復帰。 メールは naney.org の方に800通ちょっと、会社の方に100通弱。 fetchmail。
取れぬ。例によって溜めすぎかなぁ。
naney.org の方は一時的に、SSH port forwarding 経由にするのをやめたら取得できた。
会社の方は駄目。サーバ側の問題か? (1通ずつとか)きざんで fetch すると、取れるようだ。 fetchmail の -B オプションを指定してチマチマとる。 これである程度取得できたが、サイズの大きいメールは1通単位でも取れない。
しょうがない。サーバの Maildir を tarball にまとめてとってくるか。
……あれ。 サーバでまとめた tarball を scp で持ってこれない。転送途中で止まってしまう。 うーん。困った。
試してみたところどうやら大きなファイル転送はメールに限らず駄目なようだ。 あれ? 前にもこんな症状あったような。 nDiki を見直したら MADWIFI 試行錯誤していたときにあったな。
とりあえずリブートしてみるか。
再起動してGRUBのメニューをみて気がついた。 うまく動くように設定していないままの kernel 2.6 でブートしていたようだ。 帰省前にかなり久しぶりにシャットダウンしたので、帰ってきて起動した時に 2.4 系を選んでブートしなければならなかったことを忘れていたよ。
これに気がつくまで、結局3時間ぐらい苦戦してしまった。とほほ。
(自分は今回パスした)tcb君の壮行会に出席したはずの松下君から、23:00 すぎに連絡。 オフィスのはいっているビル(千代田区)の管理会社から停電があったらしいとの連絡がはいったとのこと。雷の関係だろうか。 それで、オフィスに設置してあるサーバ(メール/DNS/Web)を心配して電話をくれたようだ。
自宅から接続してみる。生きているようだ。uptime をみる限り落ちていない。 よかったよかった。
そういえば容量の関係でUPSにつないでいなかったような。 さらに、GRUBのメニューで選択しなかった時にデフォルトでブートする Linux kernel がRAID用に自分でビルドしたものではなく、インストール時にいれた bf2.4 のまま。
週明け要作業。
午後になって「今日はメールがあまりこないな」と思っていたら、実はノート PCの /var が 100% を越えていた。 しかし急に何で?
Filesystem サイズ 使用 残り 使用% マウント位置 /dev/hda1 9.2G 7.5G 1.3G 86% / tmpfs 505M 16K 505M 1% /dev/shm /dev/hda2 19G 14G 3.9G 79% /home /dev/hda3 185M -64Z 163M 101% /var /dev/hda5 1.2G 347M 813M 30% /tmp
いや、そもそも /var は 3.7GB ぐらい取ってあったはず。……ヤバイ? /var を除くと空の /var/lib と、空の lost+found のみ。 おや? あれ?
一旦シャットダウン。/var が無いので各 daemon が悲鳴をあげつつ終了。 でシングルユーザで起動して fsck。 酷い有様のようだ。 ここまで /var が壊れるとどうしようもないなあ。/var/lib/dpkg 以下がごっそり無いのは Debian 的に痛い。
納品を明日に控えているんですけどね。TeX のドキュメントもまだまだ書かなければいけないんですけどね (/var/lib/texmf も無い)。 メールのチェックもままならない(/var/qmail も /var/spool も無い)。
再インストールかぁ。幸い / と /home が生きているから被害は最小限。 下手に無理して使い続けて他に悪影響が出てファイルを壊したりしないうちに、やってしまった方が良さそうだ。
まずは sarge で Debian GNU/Linux を入れ直す。 USB FDD も USB CD-ROM ドライブも自宅で手元にないという状態の ThinkPad X31 ということで、 HDD からのブートをチョイス。
最初に / パーティションにある /usr/local を /home/naney 以下に退避。 次にGRUBからインストーラが起動するようにする。
mkdir /boot/newinstall cd /boot/newinstall wget http://http.us.debian.org/debian/dists/sarge/main\ /installer-i386/current/images/netboot/debian-installer/i386/initrd.gz wget http://http.us.debian.org/debian/dists/sarge/main\ /installer-i386/current/images/netboot/debian-installer/i386/linux mv linux vmlinuz
/boot/grub/menu.lst に
title New Install kernel (hd0,0)/boot/newinstall/vmlinuz root=/dev/ram0 ramdisk_size=12000 initrd (hd0,0)/boot/newinstall/initrd.gz
を追加してリブート。GRUB のメニューから New Install を選んで起動させ、インストーラを立ち上げる。 パーティションの設定で
あとは普通にネットワークインストール。 思ったより簡単に復旧できそうだ。CD-ROM やフロッピーディスクを作るよりよっぽど簡単。
最小限のパッケージだけ入れたらすぐに sid にアップグレードし、後は作業しながら足りないものを順次インストール・設定。
/etc の下のバックアップは自宅にある外付けHDにあり、これを参照しないかゆいところまで手の届いた設定に戻していくのは大変。 とりあえず 会社では qmail の設定など必要な範囲のみに留めておく。
Linu kernel は以前作った deb 一式をとっておいたのでそれで置き換え。 有線LAN + DHCPな難境だったので、ネットワークまわりほぼ設定不要で助かった。
MADWIFI や cpufreqd あたりの設定は自宅に戻ってから復旧させた。
/var の lost+found をみると 11:35 ぐらいに /var に書き込めなくなったようだ。 気がついたのが 14:30 ぐらいで、再インストールしてある程度作業ができる状態 (メールまわり、X、Emacs まわり他)になったのが、19:00すぎ。
問題確認後、作業中のファイルを失わずに Subversion リポジトリにコミットでき、もう一台のデスクトップ Windows PC で作業を継続できたのは不幸中の幸い。
しかし /var の破損の原因は何なんだろう。HDDの問題に起因するとなると今後もこわすぎるな。
朝から ThinkPad X31 の HDD 新しく入れ替えて Debian GNU/Linux sid のインストールを開始。
今日は sarge のネットワークインストール CD イメージからブートしてインストール。 今回はブートドライブにできる「ThinkPad USB ポータブルCD-ROMドライブ」があり、またこのイメージで起動して e1000 が認識できるので楽勝である。
(第1回目は USB FDD + PC カード NIC でインストール、第2回目 は HDD 上のインストーラから GRUB からの起動によるインストールだった)
ヤバイ状態の旧 HDD を USB 外付け HDD ケースに詰めて
を新しい HDD にコピー。
次に環境の復旧。 以下備忘録。
以前作った Linux kernel 2.6.15 deb パッケージをインストールした後 module-assistant で madwifi をインストールするも、ビルドした GCC のバージョンが違ってロードできず。 kernel は GCC 4.0 の時にビルドしたもので、madwifi は現在のバージョンである GCC 4.1 によるビルドであることが問題。
まずは前にビルドした 2.6.15 のソースディレクトリでカーネルパッケージを GCC 4.1 で作りなおしてインストールし、あらためて module-assistant。
module-assistant prepare module-assistant auto-install madwifi
で /etc/network/interfaces を書き戻す。
ここずっと使っていた qmail をこの機会にやめることにした。 Postfix へ。
全体の設定はインストーラに従って設定。
個人設定は、
~/.qmail に
| preline /usr/bin/procmail
として procmail を使っていたので、~/.forward を作って同様に procmail に流すようにする。
"|IFS='' && exec /usr/bin/procmail -f- || exit 75 #naney"
~/.procmailrc は以前のまま。ClamAV と bsfilter でふるいにかけた後、Maildir へ。
以前入れた時は deb が古かったので /usr/local に自前でインストールした。 まずはこれを古い HDD から戻して動作確認後 deb のものに切り替え。
.mew.el の中も
(load "/usr/share/doc/bsfilter/examples/mua/mew4/mew.el")
に変更。
/etc/samba/smb.conf を書き戻す。smbpasswd でパスワード再設定。
とりあえずインストール時の設定で xorg.conf を作る。
Load "freetype"
をコメントアウトして、
Load "xtt"
に変更。
sid は現在 3.5.3 と 3.5.4 混在状態になっているため、依存関係の問題で簡単にはインストールできずてこずった。 kdebase-data と kdelibs-data の 3.5.3 を http://snapshot.debian.net/ からとってきて hold して 3.5.3 系 KDE として各種パッケージをインストール。
skype-beta-1.3.0.30-1_i386.deb をインストール。
一般ユーザ naney の crontab ファイルを再登録。
足りないと気がついた時点で順次インストール。
/etc/auto.master、/etc/auto.misc を書き戻して /etc/init.d/autofs restart。
deb パッケージを公式サイトからダウンロードし、/etc/mt-daapd.conf を書き戻して /etc/init.d/mt-daapd restart
とりあえず Windows 7 でも使おうかと思ったらいきなりブートしない。 昨日 Debian GNU/Linux のインストールを中途半端にやめてしまったせいかな。
今日は時間があるので再度 sid のネットワークインストールを実行。 debian-testing-i386-businesscard.iso の CD-R でブート。 [Advanced options]-[Expert install] を選択してインストーラを進める。 途中で不安定版を選ぶことで最初から sid にできる。
インストール後 Debian GNU/Linux が起動するようになったものの、Windows 7 は GRUB のメニューにあらわれず。 grub-update を実行したら「Windows 7 (loader) (on /dev/sda2)」が追加された。 一回実行してみて Windows 7 が起動することを確認。
デュアルブートにしていなかったのでつい時計を UTC に設定してしまったが Windows 7 でタイムゾーンぶんきっちりずれていた。
/etc/default/rcS の UTC=yes を UTC=no で修正し /usr/sbin/ntpdate-debian で時計をローカルタイムで動かすように変更した。
とりあえずデュアルブートできる状態まで無事完了。
あとは /home を書き戻して必要なパッケージや設定を順次戻していけばいいかな。 3連休中に PC 移行を済ませられそうだ。
家に帰ってサスペンドから復帰した ThinkPad X200 を無線 LAN 接続に切り替えたがうまくつながらない。ルータを再起動しても駄目なので PC の方を再起動。
そしてら Debian GNU/Linux sid が起動しなくなってしまった。 udevd が設定ファイルが古い形式だよといった警告を出した後、/dev の作成の途中で止まっているっぽい。あちゃー。
とりあえず Windows 7 を起動して情報収集。 まだ設定が済んでおらず Firefox 入っていないし英語キーボード用の設定にしていないのでキー配列が違うし、入力切り替えボタンはないしで苦労しながら Web でチェック。
Debian の BTS によるとやはり udev 148-1 がハズレらしい。 ダウングレードするか。
GRUB で e して linux オプション行の ro を rw にし init=/bin/bash を追加して起動。 dpkg -s udev で 148-1 であることを確認。 幸い /var/cache/apt/archives/udev_147-5_i386.deb が残っていたので dpkg -i でダウングレード。 で再起動したら / を fsck しろといわれたので fsck して再度起動。これでようやく起動するようになった。
なお情報によるとタイムアウト待ちまで待ては先に進んだらしい。
またひとつ sid の醍醐味を味わった。
しかし過去の Debian パッケージが /var/cache に残っていなかったらもっと手間だったな。 インストールの時に作ったインストール CD 捨てようと思っていたが、やはりとっておいたほうがいいな。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。
※内容は個人的見解であり所属組織とは関係ありません。