目次

FreeBSD 11-STABLEを11.1-RELEASEに変更する

FreeBSD 11.1-RELEASEのリリースも近くなってきたので、VirtualBox絡みで止む無くSTABLEにしていたシステムをRELEASEブランチに戻す。2017-07-18現在、releng/11.1ブランチは11.1-RELEASEではなく11.1-RC2であるが、STABLE→RELEASEへの変更でfreebsd-updateが再度使えるようになるかの確認もしておきたいので、今のうちに11.1-RELEASEブランチにシステムを戻しておくって魂胆なのだ。

大まかな手順としては、/usr/srcをRELEASEブランチにスイッチし、いつも通りシステムを再構築するだけ。

RELEASEブランチにスイッチする

念のため、現在の/usr/srcの状態を確認。

$ cd /usr/src
$ svn info
パス: .
Working Copy Root Path: /usr/src
URL: https://svn.freebsd.org/base/stable/11
Relative URL: ^/stable/11
リポジトリのルート: https://svn.freebsd.org/base
リポジトリ UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
リビジョン: 320258
ノード種別: ディレクトリ
準備中の処理: 特になし
最終変更者: gjb
最終変更リビジョン: 320251
最終変更日時: 2017-06-23 09:00:00 +0900 (2017/06/23 (金))

URLからstable/11ブランチであることが確認できる。

こいつをreleng/11.1ブランチにスイッチする。

# svn switch https://svn.freebsd.org/base/releng/11.1/
U    etc/ntp/leap-seconds
U    lib/libsysdecode/mktables
(中略)
U    share/mk/bsd.own.mk
U    share/mk/src.libnames.mk
 U   .
リビジョン 320579 に更新しました。

システムの再構築

ソースのスイッチができたら、後はいつもの手順でシステムを再構築する。

以前のオブジェクトファイルを削除

# chflags -R noschg /usr/obj/*
# rm -rf /usr/obj

ユーザーランドのビルド

# make buildworld -j 16

カーネルのビルド

# make buildkernel -j 16

ビルドしたカーネルのインストール

make installkernel

ユーザーランドのインストール&設定のマージ

シングルユーザーモードに落ちる。

# shutdown now

ストレージを書き込み可能な状態で再マウント

# zfs set readonly=off zroot
# zfs mount -a

必要ならkbdmapする。

必要ならadjkerntz -iする。

設定ファイルをマージ

# mergemaster -UPiF

ユーザーランドをインストール

# cd /usr/src
# make installworld

残りの設定ファイルをマージ

# mergemaster -p

不要になった古いファイルを削除

# make delete-old

再起動して環境を確認

再起動する。

# reboot

上手く起動したら、一応システムのバージョンを確認する。

$ freebsd-version -uk
11.1-RC2
11.1-RC2

バージョン表記はRC2になっているが、今回の作業は11.1-RELEASEがリリースされる前に行ったため、これで正常。