Windows環境でのVirtualBoxとUbuntu仮想マシンのセットアップ
【概要】
Windows 11上にVirtualBoxとUbuntu 24.04 LTS仮想マシンをコマンド操作で構築する手順を説明する。GUI操作を用いず、コマンドプロンプトで実行するコマンド列により、同じ構成の仮想マシンを再現できる。
構築は3つのステップで行う。ステップ1ではwingetによりVirtualBoxをインストールし、ステップ2ではVBoxManageコマンドでCPU・メモリ・ストレージなどを設定してUbuntu仮想マシンを作成し、無人インストールによりUbuntuをインストールする。ステップ3ではGuest Additionsのインストールと日本語環境の構築を行う。
前提として、管理者権限、70GB以上の空きディスク容量(ISOファイル約6GBと仮想ハードディスク最大60GB)、物理メモリ16GB以上(仮想マシンに8GBを割り当てるため)が必要である。Hyper-Vが有効な環境では、VirtualBoxはWindowsハイパーバイザプラットフォーム経由で動作し、実行速度が低下することがある。
本ページの記述はVirtualBox 7.2系(2026年7月時点の最新版は7.2.14)とUbuntu 24.04.4 LTS(ISOは2026年2月公開、約6GB)を対象とする。
取り組み内容
- スクリプトを実行し、仮想マシンを作成する。
VBoxManage showvminfoで設定値を確認する。
用語
- winget:Windows標準のパッケージマネージャー。コマンドラインからソフトウェアのインストール・管理ができる。
- VBoxManage:VirtualBoxのコマンドラインインターフェース。GUIを使わずに仮想マシンを管理できる。
- Extension Pack:VirtualBox本体に機能(VRDPによるリモート表示、ホストのWebカメラのパススルー、ディスクイメージの暗号化など)を追加する拡張パック。USB 2.0(EHCI)およびUSB 3.0(xHCI)はVirtualBox 7.0以降は本体に統合されており、これらの利用にExtension Packは不要である。Oracleの評価・個人利用・教育利用ライセンス(PUEL)で配布されており、業務利用には別途ライセンスが必要である。
- Guest Additions:ゲストOS(仮想マシン側のOS)に入れる追加ソフト。画面解像度の自動調整やホストとゲストの間でのクリップボード共有などの統合機能を有効にする。
- 無人インストール(unattended install):あらかじめ指定した設定でOSのインストールを自動で進める方式。
VBoxManage unattended installは応答ファイルを収めた補助メディアを仮想マシンに接続してから起動する。Ubuntu Desktop 22.10以降はsubiquityのautoinstall(cloud-config形式の応答ファイル)が用いられる。--post-install-commandはインストール完了後にゲストOS内で実行する単一のコマンドを指定するオプションであり、応答ファイルのテンプレート側ではlog_command <コマンド>の形で実行される。&&、リダイレクト、引用符を含む複合コマンドは全体が1つのコマンド名として扱われるため指定できない。 - ディスプレイマネージャ:ログイン画面を表示しデスクトップセッションを開始するソフトウェア。Ubuntu Desktopの標準は
GDM3である。
ステップ1・ステップ2・ステップ3の構成
ステップ3:ゲストOS環境の構築(3章)
Guest Additions による統合 + 日本語環境の構築
─────────────────────────────────────────
ステップ2:仮想マシンの作成と Ubuntu のインストール(2章)
VBoxManage による仮想マシンの構成
─────────────────────────────────────────
ステップ1:VirtualBox のインストール(1章)
winget による VirtualBox のインストール
─────────────────────────────────────────
【その他情報】
| 項目 | 内容 |
|---|---|
| 目的 | コマンドラインによる仮想環境構築の自動化 |
| 使用ツール | winget(パッケージ管理)、VBoxManage(VM管理)、SSH(ゲストOS操作) |
| 構築環境 | VirtualBox 7.2系 + Ubuntu 24.04.4 LTS(メモリ8GB、ストレージ60GB) |
| 前提 | Windows 11(64bit)、管理者権限、70GB以上の空き容量、物理メモリ16GB以上 |
【目次】
【サイト内の関連情報】
- Windows の基本操作・コマンド操作・設定と、アプリ・開発環境・ローカル AI の導入
- Linux基本コマンドとその活用法:別ページで説明
1. ステップ1:VirtualBox のインストール
1.1 インストール
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
次のコマンドを実行する。Extension Pack は VirtualBox 本体と同一バージョンのものを取得する。
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 -fL --retry 3 -o "%EXTPACK_FILE%" "%EXTPACK_URL%"
echo y | VBoxManage extpack install --replace "%EXTPACK_FILE%"
del "%EXTPACK_FILE%"
上記はコマンドプロンプトに直接入力する形式である。バッチファイル(.bat)に保存して実行する場合は、for の変数を %a や %i から %%a、%%i に書き換える。echo y は Extension Pack のライセンス条項(PUEL)への同意に対する応答である。7.2.14 の場合、取得されるファイルは Oracle_VirtualBox_Extension_Pack-7.2.14.vbox-extpack である。なお、本ページで構成する範囲(USB、NAT、SSH)に限れば Extension Pack は必須ではない。
1.2 インストールの確認
- VirtualBox 本体の確認
<バージョン>r<リビジョン>の形式で表示されれば、本体がインストールされ、パスも通っている。VBoxManage --version
- Extension Pack の確認
インストール済みの拡張パック一覧が表示される。Usable が true であれば利用可能である。
VBoxManage list extpacks
2. ステップ2:仮想マシンの作成と Ubuntu のインストール
VBoxManageのオプションでCPU・メモリ・ストレージ・ネットワークなどを設定し、Ubuntu仮想マシンを作成する。
2.1 VBoxManage modifyvm 主要オプション
| オプション | 設定内容 | 本スクリプトの値 |
|---|---|---|
--memory |
RAMサイズ(MB) | 8192 |
--cpus |
CPU数 | 2 |
--vram |
ビデオメモリ(MB) | 128 |
--firmware |
ファームウェア種別 | efi |
--paravirt-provider |
準仮想化プロバイダ(ゲストとホストの連携方式) | kvm(Linux向け) |
--graphicscontroller |
グラフィックコントローラ | vmsvga |
2.2 ストレージ構成とネットワーク構成
仮想マシン
├── SATA Controller(IntelAhci)
│ └── Port 0: 仮想HDD(60GB, VDI形式)
└── IDE Controller(PIIX4)
└── Port 0: DVDドライブ(Ubuntu ISO → Guest Additions ISO → 空)
ネットワークはNATモードとし、ホストのポート2222をゲストのポート22(SSH)に転送する。ホストからの操作はこのSSH接続を通して行う。
2.3 仮想マシンの作成と Ubuntu のインストール
コマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。
次のコマンドを実行する。ここでは学習用に分かりやすさを優先し、ユーザー名とパスワードをスクリプト内に直接書いている。インストール後はゲストOSにログインしてパスワードを変更する。ISOファイルは約6GBあり、ダウンロードには回線速度に応じた時間がかかる。
REM Ubuntu 24.04 LTS ISO ダウンロード設定
set "ISO_URL=https://releases.ubuntu.com/noble/ubuntu-24.04.4-desktop-amd64.iso"
set "ISO_DIR=%USERPROFILE%\VirtualBox VMs\ISO"
set "ISO_FILE=%ISO_DIR%\ubuntu-24.04.4-desktop-amd64.iso"
REM ISOディレクトリ作成
if not exist "%ISO_DIR%" mkdir "%ISO_DIR%"
REM ISOファイルが存在しない場合のみダウンロード(約6GB)
if exist "%ISO_FILE%" (
echo Ubuntu 24.04 LTS ISO は既に存在します:%ISO_FILE%
) else (
echo Ubuntu 24.04 LTS ISO をダウンロード中...
curl -fL --retry 3 -C - -o "%ISO_FILE%" "%ISO_URL%"
)
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"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
set "SSH_GUEST_PORT=22"
REM ホストキーの警告・エラーを回避するためのSSHオプション
set "SSH_OPTS=-o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL"
REM 同名VM存在確認
VBoxManage showvminfo "%VM_NAME%" >nul 2>&1
if not errorlevel 1 (
echo 仮想マシン "%VM_NAME%" は既に存在します
echo 削除する場合: VBoxManage unregistervm "%VM_NAME%" --delete
)
REM 仮想マシンディレクトリ作成
if not exist "%VM_DIR%" mkdir "%VM_DIR%"
REM 仮想マシン作成・登録
VBoxManage createvm --name="%VM_NAME%" --ostype=Ubuntu24_LTS_64 --register --basefolder="%USERPROFILE%\VirtualBox VMs"
REM 基本設定(メモリ8GB, CPU2コア)
VBoxManage modifyvm "%VM_NAME%" --memory=%MEMORY_MB% --cpus=2 --ioapic=on --acpi=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 / virtio)
VBoxManage modifyvm "%VM_NAME%" --nic1=nat --nic-type1=virtio --cable-connected1=on
REM SSHポートフォワーディング設定(ホスト2222 → ゲスト22)
VBoxManage modifyvm "%VM_NAME%" --nat-pf1="ssh,tcp,,%SSH_HOST_PORT%,,%SSH_GUEST_PORT%"
REM オーディオ設定(--audio は非推奨のため --audio-driver と --audio-enabled を用いる)
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設定(USB 2.0/EHCI・USB 3.0/xHCI は VirtualBox 7.0 以降は本体に統合されており Extension Pack は不要)
VBoxManage modifyvm "%VM_NAME%" --usb-ohci=on --usb-ehci=on
REM RTC設定(時計をUTCで扱う)
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 === SSH鍵の作成(ゲストへの登録はインストール完了後に 2.4 節で行う) ===
if not exist "%USERPROFILE%\.ssh" mkdir "%USERPROFILE%\.ssh"
if not exist "%USERPROFILE%\.ssh\id_ed25519" (
ssh-keygen -t ed25519 -f "%USERPROFILE%\.ssh\id_ed25519" -N ""
)
REM 無人インストール設定・起動
REM --locale は autoinstall の locale: にそのまま入るため ja_JP.UTF-8 の形式で指定する
REM --time-zone は指定しない(--rtc-use-utc=on のとき応答ファイルの timezone: が Etc/UTC に固定され無視される)
REM タイムゾーンはインストール後に timedatectl で設定する(3.2 節)
REM --post-install-command には単一のコマンドのみ指定できる(&& やリダイレクトは使えない)
VBoxManage unattended install "%VM_NAME%" ^
--iso="%ISO_FILE%" ^
--user=%USER_NAME% ^
--password=%USER_PASSWORD% ^
--full-user-name="%USER_NAME%" ^
--locale=ja_JP.UTF-8 ^
--country=JP ^
--hostname=ubuntu2404.localdomain ^
--no-install-additions ^
--post-install-command="apt-get install -y openssh-server" ^
--start-vm=separate
echo 無人インストールが開始されました
インストールの進行状況は、別ウィンドウで開く仮想マシンの画面で確認できる。--no-install-additions を指定しているのは、Guest Additions のインストールをステップ3で行うためである。--ostype に指定できる識別子の一覧は VBoxManage list ostypes で確認できる。--post-install-command が失敗した場合(パッケージ一覧が取得できていない場合など)は、仮想マシンの画面から直接ログインし、sudo apt-get update に続けて sudo apt-get install -y openssh-server を実行する。
2.4 インストール完了の待機、SSH鍵の登録と自動ログインの設定
インストールが完了するとVMは自動的に再起動し、openssh-server が起動する。以下では、ホスト側のポート2222が応答することをもってインストール完了を判定する。公開鍵の登録時に一度だけ、ゲストOSのパスワード(changeme)の入力を求められる。
コマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。
REM === 変数の設定 ===
set "VM_NAME=Ubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
REM ホストキーの警告・エラーを回避するためのSSHオプション
set "SSH_OPTS=-o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL"
REM === SSH ポートが応答するまで待機 ===
echo SSH ポートを待機中 ...
powershell -NoProfile -Command "$port=%SSH_HOST_PORT%; for($i=1; $i -le 180; $i++){ if(Test-NetConnection -ComputerName '127.0.0.1' -Port $port -InformationLevel Quiet){ Write-Host 'SSH ポートが応答しました'; exit 0 }; Write-Host 'SSH 未応答 ... 10 秒待機します'; Start-Sleep -Seconds 10 }; exit 1"
REM === 公開鍵の登録(ここで一度だけパスワードの入力を求められる) ===
type "%USERPROFILE%\.ssh\id_ed25519.pub" | ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
REM === 自動ログイン設定(GDM3) ===
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo '%USER_PASSWORD%' | sudo -S sed -i -e 's/^#.*AutomaticLoginEnable.*/AutomaticLoginEnable=true/' -e 's/^#.*AutomaticLogin\s*=.*/AutomaticLogin=%USER_NAME%/' /etc/gdm3/custom.conf" <nul
REM === インストール ISO の取り外し ===
VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive
REM === システムの更新 ===
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo '%USER_PASSWORD%' | sudo -S sh -c 'apt-get update && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y'" <nul
echo === 動作確認 ===
VBoxManage list vms
VBoxManage showvminfo "%VM_NAME%" | findstr /C:"Memory size" /C:"Number of CPUs" /C:"Firmware" /C:"VRAM size"
確認すべき出力項目:
- Memory size: 8192MB
- VRAM size: 128MB
- Firmware: EFI
- Number of CPUs: 2
3. ステップ3:ゲストOS環境の構築
Ubuntuのインストール完了後、Guest Additionsによるホストとゲストの間の統合と、日本語環境の構築を行う。
3.1 Guest Additions のインストール
Guest Additionsにより、画面解像度の自動調整、クリップボード共有、共有フォルダ、マウス統合、時刻同期が利用可能となる。カーネルモジュールのビルドに build-essential、dkms、カーネルヘッダが必要である。
コマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。
set "VM_NAME=Ubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
REM ホストキーの警告・エラーを回避するためのSSHオプション
set "SSH_OPTS=-o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL"
REM 依存パッケージのインストール(ビルドに必要なツールとカーネルヘッダ)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo '%USER_PASSWORD%' | sudo -S sh -c 'apt-get update && apt-get install -y build-essential dkms linux-headers-$(uname -r)'" <nul
REM Guest Additions ISOをマウント(--medium additions でVBoxが自動解決。VirtualBox 7 系で有効)
VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium additions
REM Guest Additionsのビルド・インストール
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo '%USER_PASSWORD%' | sudo -S sh -c 'mount /dev/cdrom /mnt && /mnt/VBoxLinuxAdditions.run --nox11 && umount /mnt'" <nul
REM Guest Additions ISO の取り外し
VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive
REM 再起動(ゲストOS側から reboot を実行する)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo '%USER_PASSWORD%' | sudo -S reboot" <nul
REM === 再起動後の SSH 接続待機 ===
timeout /t 30 /nobreak
set "SSHGA_DONE=" & for /L %i in (1,1,60) do @(if not defined SSHGA_DONE (timeout /t 10 /nobreak >nul & ssh -o BatchMode=yes -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo SSH_OK" <nul 2>nul | findstr "SSH_OK" >nul && (echo Guest Additions インストール済みの VM が起動しました & set "SSHGA_DONE=1") || (echo SSH 未応答 ... 10 秒待機します)))
REM インストールの確認(バージョンが表示される)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "VBoxControl --version" <nul
3.2 日本語環境の構築
ロケール、日本語フォント、日本語入力を設定する。本ページの対象は Ubuntu Desktop(GNOME)であり、入力メソッドフレームワークは Fcitx5、日本語変換エンジンは Mozc を用いる。Ubuntu 24.04 の既定の入力メソッドフレームワークは IBus であるため、im-config で Fcitx5 に切り替える。入力の切替キーは半角/全角キー(Zenkaku_Hankaku)と Alt+grave とする。スクリプト中でホームディレクトリ配下を英語名(~/Documents 等)で参照するため、XDGユーザーディレクトリは英語名に固定する。
コマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。
set "VM_NAME=Ubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
REM ホストキーの警告・エラーを回避するためのSSHオプション
set "SSH_OPTS=-o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL"
REM 日本語ロケール、タイムゾーン、日本語フォント、Fcitx5 と Mozc
REM (タイムゾーンは無人インストール時に Etc/UTC となるため、ここで Asia/Tokyo に設定する)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo '%USER_PASSWORD%' | sudo -S sh -c 'locale-gen ja_JP.UTF-8 && update-locale LANG=ja_JP.UTF-8 && timedatectl set-timezone Asia/Tokyo && apt-get install -y language-pack-ja fonts-noto-cjk fonts-noto-cjk-extra fonts-vlgothic fcitx5 fcitx5-mozc fcitx5-config-qt fcitx5-frontend-qt5 fcitx5-frontend-qt6 fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 im-config'" <nul
REM XDG ユーザーディレクトリを英語名に固定
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "LC_ALL=C xdg-user-dirs-update --force" <nul
REM 入力メソッドフレームワークを Fcitx5 に切り替え(既定は IBus)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "im-config -n fcitx5" <nul
REM 入力メソッドの環境変数設定
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "mkdir -p ~/.config/environment.d && printf 'GTK_IM_MODULE=fcitx\nQT_IM_MODULE=fcitx\nXMODIFIERS=@im=fcitx\n' > ~/.config/environment.d/im.conf && printf 'export GTK_IM_MODULE=fcitx\nexport QT_IM_MODULE=fcitx\nexport XMODIFIERS=@im=fcitx\n' > ~/.xprofile" <nul
REM Fcitx5 のトリガーキー設定(半角/全角キーと Alt+`)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "mkdir -p ~/.config/fcitx5 && printf '[Hotkey/TriggerKeys]\n0=Zenkaku_Hankaku\n1=Alt+grave\n\n[Hotkey/EnumerateForwardKeys]\n0=Control+Shift_R\n\n[Hotkey/EnumerateBackwardKeys]\n0=Control+Shift_L\n\n[Hotkey/PrevPage]\n0=Up\n\n[Hotkey/NextPage]\n0=Down\n\n[Behavior]\nActiveByDefault=False\nShowInputMethodInformation=True\nDefaultPageSize=5\n' > ~/.config/fcitx5/config" <nul
REM Fcitx5 のプロファイル設定(キーボードと Mozc)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '[Groups/0]\nName=Default\nDefault Layout=jp\nDefaultIM=mozc\n\n[Groups/0/Items/0]\nName=keyboard-jp\nLayout=\n\n[Groups/0/Items/1]\nName=mozc\nLayout=\n\n[GroupOrder]\n0=Default\n' > ~/.config/fcitx5/profile" <nul
REM Fcitx5 の自動起動設定
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "mkdir -p ~/.config/autostart && printf '[Desktop Entry]\nType=Application\nName=Fcitx5\nExec=fcitx5 -d\n' > ~/.config/autostart/fcitx5.desktop" <nul
REM 再起動(設定を反映)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo '%USER_PASSWORD%' | sudo -S reboot" <nul
REM === 再起動後の SSH 接続待機 ===
timeout /t 30 /nobreak
set "SSHJA_DONE=" & for /L %i in (1,1,60) do @(if not defined SSHJA_DONE (timeout /t 10 /nobreak >nul & ssh -o BatchMode=yes -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo SSH_OK" <nul 2>nul | findstr "SSH_OK" >nul && (echo 日本語環境の構築が完了しました & set "SSHJA_DONE=1") || (echo SSH 未応答 ... 10 秒待機します)))
REM ロケールの確認(ja_JP.UTF-8 が表示される)
ssh %SSH_OPTS% -p %SSH_HOST_PORT% %USER_NAME%@localhost "locale" <nul
再起動後、半角/全角キーで日本語入力に切り替わる。設定が反映されない場合は、ゲストOSにログインした状態で fcitx5-diagnose を実行し、入力メソッドフレームワークが Fcitx5 になっているか、環境変数が設定されているかを確認する。
4. トラブルシューティング
4.1 よくある問題と対処
| 症状 | 原因 | 対処 |
|---|---|---|
VBoxManageが認識されない |
PATHが通っていない | コマンドプロンプトを再起動、または絶対パス "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" で実行する。 |
| Extension Pack のインストール失敗 | 本体とバージョンが一致していない | VBoxManage --version の出力から得たバージョンでURLを組み立て直す。7.2.14 では Oracle_VirtualBox_Extension_Pack-7.2.14.vbox-extpack が配布されている。 |
| Hyper-V競合エラー、実行速度の低下 | Hyper-V やメモリ整合性などによりハイパーバイザが動作中 | 管理者権限のコマンドプロンプトで bcdedit /set hypervisorlaunchtype off を実行し、Windowsを再起動する。「Windows の機能の有効化または無効化」でHyper-Vと仮想マシンプラットフォームのチェックを外す方法もある。 |
| SSH 接続がタイムアウトする | ポートフォワーディング未設定、または SSH サーバ未起動 | VBoxManage showvminfo "Ubuntu2404" --machinereadable | findstr natpf で設定を確認。VM 内で sudo systemctl status ssh を確認する。 |
| SSH ホスト鍵エラー | VM 再作成による鍵の不一致 | ssh-keygen -R "[localhost]:2222" で既知のホスト鍵を削除する。 |
| 半角/全角キーで日本語入力に切り替わらない | 入力メソッドフレームワークが Fcitx5 になっていない、または Mozc がプロファイルに登録されていない | im-config -m で現在のフレームワークを確認し、~/.config/fcitx5/profile に mozc が含まれることを確認する。fcitx5-diagnose の出力も参考になる。 |
4.2 VMの削除と再作成
REM VM登録解除とファイル削除
VBoxManage unregistervm "Ubuntu2404" --delete
REM 仮想ディスクのみ削除(VMは残す場合)
VBoxManage closemedium disk "%USERPROFILE%\VirtualBox VMs\Ubuntu2404\Ubuntu2404.vdi" --delete
4.3 VM の管理コマンド
| 操作 | コマンド |
|---|---|
| VM を画面付きで起動 | VBoxManage startvm "Ubuntu2404" --type gui |
| VM を画面なしで起動 | VBoxManage startvm "Ubuntu2404" --type headless |
| VM の電源を切る(ACPI シャットダウン) | VBoxManage controlvm "Ubuntu2404" acpipowerbutton |
| VM を強制停止 | VBoxManage controlvm "Ubuntu2404" poweroff |
| スナップショットの作成 | VBoxManage snapshot "Ubuntu2404" take "初期設定完了" |
| スナップショットの復元 | VBoxManage snapshot "Ubuntu2404" restore "初期設定完了" |
| SSH 接続 | ssh -p 2222 myuser@localhost |