見出し画像

VirtualBoxを使うならFreeBSDで!

VirtualBox と FreeBSD というと、Guest OS として FreeBSD をインストールするという使い方が多いかもしれません。今回は、FreeBSD を Host OS として使うことについての記事です。

FreeBSD の ports を見ると、VirtualBox 本体も Additions も最新版(7.2.8:2026年6月7日現在)になっています。これは、長らく古いバージョンしかなかったことを知る人には驚きだと思います。

使ってみると、十分に安定して実用の域にあることがわかります。それどころか、Windows/Linux で 使うより安定しているのではないか、とすら思いました。

この理由は、FreeBSD 開発チームの努力が第一ですが、Windows/Linux では VirtualBox への関心が薄れているというのもあるのではないでしょうか。Windows では WSL(Windows Subsystem for Linux)、Linux では QEMU/KVM や Docker、Kubernetes といったものに興味が移っているようです。

もちろん、FreeBSD の仮想化もいろいろなものがありますが、VirtualBox への最近の力の入れ方が尋常ではありません。

VirtualBox はオープンソースとして開発されており、FreeBSD はそのソースを元に移植しています。そのリリースの日付を見ると驚きます。
VirtualBox 7.2.8 の本家リリースは Changelog によれば4月21日、FreeBSD の ports へのコミットは4月23日です。
同時リリースと言っても過言ではありません。しかも、最新の7.2.x だけではなく、7.1.x、7.0.x、6.1.xへの追従も同様に行われています。
ただし、ports ができてから、build されて バイナリ・パッケージとして流通するまでには若干のタイムラグがあるのでご注意ください。

これは開発チームの、ソースの絶え間ないレビューや移植しやすくするためのバックポートなど、地道な努力の賜物であろうと思います。
かつて、VMware を FreeBSD の Linux エミュレーター上で動かしていた身からすると隔世の感があります。

メモリ管理の差

私は VirtualBox を、Windows ホスト、Linux ホスト、FreeBSD ホストの全てで使っているのですが、FreeBSD が抜群に安定しているように見えます。(身びいきももちろんありますが。)

VirtualBox のようにメモリを大量に消費するものを OS 上で動かすと、うっかりメモリを使い果たしてしまうことがあります。このときの各 OS の振る舞いが特徴的です。

  • Linux — OOM Killer が VM を殺す

  • Windows — Host OS ごと落ちてブルースクリーンに

  • FreeBSD — Guest がフリーズするが、持ちこたえる

FreeBSD の場合は、ブラウザなどを終了させてメモリを確保したあと、Guest を安全に終了させられることが多いのですが、Linux だと突然 VM が落ちるのでどうすることもできません。Windows は論外です。加えて、最近だと Windows では WSL や Hyper-V との競合で、VirtualBox のインストールすらまともにできないことが増えました。

OOM(Out of Memory)Killer とは、メモリ不足でシステム全体が落ちないよう、メモリを大量消費しているプロセスを kill する仕組みです。サーバーのシステムがサービス全体を停止してしまわないようにするためにあるそうですが、デスクトップ用途で使うにはちょっと困った仕組みです。ユーザーが優先順位を決められず、システムが突然落とすからです。重要なデータの編集をしている最中に OOM Killer に殺されたらたまったものではありません。

これに対し、カーネルとプロセス両方を救おうとするのが FreeBSD です。このメモリ管理の粘り強さには定評があります。この特性に関して言えば、デスクトップ用途にはLinuxより向いていると思います。

ZFS との相性

FreeBSD の標準のファイルシステムである ZFS は、もともと仮想環境との相性の良さに定評があります。Proxmox が ZFS を採用しているのを見てもわかります。パフォーマンスの良さ、安定性、データを失わない特性、スナップショットの容易さなどの理由が挙げられます。

VirtualBox を FreeBSD ベースで使う場合の利点と欠点

利点
1. FreeBSD の安定性
2. FreeBSD の優れたメモリ管理
3. ZFSが標準
欠点
ネイティブではないために
1. 本家よりリリースが遅れる
2. 安定性が劣る(はずだが・・・)

⚠ 前述のとおり、開発チームの努力で欠点は最小限に抑えられています。


FreeBSD 上で VirtualBox を使う方法

詳しくは Handbook でご確認ください。

インストール

pkg をつかえば簡単です。

pkg install virtualbox-ose-72

カーネルモジュールのロード

インストール後、カーネルモジュールを手動でロードします。

kldload vboxdrv

恒久化のため、/boot/loader.conf に次の行を追加します。

vboxdrv_load="YES"

ネットワークの設定

/etc/rc.conf に次の行を追加してから再起動します。

vboxnet_enable="YES"

ユーザーの設定

一般ユーザーで使うには、vboxusers グループへの追加が必要です。

pw groupmod vboxusers -m ユーザー名

ブリッジネットワークを使う場合は、/dev/vboxnetctl のパーミッションも変更します。

chown root:vboxusers /dev/vboxnetctl chmod 0660 /dev/vboxnetctl

恒久化のため、/etc/devfs.conf に次の行を追加します。

own vboxnetctl root:vboxusers perm vboxnetctl 0660

起動

Xorg セッションから次のコマンドで起動します。

$ virtualbox

VBoxManage などのCLI tool も、もちろん使用可能です。

USB サポートについて

USB デバイスをゲストに渡すには、使用するユーザーを operator グループにも追加する必要があります。

pw groupmod operator -m ユーザー名

また /etc/devfs.rules に次の内容を追加し(ファイルがなければ新規作成)、

[system=10] add path 'usb/*' mode 0660 group operator

/etc/rc.conf に次の行を加えて devfs を再起動します。

devfs_system_ruleset="system"

service devfs restart

なお、VirtualBox 7.0 以降では USB 2.0(EHCI)/3.0(xHCI)コントローラーがオープンソースのベースパッケージ本体に統合されました。FreeBSD の virtualbox-ose-70/-71/-72 でも Extension Pack なしで USB 2.0/3.0 が利用できます。Extension Pack 自体は FreeBSD では引き続き非対応ですが、USB については問題ありません。


開発チームの努力には本当に頭が下がります。
この素晴らしい成果をぜひお試しください。

いろいろな OS を手軽に試すという目的においては、今でも VirtualBox に勝るものはないと思います。

FreeBSDには、Bhyve というハイパーバイザーもあります。
LinuxのQEMU/KVMと同様のものです。
これについても今後取り上げてみたいと思います。
いずれにせよ、仮想化においてZFSが標準であるということは大きなアドバンテージです。

VirtualBox 関連の他の記事も是非お読みください。


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