目次

FreeBSD 9.2-RELEASEへのfreebsd-updateに失敗してmake buildworldする羽目になった

freebsd-updateが悪いんじゃありません。更新中に間違ってsshを閉じた自分が悪いんです…

経緯

  1. 家鯖(9.0-RELEASE)で88SE9230なSATAカードとZFSのLZ4圧縮を使いたい!!
  2. 9.2-RELEASEに更新しようず。
  3. 2度目のfreebsd-update installの途中で間違ってsshの接続を切る。
  4. とりあえず動いてはいるけど、何か気持ち悪い。freebsd-update installしても「更新は何もない。まずはfetchせよ」とでる。
  5. freebsd-update rollbackってコマンドがあるぞ→詳しく調べもせずに実行。
  6. FreeBSDがブートしなくなる。
  7. シングルユーザーモードで何とか起動。
  8. freebsd-update -r 9.0-RELEASE upgradeでダウングレードを試してみる。
  9. cannot open files/.gz: No such file or directory.とか出る。どうみても怪しい。
  10. ソースから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