VirtualBox 7.2.10 released! FreeBSD でアップグレードする時は注意して
VirtualBox 7.2.10 がリリースされました。
私がこれを 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 で直っています。
