FreeBSD 10.3-RELEASEで運用しているサーバを11.0-RELEASEにアップグレードしまして、引っかかったところがあったのでメモします。
引っかかってないところ
Gihyo.jpの第72回 FreeBSD 11.0-RELEASEへのアップデートページのFreeBSD 10.3-RELEASEからアップグレード
を参考にしまして、
- freebsd-updateコマンドで11.0-RELEASEにする
- portsで入れたパッケージを再インストールする
の順番で行いました。1.は記事のままでいいのですが、2.については私のサーバではpkgではなくportsでインストールしているので、portmasterのmanにあるUsing portmaster to do a complete reinstallation of all ports
の方法で全portsを再インストールしています。
- portmaster --list-origins > ~/installed-port-list
- Update the ports tree
- portmaster -ty --clean-distfiles
- portmaster -Faf
- pkg delete -afy
- rm -rf /usr/local/lib/compat/pkg
- Back up any files in /usr/local you wish to save, such as configuration files in /usr/local/etc
- Manually check /usr/local and /var/db/pkg to make sure that they are really empty
- Install ports-mgmt/pkg and then ports-mgmt/portmaster. Remove both from ~/installed-port-list.
- portmaster --no-confirm `cat ~/installed-port-list`
ついでにPerl5を5.20から5.24に変更しておいた方がよさそうなので、4.より前の段階で/etc/make.conf
にDEFAULT_VERSIONS+=perl5=5.24
を記載しました。全部インストールし直しなのでちょうどいい機会です。
で、ここまでは特に問題なし。
引っかかったところ
このサーバは確かFreeBSD 9の頃にZFS on Rootで作ったと思うのですが、zpoolのバージョンを上げる作業の最後でbootcodeをインストールする際にエラーが発生します。
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
gpart: /dev/da0p1: not enough space
これはfreebsd-bootタイプのパーティションにbootcodeを入れるためのスペースが残っていないという内容なのですが、11.0-RELEASEのbootcodeは80KBオーバーになったので、以前からZFSでがんばって入れちゃっているサーバだとfreebsd-bootは64KBで切られているので全くもって入れられないということだそうです。[1]
[1][freebsd 11.0-release errata]より(https://www.freebsd.org/releases/11.0R/errata.html)
ディスクが全く余っていない場合は、freebsd-swapパーティションを縮小してfreebsd-bootパーティションの容量を増やすしかないようです。
# swapoff -a
# gpart delete -i 1 da0
# gpart delete -i 2 da0
# gpart add -t freebsd-boot -a 4k -s 512k da0
# gpart add -t freebsd-swap da0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
# gpart list
(freebsd-swapパーティションのrawuuidをコピー)
# vi /etc/fstab
(/dev/gptip/[上記freebsd-swapパーティションのrawuuid] に書き換える)
# swapon -a
gpartの操作なのでだいぶ不安にはなりますが、サーバを再起動しても特に問題は見られないのでこれでいけてそうです。
いやーしかし、パーティションをいじるのは心臓に悪いわ…