Windows環境でのVirtualBoxとUbuntu仮想マシンのセットアップ
Windows上でVirtualBoxとUbuntu 24.04仮想マシンを自動構築するバッチスクリプトとその説明である。
| 項目 | 内容 |
|---|---|
| 目的 | コマンドラインによる仮想環境構築の自動化を習得 |
| 使用ツール | winget(パッケージ管理)、VBoxManage(VM管理) |
| 構築環境 | VirtualBox + Ubuntu 24.04 LTS(メモリ8GB、ストレージ60GB) |
| 所要時間 | 約30分(ISOダウンロード時間を除く) |
| 前提 | Windows 11(64bit)、管理者権限、70GB以上の空き容量 |
スクリプト実行により、VirtualBoxのインストールからUbuntu仮想マシンの作成・設定までが一括で完了する。
1. 取り組み内容
- スクリプトを実行し、仮想マシンを作成
VBoxManage showvminfoで設定値を確認
この取組みで獲得できるスキル
- wingetによるソフトウェアの自動インストール
- VBoxManageコマンドによる仮想マシンの作成と設定
- バッチスクリプトによる環境構築の自動化
用語:
- winget:Windows標準のパッケージマネージャー。コマンドラインからソフトウェアのインストール・管理が可能
- VBoxManage:VirtualBoxのコマンドラインインターフェース。GUIを使わずに仮想マシンを管理可能
2. 前提条件
- Windows 11(64bit)
- 管理者権限
- インターネット接続
- 空きディスク容量:70GB以上
- 空きメモリ:8GB以上
- Hyper-Vが無効化されていること(有効な場合はWindowsの機能で無効化する)
3. コマンド解説
3.1 wingetオプション
| オプション | 意味 |
|---|---|
--scope machine |
全ユーザー向けにインストール |
--id |
パッケージの一意識別子を指定 |
-e |
完全一致検索 |
--silent |
UIを表示せず実行 |
--accept-source-agreements |
ソース契約に自動同意 |
--accept-package-agreements |
パッケージ契約に自動同意 |
3.2 VBoxManage modifyvm 主要オプション
| オプション | 設定内容 | 本スクリプトの値 |
|---|---|---|
--memory |
RAMサイズ(MB) | 8192 |
--cpus |
CPU数 | 2 |
--vram |
ビデオメモリ(MB) | 128 |
--firmware |
ファームウェア種別 | efi |
--paravirt-provider |
準仮想化プロバイダ | kvm(Linux向け) |
--graphicscontroller |
グラフィックコントローラ | vmsvga |
3.3 ストレージ構成
仮想マシン
├── SATA Controller(IntelAhci)
│ └── Port 0: 仮想HDD(60GB, VDI形式)
└── IDE Controller(PIIX4)
└── Port 0: DVDドライブ(Ubuntu ISO)
4. スクリプト全体
@echo off
REM ============================================================
REM VirtualBox + Ubuntu 24.04 仮想マシン自動構築スクリプト
REM 管理者権限で実行すること
REM ============================================================
REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 (
echo 管理者権限で実行してください
exit /b 1
)
REM VirtualBox をシステム領域にインストール
winget install --scope machine --id Oracle.VirtualBox -e --silent --accept-source-agreements --accept-package-agreements
REM VirtualBox Extension Pack をインストール
winget install --scope machine --id Oracle.VirtualBoxExtensionPack -e --silent --accept-source-agreements --accept-package-agreements
REM VBoxManage のパス設定
set "VBOX_PATH=C:\Program Files\Oracle\VirtualBox"
set "PATH=%PATH%;%VBOX_PATH%"
REM Ubuntu 24.04 LTS ISO ダウンロード設定
set "ISO_URL=https://releases.ubuntu.com/noble/ubuntu-24.04.3-desktop-amd64.iso"
set "ISO_DIR=%USERPROFILE%\VirtualBox VMs\ISO"
set "ISO_FILE=%ISO_DIR%\ubuntu-24.04.3-desktop-amd64.iso"
REM ISOディレクトリ作成
if not exist "%ISO_DIR%" mkdir "%ISO_DIR%"
REM ISOファイルが存在しない場合のみダウンロード
if exist "%ISO_FILE%" (
echo Ubuntu 24.04 LTS ISO は既に存在します:%ISO_FILE%
) else (
echo Ubuntu 24.04 LTS ISO をダウンロード中...
curl -L -o "%ISO_FILE%" "%ISO_URL%"
if errorlevel 1 (
echo ダウンロードに失敗しました
exit /b 1
)
echo ダウンロード完了
)
REM 仮想マシン設定
set "VM_NAME=Ubuntu2404"
set "VM_DIR=%USERPROFILE%\VirtualBox VMs\%VM_NAME%"
set "VDI_FILE=%VM_DIR%\%VM_NAME%.vdi"
set "MEMORY_MB=8192"
set "STORAGE_MB=61440"
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=Ubuntu_64 --register --basefolder="%USERPROFILE%\VirtualBox VMs"
REM 基本設定(メモリ8GB, CPU2コア)
VBoxManage modifyvm "%VM_NAME%" --memory=%MEMORY_MB% --cpus=2 --ioapic=on --acpi=on --pae=on
REM グラフィック設定
VBoxManage modifyvm "%VM_NAME%" --vram=128 --graphicscontroller=vmsvga
REM ファームウェア設定(EFI)
VBoxManage modifyvm "%VM_NAME%" --firmware=efi
REM パフォーマンス設定
VBoxManage modifyvm "%VM_NAME%" --paravirt-provider=kvm --nested-paging=on
REM 入力デバイス設定
VBoxManage modifyvm "%VM_NAME%" --mouse=usbtablet --keyboard=usb
REM ネットワーク設定(NAT)
VBoxManage modifyvm "%VM_NAME%" --nic1=nat --nic-type1=82540EM --cable-connected1=on
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 仮想ハードディスク作成(60GB)
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ドライブ接続
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="%ISO_FILE%"
REM ブート順序設定
VBoxManage modifyvm "%VM_NAME%" --boot1=dvd --boot2=disk --boot3=none --boot4=none
REM === 動作確認 ===
echo.
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"
echo.
echo セットアップ完了
echo VirtualBox GUI から仮想マシン "%VM_NAME%" を起動してください
確認すべき出力項目:
- Memory size: 8192MB
- Number of CPUs: 2
- Firmware: EFI
- VRAM size: 128MB
5. Ubuntu環境の追加設定
Ubuntuインストール完了後、Guest Additionsのインストールと日本語環境の構築を行う。
5.1 Guest Additionsのインストール
Guest Additionsは、ホストOSとゲストOS間の連携機能(クリップボード共有、画面解像度の自動調整、guestcontrolによるコマンド実行等)を提供する。
手順1:Ubuntu内で依存パッケージをインストール
Ubuntuのターミナルで以下を実行する:
sudo apt update
sudo apt install -y build-essential dkms linux-headers-$(uname -r)
手順2:Guest Additions ISOをマウント
Windowsのコマンドプロンプトで以下を実行する:
set "GA_ISO=C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso"
if not exist "%GA_ISO%" (
echo Guest Additions ISOが見つかりません:%GA_ISO%
exit /b 1
)
VBoxManage storageattach "Ubuntu2404" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium "%GA_ISO%"
手順3:Guest Additionsをインストール
Ubuntuのターミナルで以下を実行する:
sudo mount /dev/cdrom /mnt
sudo /mnt/VBoxLinuxAdditions.run
sudo reboot
5.2 日本語環境の構築
Guest Additionsインストール後、guestcontrolを使用してWindowsからUbuntuにスクリプトを転送し、日本語環境を構築できる。
手順1:日本語環境構築スクリプトを作成
以下の内容をC:\temp\setup-japanese.shとして保存する(フォルダがない場合は作成する):
#!/bin/bash
wget https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -P /tmp/
wget https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -P /tmp/
sudo cp /tmp/ubuntu-ja-archive-keyring.gpg /tmp/ubuntu-jp-ppa-keyring.gpg /usr/share/keyrings/
sudo wget https://www.ubuntulinux.jp/sources.list.d/noble.sources -O /etc/apt/sources.list.d/ubuntu-ja.sources
sudo apt update
sudo apt install -y ubuntu-defaults-ja
echo "日本語環境の構築が完了しました"
手順2:スクリプトをUbuntuに転送
Windowsのコマンドプロンプトで以下を実行する:
set "VM_NAME=Ubuntu2404"
set "GUEST_USER=your_username"
set "GUEST_PASS=your_password"
VBoxManage guestcontrol "%VM_NAME%" copyto --target-directory /home/%GUEST_USER%/ --username %GUEST_USER% --password %GUEST_PASS% "C:\temp\setup-japanese.sh"
手順3:Ubuntuでスクリプトを実行
Ubuntuのターミナルで以下を実行する:
chmod +x ~/setup-japanese.sh
~/setup-japanese.sh
注意事項:
GUEST_USERとGUEST_PASSはUbuntuインストール時に設定した値に変更すること- 仮想マシンが起動し、ログイン済みの状態でguestcontrolを実行すること
- スクリプト実行時にsudoパスワードの入力が求められる
6. トラブルシューティング
6.1 よくある問題と対処
| 症状 | 原因 | 対処 |
|---|---|---|
VBoxManageが認識されない |
PATHが通っていない | コマンドプロンプトを再起動、または絶対パスで実行 |
| ISOダウンロード失敗 | ネットワーク問題 | URLをブラウザで確認、手動ダウンロード |
| EFIブート失敗 | ファームウェア設定 | --firmware=bios に変更して試行 |
| Hyper-V競合エラー | Hyper-Vが有効 | Windowsの機能でHyper-Vを無効化 |
| guestcontrolが動作しない | Guest Additions未インストール | セクション6.1の手順を実行 |
6.2 VMの削除と再作成
REM VM登録解除とファイル削除
VBoxManage unregistervm "Ubuntu2404" --delete
REM 仮想ディスクのみ削除(VMは残す場合)
VBoxManage closemedium disk "%USERPROFILE%\VirtualBox VMs\Ubuntu2404\Ubuntu2404.vdi" --delete