VirtualBox 7.2.10 released! FreeBSD でアップグレードする時は注意して

VirtualBox 7.2.10 がリリースされました。

VirtualBox 7.2.10 released

私がこれを FreeBSD で pkg upgrade したときに知りました。

ports のコミット記録を見ると、2026-06-17 22:02:24 となっていて、本家リリースの翌日に公開となっています。いつもながら素晴らしい。それにしても Maintainer はどういう生活をされているのでしょう?

しかし、FreeBSD を 15.1-RELEASE にアップグレードした人が、そのまま pkg upgrade してしまうと、現時点(2026年6月24日現在)ではおそらく問題が発生します。15.0 のままの人は pkg upgrade しても問題ありません。

これは、この記事で紹介したものと同種の問題です。

pkg upgrade の画面をよく見ると、以下のようになっています。

Installed packages to be UPGRADED:
virtualbox-ose-72: 7.2.8 -> 7.2.10 [FreeBSD-ports]
virtualbox-ose-kmod-72: 7.2.8.1501000 -> 7.2.10.1500068 [FreeBSD-ports]

ose-kmod-72 のバージョンの末尾に注目してください。
1501000 から 1500068 となっています。これはカーネルの ABI を表す番号で、前者が 15.1 でビルドされたもの、後者は 15.0 でビルドされたものであることを表しています。

つまり、せっかく 15.1 のカーネルの下で ports でビルドしたものを、古い 15.0 のカーネルでビルドされたバイナリパッケージに置き換えられたということになります。最新バージョンのパッケージだけど、古い 15.0 カーネル用のカーネルモジュールという状態です。

この状態で VirtualBox を使うと、VirtualBox 自体は起動するのですが、VM を起動しようとするとエラーになります。

このような場合、kmod を ports からビルドしてインストールし直すしかありません。やり方は後述します。注意点がありますので是非お読みください。

なぜこのようなことが起こるかというと、15.1 のようなポイントリリースでは、package はリリース後しばらくの間は 15.0 でビルドされたものが供給され続けます。ほとんどのアプリケーションソフトウェアでは 15.0 と 15.1 のカーネルの違いは問題になりませんが、カーネルモジュール(および .kmod 形式のファームウェア)では kernel mismatch が起こり、カーネルモジュールがロードされなくなります。

どのタイミングで 15.0 から 15.1 への切り替えが行われるのかは定かではありません。今回のようにパッケージのバージョン番号の末尾で判断するしかありません。切り替えが行われるまでは、今回のように ports でのビルドが必要になります。

では、実際の手順です。

まず、pkg upgrade を一度完了させます。[y/N] で y を入力します。

virtualbox-ose-72: 7.2.8 -> 7.2.10 [FreeBSD-ports]
virtualbox-ose-kmod-72: 7.2.8.1501000 -> 7.2.10.1500068 [FreeBSD-ports]Number of packages to be upgraded: 8TThe process will require 8 MiB more space.7267 MiB to be downloaded.eeProceed with this action? [y/N]: y

次に ports で make reinstall しますが、その前に ports を最新の状態に更新しておきます。
まだ /usr/ports を用意していない場合は、あらかじめ以下のコマンドで取得しておいてください。

$ doas git clone https://git.FreeBSD.org/ports.git /usr/ports

すでに /usr/ports がある場合は git pull だけで最新の状態に更新できます。

$ cd /usr/ports
$ doas git pull

kmod-72 をインストールします。

$ cd emulators/virtualbox-ose-kmod-72
$ doas make reinstall

これで 15.1 用に置き換わるはずです。

$ pkg info | grep ose-kmod
virtualbox-ose-kmod-72-7.2.10.1501000 VirtualBox kernel module for FreeBSD

バージョン番号末尾が 1501xxx になっていれば成功です。

pkg upgrade で一旦インストールする手順を疑問に思うかもしれません。

この手順なら virtualbox-ose-kmod のビルドだけで済みますが、pkg upgrade を先に行わずに ports から入れようとすると、virtualbox-ose 本体とそれが依存する多数のパッケージまでビルドする羽目になります。依存関係を pkg upgrade で解決した後に ports で make reinstall することで、スムーズにアップグレードできるのです。

なお、make reinstall は make deinstall && make install と同じもので、インストールされているパッケージをアンインストールした後にビルドしたバイナリをインストールします。

インストールが終わったら後片付けしておきましょう

$ make clean

全体の手順をまとめます。

$ doas pkg update
$ doas pkg upgrade
$ cd /usr/ports
$ doas git pull
$ cd emulators/virtualbox-ose-kmod-72
$ doas make reinstall clean

実は 7.2.10 についてはフォーラムで多数の不具合報告が上がっており、ハズレのバージョンである可能性が高く、このバージョンをスキップしてしまうのも一つの手です。スキップする場合の手順を紹介しておきます。

$ doas pkg lock virtualbox-ose-72
$ doas pkg lock virtualbox-ose-kmod-72

これで pkg upgrade 時にスキップされます。確認は以下のコマンドで。

$ pkg lock -l

これで、pkg upgrade しても vitrualbox-ose および virtualbox-ose-kmod は対象外になります。

次のバージョンが出て問題が解消されたと判断したら、以下の手順でアップグレードします。

$ doas pkg unlock virtualbox-ose-72
$ doas pkg unlock virtualbox-ose-kmod-72
$ doas pkg upgrade

ただし、私の環境では 7.2.10 で VM が起動しないなどの致命的な不具合は今のところ起きていません。確認した VM は以下のとおりです。

  • Ubuntu 24.04 LTS

  • Ubuntu 26.04 LTS

  • openSUSE Tumbleweed 20260226

  • FreeBSD 15.0-RELEASE

  • OpenBSD 7.9

  • NetBSD 10.1/amd64

  • NetBSD 10.1/i386

  • Windows 11

やはり、VirtualBox は FreeBSD をホストにするのが良いのかもしれません。

まとめ

FreeBSD のアップグレードについては、pkgbase による upgrade が正式化されるまでは、しばらくこのような問題が発生すると思われますので、ports でのビルド手順を覚えておく必要があると思います。

問題が発生したときも、BE を作成しておけば簡単に戻すことができますので、ぜひやり方を覚えておきましょう。

追記

リリースノートには明記されていませんが、7.2.8 にあった、VM立ち上げるたびにホームディレクトリにログファイルが作られる変なバグは、7.2.10 で直っています。


いいなと思ったら応援しよう!