Windows環境でのVirtualBoxとFreeBSD仮想マシンのセットアップ
エグゼクティブサマリー
本文書は、Windows 11上にVirtualBoxとFreeBSD 15.0-RELEASE仮想マシンをバッチスクリプトで自動構築する手順を解説する。GUIを使わず、コマンドラインで再現可能な環境構築を行うことが目的である。
構築は3つのステップで行う。ステップ1ではwingetによりVirtualBoxをインストールし、ステップ2ではVBoxManageコマンドでCPU・メモリ・ストレージなどを設定しFreeBSD仮想マシンを作成する。そして、bsdinstallのスクリプト機能(installerconfig)を用いたカスタムISOによりFreeBSDを自動インストールする。ステップ3ではVirtualBox Guest Additionsのインストールと日本語環境の構築を行う。
所要時間は約30分(ISOダウンロード時間を除く)。前提として、管理者権限、30GB以上の空きディスク容量、4GB以上の空きメモリ、Hyper-Vの無効化が必要である。
| 項目 | 内容 |
|---|---|
| 目的 | コマンドラインによる仮想環境構築の自動化 |
| 使用ツール | winget(パッケージ管理)、VBoxManage(VM管理)、xorriso(ISO編集) |
| 構築環境 | VirtualBox + FreeBSD 15.0-RELEASE(メモリ4GB、ストレージ20GB) |
| 所要時間 | 約30分(ISOダウンロード時間を除く) |
| 前提 | Windows 11(64bit)、管理者権限、30GB以上の空き容量 |
1. 概要
1.1 取り組み内容
- スクリプトを実行し、仮想マシンを作成
VBoxManage showvminfoで設定値を確認
1.2 用語
- winget:Windows標準のパッケージマネージャー。コマンドラインからソフトウェアのインストール・管理が可能
- VBoxManage:VirtualBoxのコマンドラインインターフェース。GUIを使わずに仮想マシンを管理可能
- bsdinstall:FreeBSDの標準インストーラー。/etc/installerconfigファイルによりスクリプトによる自動インストールが可能
- xorriso:ISOイメージの編集ツール。既存のISOにファイルを追加できる
1.3 ステップ1・ステップ2・ステップ3の構成
ステップ3:ゲストOS環境の構築(4章)
Guest Additions による統合 + 日本語環境の構築
─────────────────────────────────────────
ステップ2:仮想マシンの作成と FreeBSD のインストール(3章)
VBoxManage による仮想マシンの構成 + bsdinstall による自動インストール
─────────────────────────────────────────
ステップ1:VirtualBox のインストール(2章)
winget による VirtualBox のインストール
─────────────────────────────────────────
2. ステップ1:VirtualBox のインストール
2.1 インストール
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windowsキーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
REM VirtualBox をシステム領域にインストール
winget install --scope machine --id Oracle.VirtualBox -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements
REM VBoxManage のパス設定(システム環境変数に永続化)
powershell -NoProfile -Command "$p='C:\Program Files\Oracle\VirtualBox'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and $c -notlike \"*$p*\"){[Environment]::SetEnvironmentVariable('Path',\"$p;$c\",'Machine')}"
REM 現在のセッションにも反映
set "PATH=C:\Program Files\Oracle\VirtualBox;%PATH%"
REM VirtualBox Extension Pack をインストール
for /f "tokens=1 delims=r" %a in ('VBoxManage --version') do set "VBOX_VER=%a"
set "EXTPACK_URL=https://download.virtualbox.org/virtualbox/%VBOX_VER%/Oracle_VirtualBox_Extension_Pack-%VBOX_VER%.vbox-extpack"
set "EXTPACK_FILE=%TEMP%\Oracle_VirtualBox_Extension_Pack-%VBOX_VER%.vbox-extpack"
curl -L -o "%EXTPACK_FILE%" "%EXTPACK_URL%"
echo y | VBoxManage extpack install --replace "%EXTPACK_FILE%"
del "%EXTPACK_FILE%"
2.2 インストールの確認
- VirtualBox 本体の確認
バージョン文字列が表示される。それにより、本体が正しくインストールされパスも通っていることが確認できる。
VBoxManage --version
- Extension Pack の確認
インストール済みの拡張パック一覧が表示される。Usable が true であれば正常に動作している。
VBoxManage list extpacks
3. ステップ2:仮想マシンの作成と FreeBSD のインストール
VBoxManageのオプションでCPU・メモリ・ストレージ・ネットワーク等を設定し、FreeBSD仮想マシンを作成する。FreeBSDのインストールには、bsdinstallのスクリプト機能(installerconfig)を利用する。installerconfigを含むカスタムISOを作成し、それを用いて無人インストールを行う。
3.1 VBoxManage modifyvm 主要オプション
| オプション | 設定内容 | 本スクリプトの値 |
|---|---|---|
--memory |
RAMサイズ(MB) | 4096 |
--cpus |
CPU数 | 2 |
--vram |
ビデオメモリ(MB) | 128 |
--firmware |
ファームウェア種別 | efi |
--paravirt-provider |
準仮想化プロバイダ | default(FreeBSD向け) |
--graphicscontroller |
グラフィックコントローラ | vboxsvga(FreeBSD向け) |
3.2 ストレージ構成
仮想マシン
├── SATA Controller(IntelAhci)
│ └── Port 0: 仮想HDD(20GB, VDI形式)
└── IDE Controller(PIIX4)
└── Port 0: DVDドライブ(FreeBSD カスタムISO)
3.3 installerconfigの作成
bsdinstallが参照する自動インストール用スクリプト(installerconfig)を作成する。このファイルをFreeBSDインストールISOに組み込むことで、無人インストールが実行される。以下の内容を %USERPROFILE%\VirtualBox VMs\ISO\installerconfig として保存する。
PARTITIONS="ada0 gpt"
DISTRIBUTIONS="kernel.txz base.txz"
#!/bin/sh
echo "Running installerconfig..."
# ネットワーク設定
sysrc ifconfig_em0="DHCP"
sysrc sshd_enable="YES"
dhclient em0
# タイムゾーン設定
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
adjkerntz -a
# ユーザー作成
echo "changeme" | pw useradd -n myuser -m -G wheel -s /bin/sh -h 0
# SSH rootログインを無効化
sed -i "" 's/#PermitRootLogin no/PermitRootLogin no/' /etc/ssh/sshd_config
# pkg の初期化と openssh の確認
env ASSUME_ALWAYS_YES=YES pkg bootstrap -f | cat
# loader.conf 設定
cat << EOF >> /boot/loader.conf
autoboot_delay="3"
hw.efi.poweroff=0
EOF
echo "installerconfig completed."
shutdown -p now
3.4 カスタムISOの作成と仮想マシンの作成
コマンドプロンプトで以下を実行する。コマンドプロンプトを起動するには、Windowsキーまたはスタートメニューから「cmd」と入力する。
カスタムISOの作成にはxorrisoを使用する。xorrisoはWindowsネイティブバイナリが提供されていないため、VirtualBox付属のWSLまたはCygwinなどの環境が必要となる。ここでは、PowerShellでWSL上のxorrisoを呼び出す方法を示す。事前にWSLのUbuntu環境で sudo apt-get install -y xorriso を実行してxorrisoをインストールしておくこと。
REM FreeBSD 15.0-RELEASE ISO ダウンロード設定
set "ISO_URL=https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/15.0/FreeBSD-15.0-RELEASE-amd64-disc1.iso"
set "ISO_DIR=%USERPROFILE%\VirtualBox VMs\ISO"
set "ISO_FILE=%ISO_DIR%\FreeBSD-15.0-RELEASE-amd64-disc1.iso"
set "CUSTOM_ISO=%ISO_DIR%\FreeBSD-15.0-custom.iso"
set "INSTALLERCONFIG=%ISO_DIR%\installerconfig"
REM ISOディレクトリ作成
if not exist "%ISO_DIR%" mkdir "%ISO_DIR%"
REM ISOファイルが存在しない場合のみダウンロード
if exist "%ISO_FILE%" (
echo FreeBSD 15.0-RELEASE ISO は既に存在します:%ISO_FILE%
) else (
echo FreeBSD 15.0-RELEASE ISO をダウンロード中...
curl -L -o "%ISO_FILE%" "%ISO_URL%"
if errorlevel 1 (
echo ダウンロードに失敗しました
exit /b 1
)
echo ダウンロード完了
)
REM installerconfigが存在することを確認
if not exist "%INSTALLERCONFIG%" (
echo installerconfig が見つかりません:%INSTALLERCONFIG%
echo 3.3節の手順に従いinstallerconfigを作成してください
exit /b 1
)
REM カスタムISOの作成(WSL上のxorrisoを使用)
copy "%ISO_FILE%" "%CUSTOM_ISO%"
powershell -NoProfile -Command "wsl xorriso -boot_image any keep -dev $(wsl wslpath -u '%CUSTOM_ISO%') -map $(wsl wslpath -u '%INSTALLERCONFIG%') /etc/installerconfig"
REM 仮想マシン設定
set "VM_NAME=FreeBSD15"
set "VM_DIR=%USERPROFILE%\VirtualBox VMs\%VM_NAME%"
set "VDI_FILE=%VM_DIR%\%VM_NAME%.vdi"
set "MEMORY_MB=4096"
set "STORAGE_MB=20480"
REM 同名VM存在確認
VBoxManage showvminfo "%VM_NAME%" >nul 2>&1
if not errorlevel 1 (
echo 仮想マシン "%VM_NAME%" は既に存在します
echo 削除する場合: VBoxManage unregistervm "%VM_NAME%" --delete
exit /b 1
)
REM 仮想マシンディレクトリ作成
if not exist "%VM_DIR%" mkdir "%VM_DIR%"
REM 仮想マシン作成・登録
VBoxManage createvm --name="%VM_NAME%" --ostype=FreeBSD_64 --register --basefolder="%USERPROFILE%\VirtualBox VMs"
REM 基本設定(メモリ4GB, CPU2コア)
VBoxManage modifyvm "%VM_NAME%" --memory=%MEMORY_MB% --cpus=2 --ioapic=on --acpi=on
REM グラフィック設定(FreeBSDではVBoxSVGAを推奨)
VBoxManage modifyvm "%VM_NAME%" --vram=128 --graphicscontroller=vboxsvga
REM ファームウェア設定(EFI)
VBoxManage modifyvm "%VM_NAME%" --firmware=efi
REM パフォーマンス設定(FreeBSDではdefaultを使用)
VBoxManage modifyvm "%VM_NAME%" --paravirt-provider=default --nested-paging=on
REM 入力デバイス設定
VBoxManage modifyvm "%VM_NAME%" --mouse=ps2 --keyboard=ps2
REM ネットワーク設定(NAT / Intel PRO/1000)
VBoxManage modifyvm "%VM_NAME%" --nic1=nat --nic-type1=82540EM --cable-connected1=on
REM SSHポートフォワーディング設定(ホスト2222 → ゲスト22)
VBoxManage modifyvm "%VM_NAME%" --nat-pf1="ssh,tcp,,2222,,22"
REM オーディオ設定
VBoxManage modifyvm "%VM_NAME%" --audio-enabled=on --audio-driver=default --audio-controller=hda --audio-out=on
REM クリップボード・ドラッグ&ドロップ共有
VBoxManage modifyvm "%VM_NAME%" --clipboard-mode=bidirectional --drag-and-drop=bidirectional
REM USB設定
VBoxManage modifyvm "%VM_NAME%" --usb-ohci=on --usb-ehci=on
REM RTC設定
VBoxManage modifyvm "%VM_NAME%" --rtc-use-utc=on
REM 仮想ハードディスク作成(20GB)
VBoxManage createmedium disk --filename="%VDI_FILE%" --size=%STORAGE_MB% --format=VDI --variant=Standard
REM SATAコントローラ作成・ハードディスク接続
VBoxManage storagectl "%VM_NAME%" --name="SATA Controller" --add=sata --controller=IntelAhci --bootable=on
VBoxManage storageattach "%VM_NAME%" --storagectl="SATA Controller" --port=0 --device=0 --type=hdd --medium="%VDI_FILE%"
REM IDEコントローラ作成・DVDドライブ接続(カスタムISOを使用)
VBoxManage storagectl "%VM_NAME%" --name="IDE Controller" --add=ide --controller=PIIX4
VBoxManage storageattach "%VM_NAME%" --storagectl="IDE Controller" --port=0 --device=0 --type=dvddrive --medium="%CUSTOM_ISO%"
REM ブート順序設定
VBoxManage modifyvm "%VM_NAME%" --boot1=dvd --boot2=disk --boot3=none --boot4=none
REM 仮想マシン起動(installerconfigによる自動インストールが開始される)
VBoxManage startvm "%VM_NAME%" --type=separate
echo.
echo ========================================
echo 自動インストールが開始されました
echo installerconfig により無人インストールが実行されます
echo インストール完了後、VMは自動的にシャットダウンします
インストール完了(自動シャットダウン)後、DVDドライブからISOを取り外し、ディスクから起動する。
REM DVDドライブからISOを取り外し
VBoxManage storageattach "%VM_NAME%" --storagectl="IDE Controller" --port=0 --device=0 --type=dvddrive --medium=emptydrive
REM ブート順序をディスク優先に変更
VBoxManage modifyvm "%VM_NAME%" --boot1=disk --boot2=none --boot3=none --boot4=none
REM 仮想マシン起動
VBoxManage startvm "%VM_NAME%" --type=separate
echo === 動作確認 ===
VBoxManage --version
VBoxManage list extpacks
VBoxManage list vms
VBoxManage showvminfo "%VM_NAME%" | findstr /C:"Memory size" /C:"Number of CPUs" /C:"Firmware" /C:"VRAM size"
確認すべき出力項目:
- Memory size: 4096MB
- VRAM size: 128MB
- Firmware: EFI
- Number of CPUs: 2
4. ステップ3:ゲストOS環境の構築
FreeBSDのインストール完了後、VirtualBox Guest Additionsによるホスト-ゲスト間の統合と、日本語環境の構築を行う。以下のコマンドはすべてSSH経由(ホスト側のコマンドプロンプト)で実行する。
REM ===========================================================
REM 4. ステップ3:ゲストOS環境の構築
REM ===========================================================
REM 前提:自動インストール完了済み、ゲストOS起動済み、SSH接続可能
REM (NATポートフォワード: ホスト2222 → ゲスト22)
set "VM_NAME=FreeBSD15"
set "USER_NAME=myuser"
REM ===========================================================
REM 4.1 Guest Additionsのインストール
REM ===========================================================
REM FreeBSD用Guest Additionsパッケージのインストール
ssh -p 2222 %USER_NAME%@localhost "sudo pkg install -y virtualbox-ose-additions"
REM Guest Additionsサービスの有効化
ssh -p 2222 %USER_NAME%@localhost "sudo sysrc vboxguest_enable=YES && sudo sysrc vboxservice_enable=YES"
REM 再起動
VBoxManage controlvm "%VM_NAME%" acpipowerbutton
REM ※ 再起動完了まで待つ(約1〜2分)
REM ===========================================================
REM 4.2 日本語環境の構築
REM ===========================================================
REM ロケール設定とフォント・入力メソッドのインストール
ssh -p 2222 %USER_NAME%@localhost "sudo pkg install -y ja-font-std ja-font-vlgothic ja-fcitx5-mozc fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt"
REM ログインクラスの日本語設定(/etc/login.conf に japanese クラスを追加)
ssh -p 2222 %USER_NAME%@localhost "sudo sh -c 'cat << EOF >> /etc/login.conf
japanese|Japanese Users Accounts:\
:charset=UTF-8:\
:lang=ja_JP.UTF-8:\
:tc=default:
EOF
cap_mkdb /etc/login.conf'"
REM ユーザーのログインクラスを japanese に変更
ssh -p 2222 %USER_NAME%@localhost "sudo pw usermod %USER_NAME% -L japanese"
REM fcitx5 環境変数の設定
ssh -p 2222 %USER_NAME%@localhost "cat << 'EOF' >> ~/.profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
EOF"
REM 再起動(日本語環境を反映)
VBoxManage controlvm "%VM_NAME%" acpipowerbutton
5. トラブルシューティング
5.1 よくある問題と対処
| 症状 | 原因 | 対処 |
|---|---|---|
VBoxManageが認識されない |
PATHが通っていない | コマンドプロンプトを再起動、または絶対パスで実行 |
| ISOダウンロード失敗 | ネットワーク問題 | URLをブラウザで確認、手動ダウンロード |
| EFIブート失敗・UEFI Shellに落ちる | ファームウェア設定またはカスタムISOのボリュームIDの不一致 | xorrisoで-boot_image any keepオプションを確認。--firmware=biosに変更して試行 |
| Hyper-V競合エラー | Hyper-Vが有効 | Windowsの機能でHyper-Vを無効化 |
| installerconfigが実行されない | カスタムISO内の/etc/installerconfigのパスが正しくない | xorrisoの-mapオプションで配置先が/etc/installerconfigであることを確認 |
| Guest Additionsが動作しない | パッケージバージョンの不整合 | pkg install virtualbox-ose-additionsでインストールされるバージョンとホスト側VirtualBoxバージョンの対応を確認 |
| シャットダウン時にフリーズする | FreeBSD 15.0のEFIパワーオフの問題 | /boot/loader.confにhw.efi.poweroff=0を追記 |
5.2 VMの削除と再作成
REM VM登録解除とファイル削除
VBoxManage unregistervm "FreeBSD15" --delete
REM 仮想ディスクのみ削除(VMは残す場合)
VBoxManage closemedium disk "%USERPROFILE%\VirtualBox VMs\FreeBSD15\FreeBSD15.vdi" --delete