FreeBSD 10.0R => 10.2Rアップグレードに失敗してから回復するまでの話
長らく放置していたFreeBSD機をアップグレードすることにしました。
失敗編
いつものように……
freebsd-update -r 10.2-RELEASE upgrade
しばらく待つ……
終わったので再起動
reboot
再起動したらインストール
freebsd-update install
ここでまさかの展開
順調に進んできたかと思いきや、実際にファイルをインストールする段でSegmentation Fault!
なにかlibcあたりでも腐ったのか、あらゆるコマンドが動かなくなりました。
そしてシングルユーザモードも動かない
Ctrl-Alt-Delは効いたので再起動
ここでシングルユーザモードを選択しても、shが動かない
回復編
10.2-RELEASEのインストーラで起動、Live DVDとして動かします。
gpart
コマンドで、既存ルートファイルシステムの位置を確認。
ディレクトリを作ってマウント。
mkdir /var/tmproot
mount /dev/da0p2 /var/tmproot
/usr/freebsd-dist/base.txz
ファイルから、
/bin/*
/sbin/*
/lib/*
/libexec/*
/usr/lib/*
/usr/libexec/*
/usr/share/*
/usr/bin/*
/usr/sbin/*
を展開
cd /var/tmproot
tar jxvf /usr/freebsd-dist/base.txz '/bin/*' '/sbin/*' '/lib/*' '/libexec/*' '/usr/lib/*' '/usr/libexec/*' '/usr/share/*' '/usr/bin/*' '/usr/sbin/*'
マウントを外して再起動
cd /
umount /var/tmproot
reboot
これでとりあえず動くようになりました。
念のためもう一回freebsd-update
動かしました。
freebsd-update install
reboot
今度は大丈夫でした。
おしまい。
次回「portmaster編」をお楽しみに!