Azure IaaS 上の FreeBSD 11.0-RELEASE 仮想マシンで freebsd-update を実行すると OS が起動しなくなる可能性がある

スポンサーリンク

Azure Marketplace から FreeBSD 仮想マシン イメージが提供されていますが、デプロイ後の稼働で最新バージョンへのアップグレードやセキュリティ パッチの適用は行うケースがあると思います。

なお、現時点 (12/30) で提供されている FreeBSD 11.0 の最新バージョンは「FreeBSD 11.0-RELEASE-p5」となっています。

FreeBSD には容易にアップグレード、パッチを適用するためのコマンド (freebsd-update) が用意されていますが、Azure IaaS 上の FreeBSD 11.0 仮想マシンにこのコマンドを実行、再起動すると OS 自体起動しなくなる可能性があります。

現象が発生するケース

この現象が発生するケースとしては、確認している限り以下となります。どちらのケースも A シリーズ、D シリーズのインスタンスで発生しており、DS シリーズのインスタンスでは今のところ発生していません (それ以外のシリーズのインスタンスは未確認)。

  • FreeBSD 11.0-RELEASE 環境で freebsd-update を実施
  • FreeBSD 11.0-RELEASE へのアップグレードで freebsd-update を実施

現象が発生した後でブート診断を見てみると、仮想ディスクがなぜがデタッチされ、起動できないことが確認できます。

原因

この現象は、Hyper-V (2012 R2) 仮想マシンで動作する FreeBSD 11.0 の環境で発生する現象と同様の不具合となっています。サポートに確認した限りでは修正パッチは作成完了、Azure Marketplace の FreeBSD には修正パッチ適用済み、ディストリビューターにも展開済みとのことです (個別のパッチ提供はなし)。

なぜ修正パッチ適用済みの環境でも現象が発生するか

Azure Marketlace 経由で FreeBSD 11.0-RELEASE デプロイ直後のバージョンを見てみると、以下のようになっています。一見 GENERIC カーネルに見えますが、カスタム カーネル (修正パッチ適用済み) のようです。

しかしながら、freebsd-update を実行した際、以下のとおりカーネルが書き換わっていることが確認できます。この書き換わったカーネルには修正パッチが適用されていないため、現象が発生します。

回避策について

ディストリビューター側にて修正パッチが適用されるまで Azure 上で動作する FreeBSD の環境を FreeBSD 11.0-RELEASE にアップグレードを控えたほうがよいと思います。

既に FreeBSD 11.0-RELEASE 環境であれば、/etc/freebsd-update.conf を以下の図のように編集し、カーネルをアップデートしないようにして、ユーザーランドのみアップデートする、というように回避することは可能です。

補足

Azure 仮想マシン自体のバックアップについて、FreeBSD は現状サポート対象外となっています。

参考