手順としては/usr/src
以下をSTABLEのソースに変更し、通常の方法でworldを再構築するだけ。
必要なことは全てFreeBSDハンドブックに書いてあるので、そちらを熟読した上で作業すること。
元からあるRLEASEのソースを退避。
# mv /usr/src /usr/src-RELEASE
ちなみに、うちの環境では/usr/srcがZFSの1ファイルシステムになっているので、上記方法は使えず。なのでsnapshotを撮って中身を消した。
# zfs snapshot zroot/ROOT/usr/src@11-RELEASE_20161111 # rm -rf /usr/src/
STABLEのソースをチェックアウトする。
実際に接続されるリポジトリはDNSでラウンドロビンされるようなので、URLはsvn.freebsed.org
を指定しとけばいい模様。(昔、どこかで「日本からだと米国東海岸に接続されてしまうので明示的に西海岸のサーバを指定する」と読んだ記憶があるような無いような…。)
# svn co https://svn.freebsd.org/base/stable/11 /usr/src A sys A sys/dev A sys/dev/cpuctl ... リビジョン 308494 をチェックアウトしました。
以前のオブジェクトファイルを削除。
# chflags -R noschg /usr/obj/* # rm -rf /usr/obj
ユーザーランドのビルド。
# cd /usr/src # sudo make buildworld -j 16 ... -------------------------------------------------------------- >>> World build completed on Fri Nov 11 13:38:23 JST 2016 --------------------------------------------------------------
カーネルのビルド。
sudo make buildkernel -j 16 ... -------------------------------------------------------------- >>> Kernel build for GENERIC completed on Fri Nov 11 13:54:34 JST 2016 --------------------------------------------------------------
ビルドしたカーネルのインストール。
# make installkernel
シングルユーザーモードに移行。
今回知ったんだけど、オプションなしでshutdown
コマンドを呼ぶとシングルユーザーモードに移行できるのね。
# shutdown now
こんな感じでつらつらとプロセスが終了し、シングルユーザーモードになる。これは便利だー。
システムが入っているストレージ書き込みできるようにする。zroot
の部分は適宜読み替えの事。
# zfs set readonly=off zroot # zfs mount -a <code> 必要なら''kbdmap''する。 必要なら''adjkerntz -i''する。 設定ファイルのマージ。 <code> # mergemaster -UPiF
ユーザーランドをインストール。
# cd /usr/src # make installworld
残りの設定ファイルをマージ。
# mergemaster -p
不要になった古いファイルを削除
# make delete-old
再起動して晴れてSTABLE環境へ
# reboot ... Last login: Mon Nov 14 00:54:22 2016 from :1 FreeBSD 11.0-STABLE (GENERIC) #0 r308494: Fri Nov 11 13:54:01 JST 2016 Welcome to FreeBSD! ...
その後、通常のworld構築ではここでportsやpackagesの更新と古いライブラリの削除を行うが、同一リリース内でのブランチ変更なので省略。