FreeBSD 8.2-RELEASE から 9.0-RELEASE への更新メモ

freebsd-update コマンドを使って 8.2-RELEASE から 9.0-RELEASE へアップグレードした時のメモです。

FreeBSD 9.0-RELEASE Installation Instructions

事前準備

1. アップデート

9.0-RELEASE にするために必要なアップデートを行う。
(freebsd-update コマンドが変更される。)

# freebsd-update fetch
# freebsd-update install

2. デーモンの設定

ports で導入したソフトウェアに関する /etc/rc.conf 内の記述をコメントアウトする。

3. 再起動

# shutdown -r now

アップグレード実行

4. 差分の取得・設定ファイルのマージ

# freebsd-update upgrade -r 9.0-RELEASE
Looking up update.FreeBSD.org mirrors... 4 mirrors found.  
Fetching metadata signature for 8.2-RELEASE from update4.FreeBSD.org... done.  
Fetching metadata index... done.  
Fetching 1 metadata files... done.  
Inspecting system... done.

The following components of FreeBSD seem to be installed:  
kernel/generic src/base src/bin src/cddl src/contrib src/crypto src/etc  
src/games src/gnu src/include src/krb5 src/lib src/libexec src/release  
src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin  
src/usbin world/base world/catpages world/dict world/doc world/games  
world/info world/lib32 world/manpages

The following components of FreeBSD do not seem to be installed:  
world/proflibs

Does this look reasonable (y/n)? y

Fetching metadata signature for 9.0-RELEASE from update4.FreeBSD.org... done.  
Fetching metadata index... done.  
Fetching 1 metadata patches. done.  
Applying metadata patches... done.  
Fetching 1 metadata files... done.  
Inspecting system... done.  
Fetching files from 8.2-RELEASE for merging... done.  
Preparing to download files... done.  
Fetching 8854 patches.....10....20....30....40....50....  
(略)
....8800....8810....8820....8830....8840....8850.. done.
Applying patches... done.  
Fetching 1839 files... done.  
Attempting to automatically merge changes in files... done.  

各種設定ファイルのマージを行う。
差分が表示されるので、問題なければ y で進む。

設定ファイルに手を加えている場合など、差分の適用がコンフリクトする場合は vi が起動するので適切に編集する。
その際以下の行は削除する。

<<<<<<< current version  
=======
>>>>>>> 9.0-RELEASE

5. カーネルのインストール

# freebsd-update install
Installing updates...  
Kernel updates have been installed.  Please reboot and run  
"/usr/sbin/freebsd-update install" again to finish installing updates.
# shutdown -r now

カーネルがインストールされる。
指示通りに再起動する。
(他のアップデートをインストールするために新しいカーネルで起動する。)

6. アップデートのインストール

# freebsd-update install
Installing updates...  
Completing this upgrade requires removing old shared object files.  
Please rebuild all installed 3rd party software (e.g., programs  
installed from the ports tree) and then run "/usr/sbin/freebsd-update install"  
again to finish installing updates.  

指示通り、サードパーティアプリを入れなおす。

# portmaster --no-confirm -adf

古いライブラリを削除する。

# freebsd-update install
Installing updates... done.  

7. 再起動

アップグレード終了。再起動する。

# shutdown -r now

ZFS の更新

zpool のバージョンと zfs のバージョンを更新する。

# zpool upgrade -a
This system is currently running ZFS pool version 28.

Successfully upgraded 'zpool0'

Successfully upgraded 'zroot'

If you boot from pool 'zroot', don't forget to update boot code.  
Assuming you use GPT partitioning and da0 is your boot disk  
the following command will do it:

        gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0

# zfs upgrade -a
10 filesystems upgraded  

zpool upgrade でブートコードの更新を忘れないで、と親切にメッセージを出してくれるので、更新する。

# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0