OS をアップグレードしようとしたらディスクの内容が飛んでしまったので頑張って復旧する.以下,その顛末.
installkernel までしたところで single user mode で起動して,その後 installworld する前にふと思うところがあって multi user で起動し直そうと shutdown -r now とか打ったところ,
syncing disks 8 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 giving up
おわー.ただし数字は適当(メモ: syncing disks は /sys/kern/kern_shutdown.c).
で,起動しない.
Disk error 0x1 (lba=0x7fc11004) Disk error 0x1 (lba=0x7fc11004) No /boot/loader >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/kernel boot: Disk error 0x1 (lba=0x7fc11004) No /kernel >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/kernel boot:
がるる.
fixit で起動してみる./dev には
116, 0x00010002 ad0 116, 0x00020002 ad0s1 116, 0x00030002 ad0s2 116, 0x00040002 ad0s3 116, 0x00050002 ad0s4
なファイルがあるので,
Fixit# mknod /dev/ad0s1a c 116 131072
とかしてデバイスファイルを作っておいて,ためしにマウント.
Fixit# mount /dev/ad0s1a /mnt mount: /dev/ad0s1a on /mnt: incorrect super block
だめ.fsck を(面倒くさいしどうせわからないので) -y つきでかける.これがよくなかった(?).
Fixit# fsck -y -b 32 /dev/ad0s1a
と打つと,だーーとすごい数の修正がなされた上で,
***** PLEASE RERUN FSCK *****
と出て来て終了したので,もう一度やるとなんかごにょごにょ出て来た上で
BAD SUPER BLOCK: NCYL LESS THAN NCG*CPG
アウトですか? アウトですね?
というわけですっかりあきらめて,全部消して再インストール.DMA がこけるから PIO にしなければいけない点は以前と同様なのだが,sysctl 入りの fixit 作ったりとかまでする必要はなくなっていて,ブート時の ok プロンプトで
set hw.ata.ata_dma="0"
と打ってやればよい(実はこれをすっかり忘れていて,しばらく悩んだ.これをやらないと disk に書き込みを開始する瞬間,すなわち sysinstall で commit してすぐにこける).インストール後,最初に起動するときもこれが必要で,そのとき,/boot/loader.conf に
hw.ata.ata_dma="0"
と書いておいてやれば,それ以降は必要ない.
/etc のバックアップはずっとさぼっていて,一番最後のものが ADSL 導入前のものだったので全く役に立たない.だめすぎ.ほぼ最初から設定し直し.とはいえ,そもそもごく普通な設定しかしていないのでそれほど困りはしなかった.
だいたい回復したのだけど,どういうわけか infoseek.co.jp とか nikkei.co.jp といった辺りにつながらないことに気づく.あれー path MTU discovery な問題ですか? 解決済なはずなんだが…と思っていろいろ見ていると,ppp.conf で
set mru 1454 set mtu 1454
と設定しているはずなのに,
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492 inet6 fe80::280:98ff:fea0:3fd6%tun0 prefixlen 64 scopeid 0x7 inet 61.202.239.227 --> 211.15.32.248 netmask 0xff000000 Opened by PID 1680
とかなっちゃってることに気づく.で,調べてみると, こういうことらしい.
set mru max 1454 set mtu max 1454
と max をつけて解決.こういうの UPDATING に書いといて欲しいんですけど.
最終更新時間: 2009-01-04 15:31