FreeBSD 9.2-RELEASEへのfreebsd-updateに失敗してmake buildworldする羽目になった
freebsd-updateが悪いんじゃありません。更新中に間違ってsshを閉じた自分が悪いんです…
経緯
- 家鯖(9.0-RELEASE)で88SE9230なSATAカードとZFSのLZ4圧縮を使いたい!!
- 9.2-RELEASEに更新しようず。
- 2度目のfreebsd-update installの途中で間違ってsshの接続を切る。
- とりあえず動いてはいるけど、何か気持ち悪い。freebsd-update installしても「更新は何もない。まずはfetchせよ」とでる。
- freebsd-update rollbackってコマンドがあるぞ→詳しく調べもせずに実行。
- FreeBSDがブートしなくなる。
- シングルユーザーモードで何とか起動。
- freebsd-update -r 9.0-RELEASE upgradeでダウングレードを試してみる。
- cannot open files/.gz: No such file or directory.とか出る。どうみても怪しい。
- ソースから9.2-RELEASEを作れば一番確実?と思い立ちカーネル再構築することに。(←いまここ)
手順
ソースツリーの更新
svnupを使う。
昔はCVSupやcsupだったが既に非推奨となっており、9.2-RELEASEのソースは最早正しく取得できない。
cd /usr/ports/net/svnup make install
設定ファイルを編集
- /usr/local/etc/svnup.conf
host=svn0.us-west.freebsd.org branch=base/releng/9.2
ソース取得
結構時間がかかるのでそのつもりで。
svnup release -v 2
ビルド
FreeBSDハンドブックを熟読の事。
cd /usr/src make -j6 buildworld make -j6 buildkernel
Xeon E3-1260L(2.40GHz)を論理3コア割り当て、2.5インチHDD(750GB/5400rpm)×2のZFSミラーリングの環境において、buildworldは約40分、buildkernelは約10分掛かった。
カーネルのインストール
make installkernel
ユーザーランドのインストール
シングルユーザーモードで再起動する。
ルートを読み書き可能状態でマウントしなおす。
zfs set readonly=off zroot zfs mount -a
BIOSの時計がローカルタイムの場合は時間を調整。
adjkerntz -i
設定ファイルの更新
念のためバックアップ
cp -Rp /etc /etc.old
マージ
mergemaster -p
インストール
cd /usr/src make installworld mergemaster -UPi
make delete-old reboot make delete-old-libs
http://toriyu.jp/hitorigoto/id2856.html http://w.vmeta.jp/tdiary/?date=20130808 http://www.freebsd.org/doc/ja/books/handbook/makeworld.html http://d.hatena.ne.jp/flageo/20081208/p1