====== FreeBSD 11-RELEASEをSTABLEに変更する ======
手順としては''/usr/src''以下をSTABLEのソースに変更し、通常の方法でworldを再構築するだけ。
===== 試した環境 =====
* FreeBSD 11.0-RELEASE
* Root on ZFSで構築
===== 手順 =====
必要なことは全て[[https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/makeworld.html|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
こんな感じでつらつらとプロセスが終了し、シングルユーザーモードになる。これは便利だー。
{{ :freebsd:shutdown_to_single_user_mode.png?320 |}}
システムが入っているストレージ書き込みできるようにする。''zroot''の部分は適宜読み替えの事。
# zfs set readonly=off zroot
# zfs mount -a
必要なら''kbdmap''する。
必要なら''adjkerntz -i''する。
設定ファイルのマージ。
# 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の更新と古いライブラリの削除を行うが、同一リリース内でのブランチ変更なので省略。
===== 参考サイト =====
* FreeBSD ハンドブック
* [[https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/current-stable.html|17.4. 開発ブランチを追いかける]]
* [[https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/makeworld.html|17.6. world の再構築]]
* [[https://raymii.org/s/blog/FreeBSD_10_Converting_from_RELEASE_to_STABLE.html|FreeBSD 10, Converting from RELEASE to STABLE - Raymii.org]]
* [[http://murasaki.cocolog-nifty.com/cloud/2009/11/post-d25f.html|シングルユーザモードの忘備録: むらさきのくも]]