BSD界隈四方山話

第72回FreeBSD 11.0-RELEASEへのアップデート

FreeBSD 11.0-RELEASEと5年間サポート

FreeBSDリリースエンジニアリングチームは2016年10月10日(協定世界時⁠⁠、[FreeBSD-Announce] FreeBSD 11.0-RELEASE Now AvailableにおいてFreeBSDの次期メジャーアップグレードバージョンとなるFreeBSD 11.0-RELEASEの公開を伝えました。多くの新機能はすでにFreeBSD 10.3系にもフィードバックされているので、最新の10.3系を使っている場合にはそれほど大きな違いは感じないかもしれません。

ストレージとして利用している場合、自動的に故障したディスクを入れ替える機能を実現するためのzfsd(8)の導入は注目に値するところです。この機能は11系に取り込まれ10系にはバックポートされていませんので、この新機能を利用したい場合には11系を導入するか、手動でzfsd(8)をバックポーとして利用する必要があります。

FreeBSD 11.0-RELEASEはサポートモデルが新しくなったバージョンとしても注目です。これまでFreeBSDセキュリティチームはFreeBSDのそれぞれのリリースに対して1年または2年のセキュリティサポートを提供してきました。FreeBSD 11からはブランチがセキュリティサポートの対象となり、ブランチベースで少なくとも5年間はセキュリティサポートを提供するというモデルにかわります。

サポート対象となるバージョンはブランチで最新のリリースバージョンとなります。現在は11.0がサポート対象です。11.1-RELEASEが公開された後は11.1系がサポート対象となります。11.1-RELEASEが公開されたあとは11.0-RELEASEには3ヶ月間の移行期間が設けられます。この間に11.1-RELEASEへのアップグレードを実施し、以降は11.1-RELEASE向けに提供されるセキュリティアップデートを適用するといった運用になります。従来よりもローリングリリースよりのモデルに変更となります。

このサポートモデルはLinuxの主要ディストリビューションが採用しているモデルとも似ています。FreeBSDベースのTrueOSはFreeBSD CURRENTをベースにかなり細かいローリングリリースモデルを採用しましたので、FreeBSDのモデルはそれに比べると従来よりです。多かれ少なかれ、多くのオペレーティングシステムがこういったサポートモデルへ移行しつつあります。

FreeBSD 10.3-RELEASEからアップグレード

今回のアップグレード作業はちょっとイレギュラーです。FreeBSD 11.0-RELEASEのビルドが完了しもろもろの準備が終わったあとで、リリースの直前にOpenSSLのセキュリティ脆弱性が発表されてリリースが一旦停止されたからです。FreeBSDエンジニアリングチームはセキュリティ脆弱性を修正したバージョンを「FreeBSD 11.0-RELEASE-p1」として作成しました。今回リリースアナウンスが行われたバージョンはこのパッチレベル1のバージョンです。

このためアップデート手順がいつもとちょっと異なります。FreeBSD 10.3-RELEASEを使っている場合、次のように一旦/usr/bin/bspatchの中身を空にしてからfreebsd-update(8)でアップグレード作業を行う必要があります。upgradeとinstallの作業にはマシンや環境によっては長い時間がかかります。また、作業の途中で/etc/以下のファイルを手動で編集するフェーズがあると思いますので、表示に従って作業を行ってください。

 10.3-RELEASEから11.0-RELEASE-p1へアップグレードする方法
: > /usr/bin/bspatch
freebsd-update upgrade -r 11.0-RELEASE
freebsd-update install
shutdown -r now
…
freebsd-update install

システムを10.3-RELEASEから11.0-RELEASE-p1へアップグレードした後は、インストールしてあるサードパーティ製のソフトウェアをすべて再構築する必要があります。pkg(8)経由でインストールしてあるなら、次のようにしてすべてのパッケージを11.0-RELEASE向けのバイナリにアップグレードを行います。ここでもう一度システムを再起動するか、または必要になるサービスを再起動します。

 パッケージを10系から11系へアップグレード
pkg-static install -fy pkg
pkg upgrade -y
freebsd-update install
shutdown -r now

パッケージが提供されていないとか、同じバイナリを使い続ける必要があるといった場合には、次のように10.3の互換ライブラリをインストールしてみてください。動作するようになると思います。

 10.3互換ライブラリをインストール
pkg install -y compat10x-amd64-10.3

環境を確認して次のように11.0-RELEASE-p1になっていることが確認できればアップグレードは完了です。

 11.0-RELEASE-p1の確認
# uname -a
FreeBSD virt.ongs.co.jp 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: Thu Sep 29 01:43:23 UTC 2016     root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
# freebsd-version -uk
11.0-RELEASE-p1
11.0-RELEASE-p1
#

FreeBSD 11.0-RELEASEはクラウドプラットフォームや仮想環境向けのイメージも提供されています。サポートするARMプラットフォームが増えたのも今回の特徴といえるでしょう。

ssh(1)経由でログインしているホストをfreebsd-update(8)でアップグレードする場合、途中長い間レスポンスがなくなるため、ssh(1)の接続が切れることがあります。ssh(1)の設定ファイル(~/.ssh/config)に次のような設定を追加しておくと、こうした接続切れを回避できるようになります。

リスト ssh(1)の接続切れを回避する設定 ~/.ssh/config
Host *
    ServerAliveInterval     120

または次のように接続を共有する設定をしておき、2つのターミナルからホストにログインして、一方でfreebsd-update(8)を、もう一方でtop(1)を動かしておくという手もあります。こうしておくと接続は切れにくくなりますし、本当にアップデート作業が進んでいるのかを目視で確認しやすくなります。

リスト 接続を共有する設定を利用する ~/.ssh/config
Host *
        ControlMaster auto
        ControlPath ~/.ssh/sshmux-%r@%h:%p
        ControlPersist 10

FreeBSD 11.0-RELEASEからアップグレード

FreeBSD 11.0-RELEASEのリリースアナウンスが流れる前にアップデートを実施したという場合(参考:第71回 FreeBSD 11.0-RELEASEへのアップデート(リリース前)⁠、FreeBSD 11.0-RELEASEからFreeBSD 11.0-RELEASE-p1へアップグレードを行う必要があります。この方法もちょっといつもと違います。

まず、次のようにいったん/usr/bin/bspatchの中身を空にしてからfreebsd-update(8)でアップデート作業を行います。このアップデート作業はすぐに完了します。

 11.0-RELEASEから11.0-RELEASE-p1へアップデート
: > /usr/bin/bspatch
freebsd-update fetch
freebsd-update install
shutdown -r now

アップデートの対象にカーネルやブートローダ、/rescue/を含むいくつかのコマンド、OpenSSLを利用するソフトウェアなどが含まれています。カーネルとブートローダがアップデートされていますので、一旦再起動します。

ちょっとしたタイミングの差ですが、パッケージも大量に入れ替わったので、システムをアップグレードした後はパッケージも次のようにアップグレードしておきましょう。

 パッケージをアップグレード
pkg update
pkg upgrade -y

これで11.0-RELEASEから11.0-RELEASE-p1へのアップグレードが完了です。11.0-RELEASEにはセキュリティ脆弱性が含まれたソフトウェアが入っていますので、可能な限り迅速に11.0-RELEASE-p1へアップグレードすることが望まれます。

11.1-RELEASEへのアップグレードはまた今回とは違うものに

今回はfreebsd-update(8)を使ってメジャーアップグレードを実施しましたが、来年にリリースされることになるであろうFreeBSD 11.1-RELEASEではpkg(8)によるアップグレードを実施、または最後のfreebsd-update(8)によるアップグレードを実施することになると見られます。このようなアップグレード方法になるかはわかりませんが、マイナーアップグレードといえ注意が必要になるものと見られます。

おすすめ記事

記事・ニュース一覧