Windows 11 上の VirtualBox で Lubuntu 24.04 LTS 仮想マシンを構築し Windows XP 風デザインを適用する手順書

本文書は,Windows 11 ホスト上の Oracle VirtualBox において,コマンドラインインターフェース(CLI)のみで Lubuntu 24.04 LTS 仮想マシンを自動構築し,Windows XP 日本語版風の画面デザインを適用する手順を記述したものである。

項目内容
目的コマンドラインによる Lubuntu 仮想マシンの自動構築と Windows XP 風デザインの適用
使用ツールwinget(パッケージ管理),VBoxManage(VM 管理),SSH(ゲスト OS 操作)
構築環境VirtualBox 7.2.6 + Lubuntu 24.04 LTS(メモリ 8 GB,ストレージ 60 GB)
所要時間約 60~90 分(ISO ダウンロード時間を除く)
前提Windows 11(64bit),管理者権限,80 GB 以上の空き容量,10 GB 以上の空きメモリ

第1章 概要

1.1 ゴール

本手順書のゴールは以下のとおりである。

項目内容
仮想化基盤Oracle VirtualBox 7.2.6(Windows 11 ホスト上)
ゲスト OSLubuntu 24.04 LTS(LXQt デスクトップ環境)
構築方式VBoxManage CLI による自動構築(GUI 操作不要)
デザインWindows XP 日本語版風の画面デザイン(Luna テーマ,タスクバー,アイコン,壁紙)
日本語環境Fcitx5 + Mozc による日本語入力。半角/全角キーおよび Alt+` で切替。Ctrl+Space は使用しない

構築方式の詳細として,Ubuntu Desktop 24.04 LTS の ISO イメージを用いて VBoxManage unattended install で自動インストールを行い,その後 SSH 経由で lubuntu-desktop メタパッケージをインストールし,GNOME 関連パッケージを削除することで LXQt デスクトップ環境のみの構成とする。Lubuntu 固有の Calamares インストーラは VBoxManage unattended install に対応していないため,この方式を採用する。

1.2 用語

用語説明
wingetWindows 標準のパッケージマネージャ。コマンドラインからソフトウェアのインストールと管理を行う
VBoxManageVirtualBox のコマンドラインインターフェース。GUI を使わずに仮想マシンの作成・設定・管理を行う
SSH(Secure Shell)ネットワーク経由でリモートマシンに安全に接続するプロトコル。本手順書ではホストからゲスト OS を操作するために使用する
NAT(Network Address Translation)VirtualBox のネットワークモードの一つ。ゲスト OS はホストのネットワーク接続を共有してインターネットに接続する。ポートフォワーディングによりホストからゲストへの接続が可能となる

1.3 前提条件

項目要件
ホスト OSWindows 11(22H2 以降,64bit)
管理者権限VirtualBox のインストールおよび winget の実行に必要
空きディスク容量80 GB 以上(ISO: 約 6.2 GB,VDI: 最大 60 GB,その他一時ファイル)
空きメモリ10 GB 以上(ホスト OS 用 + VM 用 8 GB)
Hyper-V無効化を推奨(VirtualBox との競合によるパフォーマンス低下を避けるため。VirtualBox 7.2 では Hyper-V 有効環境でも動作するが,パフォーマンスが低下する場合がある)
インターネット接続ISO のダウンロードおよびパッケージのインストールに必要
SSH クライアントWindows 11 標準の OpenSSH クライアント(ssh コマンド)を使用

1.4 使用するソフトウェアとバージョン

ソフトウェアバージョン用途
Oracle VirtualBox7.2.6仮想化プラットフォーム
VirtualBox Extension Pack7.2.6USB 2.0/3.0,リモートデスクトップ等の拡張機能
Ubuntu Desktop ISO24.04.4 LTS(Noble Numbat)ベース OS のインストールメディア
lubuntu-desktop24.04 LTSLXQt デスクトップ環境メタパッケージ
wingetWindows 標準VirtualBox のインストール

1.5 ネットワーク構成

VM のネットワークは NAT モードを使用する。ホストから VM への SSH 接続は,以下のポートフォワーディングにより行う。

方向プロトコルホスト側ポートゲスト側ポート用途
ホスト → ゲストTCP222222SSH 接続

1.6 作業の全体フロー

ステップ内容
1VirtualBox と Extension Pack のインストール第2章
2VM の作成と Ubuntu Desktop の無人インストール第3章
3lubuntu-desktop のインストールと GNOME の削除(SSH 経由)第3章
4Guest Additions のインストール(SSH 経由)第4章
5日本語環境の構築(SSH 経由)第5章
6Windows XP 風デザインの適用(SSH 経由)第6章

第2章 環境構築

2.1 VirtualBox のインストール

管理者権限のコマンドプロンプトで以下のコマンドを実行する。管理者権限のコマンドプロンプトを起動するには,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%"

インストールされた VirtualBox のバージョンを確認する。

VBoxManage --version

出力例は 7.2.6r172322 のような形式である。表示されれば,本体が正しくインストールされ PATH も設定されている。

2.2 Extension Pack のインストール

VBoxManage の出力からバージョン番号を抽出し,対応する Extension Pack をダウンロードしてインストールする。

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%"

インストールされたExtension Pack の確認

以下のコマンドで Extension Pack が正しくインストールされていることを確認する。

VBoxManage list extpacks の出力において,Usable が true であれば Extension Pack は正常に動作している。

VBoxManage list extpacks

補足: Extension Pack のダウンロード URL は https://download.virtualbox.org/virtualbox/<バージョン>/Oracle_VirtualBox_Extension_Pack-<バージョン>.vbox-extpack の形式である。バージョン 7.2.6 の場合,URL は https://download.virtualbox.org/virtualbox/7.2.6/Oracle_VirtualBox_Extension_Pack-7.2.6.vbox-extpack となる。

第3章 VM 作成と OS インストール

3.1 概要

本章では,以下の4段階で Lubuntu 24.04 LTS 相当の仮想マシンを構築する。

段階内容方式
第1段階VM の作成と設定VBoxManage createvm / modifyvm
第2段階Ubuntu Desktop 24.04 LTS の無人インストールVBoxManage unattended install
第3段階lubuntu-desktop のインストールSSH 経由でのパッケージインストール
第4段階GNOME 関連パッケージの削除と初期設定SSH 経由でのパッケージ削除

Ubuntu Desktop ISO を用いる理由は,Lubuntu のインストーラ(Calamares)が VBoxManage unattended install に対応していないためである。VBoxManage unattended install は,ISO を自動検出して適切な無人インストール方式を選択するため,外部の HTTP サーバを必要としない。Ubuntu Desktop インストール後に lubuntu-desktop メタパッケージを追加インストールし,GNOME 関連パッケージを削除することで,Lubuntu と同等の LXQt デスクトップ環境を得る。

3.2 ストレージ構成

VM のストレージは以下の構成とする。

仮想マシン(lubuntu2404)
├── SATA Controller(IntelAhci)
│   └── Port 0: 仮想 HDD(60 GB,VDI 形式)
└── IDE Controller(PIIX4)
    └── Port 0: DVD ドライブ(Ubuntu Desktop ISO → Guest Additions ISO → 空)

IDE Controller の DVD ドライブには,インストール時に Ubuntu Desktop ISO をマウントし,Guest Additions のインストール時に Guest Additions ISO に差し替え,作業完了後に取り外す。

3.3 ISO イメージのダウンロード、VM の作成と設定、インストールの実行

ISO ファイルのサイズは約 6.2 GB である。ダウンロードにはインターネット接続速度に応じた時間を要する。

VBoxManage unattended install コマンドにより,Ubuntu Desktop 24.04 LTS の無人インストールを実行する。--post-install-command オプションで openssh-server をインストールし,インストール完了後に SSH 接続を可能にする。

REM === 基本設定 ===
set "VM_NAME=lubuntu2404"
set "OS_TYPE=Ubuntu_64"
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 === VM リソース設定 ===
set "RAM_MB=8192"
set "CPU_COUNT=2"
set "VRAM_MB=128"
set "DISK_MB=61440"
set "GRAPHICS=vmsvga"

REM === ネットワーク設定 ===
set "SSH_HOST_PORT=2222"
set "SSH_GUEST_PORT=22"

REM === ユーザー設定 ===
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "VM_NAME=lubuntu2404"

REM === VM ディレクトリ設定 ===
set "VM_DIR=%USERPROFILE%\VirtualBox VMs\%VM_NAME%"
set "VDI_FILE=%VM_DIR%\%VM_NAME%.vdi"

REM === ISO ディレクトリの作成 ===
if not exist "%ISO_DIR%" mkdir "%ISO_DIR%"

REM === Ubuntu Desktop 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 === 同名 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 === VM ディレクトリの作成 ===
if not exist "%VM_DIR%" mkdir "%VM_DIR%"

REM === VM の作成・登録 ===
VBoxManage createvm --name="%VM_NAME%" --ostype=%OS_TYPE% --register --basefolder="%USERPROFILE%\VirtualBox VMs"

REM === 基本設定(メモリ 8GB,CPU 2コア) ===
VBoxManage modifyvm "%VM_NAME%" --memory=%RAM_MB% --cpus=%CPU_COUNT% --ioapic=on --acpi=on

REM === グラフィック設定 ===
VBoxManage modifyvm "%VM_NAME%" --vram=%VRAM_MB% --graphicscontroller=%GRAPHICS%

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 === オーディオ設定 ===
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=%DISK_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 === 無人インストール設定・起動 ===
VBoxManage unattended install "%VM_NAME%" ^
    --iso="%ISO_FILE%" ^
    --user=%USER_NAME% ^
    --password=%USER_PASSWORD% ^
    --full-user-name="%USER_NAME%" ^
    --locale=ja_JP ^
    --country=JP ^
    --time-zone=Asia/Tokyo ^
    --hostname=%VM_NAME%.localdomain ^
    --no-install-additions ^
    --post-install-command="apt-get install -y openssh-server" ^
    --start-vm=separate

echo.
echo 無人インストールが開始されました
echo インストール完了まで 15~30 分程度を要します

補足: --no-install-additions を指定しているのは,Guest Additions のインストールを第4章で個別に行うためである。--post-install-command は,インストール完了後にゲスト OS 内で実行されるコマンドを指定するオプションである。ここでは openssh-server をインストールすることで,以降の SSH 経由での作業を可能にする。

3.4 インストール完了の待機、sudo 権限の付与と自動ログインの設定

Ubuntu Desktop のインストールは,VM のリソースとインターネット接続速度に依存するが,通常 15~30 分程度で完了する。インストール完了後,VM は自動的に再起動する。以下のコマンドで,VM の再起動を検知してインストール完了を判定する。

REM === インストール完了の待機 ===
set "VM_NAME=lubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"

set "INSTALL_DONE=" & for /L %i in (1,1,60) do @(if not defined INSTALL_DONE (timeout /t 30 /nobreak >nul & VBoxManage guestproperty get "%VM_NAME%" "/VirtualBox/VMInfo/ResetCounter" 2>nul | findstr /c:"Value: 1" >nul && (echo インストールが完了しました(VM が再起動しました)& set "INSTALL_DONE=1") || (echo インストール中 ... 30 秒待機します)))

REM === SSH 接続が可能になるまで待機 ===
echo SSH 接続を待機中 ...
set "SSH_DONE=" & for /L %i in (1,1,60) do @(if not defined SSH_DONE (timeout /t 10 /nobreak >nul & ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo SSH_OK" 2>nul | findstr "SSH_OK" >nul && (echo SSH 接続が確立されました & set "SSH_DONE=1") || (echo SSH 未応答 ... 10 秒待機します)))

ssh-keygen -t ed25519 -f "%USERPROFILE%\.ssh\id_ed25519" -N ""

REM === sudo 権限の付与 ===
type "%USERPROFILE%\.ssh\id_ed25519.pub" | ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

REM === 自動ログイン設定(GDM3) ===
echo %USER_PASSWORD%| ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "tr -d '\r' | sudo -S sed -i -e 's/^#.*AutomaticLoginEnable.*/AutomaticLoginEnable=true/' -e 's/^#.*AutomaticLogin =.*/AutomaticLogin=%USER_USER%/' /etc/gdm3/custom.conf"

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"

3.5 lubuntu-desktop のインストール、GNOME 関連パッケージの削除、VM の再起動とデスクトップ環境の確認

SSH 経由で Ubuntu Desktop に接続し,lubuntu-desktop メタパッケージをインストールする。このパッケージにより,LXQt デスクトップ環境,Openbox ウィンドウマネージャ,PCManFM-Qt ファイルマネージャ,SDDM ディスプレイマネージャ,その他 Lubuntu 標準のアプリケーション群がインストールされる。

Ubuntu Desktop に付属する GNOME デスクトップ環境と GDM3 ディスプレイマネージャを削除し,LXQt + SDDM のみの構成とする。

補足: lubuntu-desktop パッケージのインストールには,インターネット接続速度と VM のスペックに依存するが,通常 15~30 分程度を要する。DEBIAN_FRONTEND=noninteractive 環境変数により,インストール中の対話的プロンプトを抑制する。

補足: apt-get purge はパッケージの設定ファイルも含めて完全に削除する。apt-get autoremove により,削除されたパッケージに依存していた不要パッケージも自動的に削除される。この操作で数 GB のディスク容量が回復する。SDDM が既にインストール・設定済みであるため,GDM3 を削除してもディスプレイマネージャは正常に動作する。

REM === システムの更新 ===
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"

ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y"

REM === lubuntu-desktop のインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lubuntu-desktop"

REM === SDDM をデフォルトのディスプレイマネージャに設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo DEBIAN_FRONTEND=noninteractive dpkg-reconfigure sddm"

echo lubuntu-desktop のインストールが完了しました

REM === GNOME 関連パッケージの削除 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo DEBIAN_FRONTEND=noninteractive apt-get purge -y ubuntu-desktop ubuntu-desktop-minimal gnome-shell gdm3 gnome-session gnome-control-center gnome-terminal nautilus ubuntu-session"

REM === 不要になった依存パッケージの自動削除 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo apt-get autoremove -y && sudo apt-get autoclean -y"

echo GNOME 関連パッケージの削除が完了しました

REM === VM の再起動 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo reboot"

echo VM を再起動中です。再起動後,LXQt デスクトップが利用可能になります
echo 再起動完了を待機中 ...

REM === 再起動後の SSH 接続待機 ===
timeout /t 30 /nobreak
set "SSH2_DONE=" & for /L %i in (1,1,60) do @(if not defined SSH2_DONE (timeout /t 10 /nobreak >nul & ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo SSH_OK" 2>nul | findstr "SSH_OK" >nul && (echo LXQt デスクトップ環境で VM が起動しました & set "SSH2_DONE=1") || (echo SSH 未応答 ... 10 秒待機します)))

以上で,Ubuntu Desktop をベースとした Lubuntu 24.04 LTS 相当の仮想マシンが構築される。VM を GUI モードで起動するには,以下のコマンドを使用する。

VBoxManage startvm "%VM_NAME%" --type gui

SDDM ログイン画面が表示され,ユーザー名 myuser,パスワード changeme でログインすると,LXQt デスクトップが表示される。

以下のコマンドで,VM の設定値が意図どおりであることを確認する。

REM === VM の設定値確認 ===
VBoxManage showvminfo "%VM_NAME%" | findstr /C:"Memory size" /C:"Number of CPUs" /C:"Firmware" /C:"VRAM size"

確認すべき出力項目は以下のとおりである。

項目期待値
Memory size8192 MB
VRAM size128 MB
FirmwareEFI
Number of CPUs2

第4章 Guest Additions のインストール

4.1 概要

VirtualBox Guest Additions は,ゲスト OS にインストールするドライバおよびユーティリティのセットである。Guest Additions をインストールすることで,以下の機能が利用可能となる。

機能説明
画面解像度の自動調整VM ウィンドウのリサイズに応じてゲスト OS の画面解像度が自動調整される
共有クリップボードホストとゲスト間でテキストのコピー&ペーストが可能となる
共有フォルダホストのフォルダをゲスト OS からマウントできる
マウス統合ホストとゲスト間でマウスカーソルがシームレスに移動する
時刻同期ホストとゲストの時刻が自動同期される

4.2 Guest Additions のインストール手順

SSH 経由でゲスト OS に接続し,以下のコマンドを実行する。

REM === ビルドに必要なパッケージのインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo apt-get install -y build-essential dkms linux-headers-$(uname -r)"

REM === Guest Additions ISO のマウント ===
VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium additions

REM === Guest Additions のビルド・インストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo mount /dev/cdrom /mnt && sudo /mnt/VBoxLinuxAdditions.run --nox11 && sudo umount /mnt"

REM === Guest Additions ISO の取り外し ===
VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive

REM === VM の再起動 ===
VBoxManage controlvm "%VM_NAME%" acpipowerbutton

echo Guest Additions のインストールが完了しました。VM を再起動中です。

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 StrictHostKeyChecking=no -o ConnectTimeout=5 -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo SSH_OK" 2>nul | findstr "SSH_OK" >nul && (echo Guest Additions インストール済みの VM が起動しました & set "SSHGA_DONE=1") || (echo SSH 未応答 ... 10 秒待機します)))

補足: VBoxManage storageattach ... --medium additions は,VirtualBox に同梱されている Guest Additions ISO(VBoxGuestAdditions_7.2.6.iso)を自動的に IDE DVD ドライブにマウントするショートカットである。

4.3 Guest Additions のインストール確認

REM === Guest Additions のバージョン確認 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "VBoxControl --version"

補足: 共有クリップボードおよびドラッグ&ドロップは,3.5 節の VM 設定時に --clipboard-mode=bidirectional および --drag-and-drop=bidirectional オプションで既に有効化されている。設定を変更する場合は,VM を停止した状態で VBoxManage modifyvm コマンドを実行する。

第5章 日本語環境の構築

5.1 概要

本章では,Lubuntu 仮想マシンに日本語入力環境を構築する。使用する入力メソッドフレームワークは Fcitx5,日本語変換エンジンは Mozc である。日本語入力の切替キーは半角/全角キー(Zenkaku_Hankaku)および Alt+`(Alt+grave)とし,Ctrl+Space は使用しない。

5.2 日本語ロケールとタイムゾーンの設定

REM === 日本語ロケールの生成と設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo locale-gen ja_JP.UTF-8 && sudo update-locale LANG=ja_JP.UTF-8"

REM === タイムゾーンの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo timedatectl set-timezone Asia/Tokyo"

5.3 日本語フォントのインストール

REM === 日本語フォントのインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo apt-get install -y fonts-noto-cjk fonts-noto-cjk-extra fonts-vlgothic fonts-ipafont-gothic fonts-ipafont-mincho"

インストールされる主要フォントは以下のとおりである。

パッケージフォント名用途
fonts-noto-cjkNoto Sans CJK JP / Noto Serif CJK JP汎用日本語フォント(ゴシック体・明朝体)
fonts-vlgothicVL ゴシックプログラミングおよび一般用ゴシック体
fonts-ipafont-gothicIPA ゴシックIPA 提供のゴシック体
fonts-ipafont-minchoIPA 明朝IPA 提供の明朝体

5.4 Fcitx5 と Mozc のインストール

REM === Fcitx5 と Mozc のインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo apt-get install -y fcitx5 fcitx5-mozc fcitx5-config-qt fcitx5-frontend-qt5 fcitx5-frontend-gtk3 fcitx5-frontend-gtk4"

5.5 Fcitx5 の環境変数設定

Fcitx5 をすべてのアプリケーションで使用するため,環境変数を設定する。

REM === 環境変数の設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.config/environment.d && cat > ~/.config/environment.d/im.conf << 'IMEOF'
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
IMEOF"

5.6 Fcitx5 のトリガーキー設定

半角/全角キー(Zenkaku_Hankaku)および Alt+`(Alt+grave)を入力切替キーとして設定し,Ctrl+Space を除去する。

REM === Fcitx5 設定ディレクトリの作成 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "mkdir -p ~/.config/fcitx5"

REM === Fcitx5 グローバル設定の作成 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "cat > ~/.config/fcitx5/config << 'FCEOF'
[Hotkey/TriggerKeys]
0=Zenkaku_Hankaku
1=Alt+grave

[Hotkey/AltTriggerKeys]
0=Shift_L

[Hotkey/EnumerateForwardKeys]
0=Control+Shift_R

[Hotkey/EnumerateBackwardKeys]
0=Control+Shift_L

[Hotkey/EnumerateGroupForwardKeys]
0=Super+space

[Hotkey/EnumerateGroupBackwardKeys]
0=Shift+Super+space

[Hotkey/ActivateKeys]

[Hotkey/DeactivateKeys]

[Hotkey/PrevPage]
0=Up

[Hotkey/NextPage]
0=Down

[Behavior]
ActiveByDefault=False
ShowInputMethodInformation=True
DefaultPageSize=5
EnabledAddons=
DisabledAddons=
FCEOF"

補足: [Hotkey/TriggerKeys] セクションでは,0=Zenkaku_Hankaku(半角/全角キー)と 1=Alt+grave(Alt+`)の2つをトリガーキーとして定義している。デフォルトの Control+space は意図的に除外している。VirtualBox 環境では,ホストの半角/全角キーが Zenkaku_Hankaku キーコードとしてゲストに渡される。日本語配列キーボードでない場合は,Alt+` による切替を使用する。

5.7 Fcitx5 のプロファイル設定

REM === Fcitx5 プロファイルの作成 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "cat > ~/.config/fcitx5/profile << 'PROFEOF'
[Groups/0]
Name=Default
Default Layout=jp
DefaultIM=mozc

[Groups/0/Items/0]
Name=keyboard-jp
Layout=

[Groups/0/Items/1]
Name=mozc
Layout=

[GroupOrder]
0=Default
PROFEOF"

5.8 Fcitx5 の自動起動設定

REM === Fcitx5 の自動起動設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.config/autostart && cat > ~/.config/autostart/fcitx5.desktop << 'AUTOEOF'
[Desktop Entry]
Type=Application
Name=Fcitx5
Exec=fcitx5 -d
X-LXQt-Need-Tray=true
AUTOEOF"

以上で日本語環境の構築が完了する。VM を再起動後,LXQt デスクトップ上で半角/全角キーまたは Alt+` を押すことで,日本語入力が有効になる。

第6章 Windows XP 風デザインの適用

6.1 概要

本章では,LXQt デスクトップ環境に Windows XP 日本語版風のデザインを適用する。LXQt は Qt ベースのデスクトップ環境であり,テーマの適用には以下の複数のレイヤが関係する。

レイヤ対象テーマ形式使用テーマ
LXQt パネルタスクバー,システムトレイ,メニューQSS(Qt Style Sheet)eXperience-LXQt
Openbox ウィンドウ装飾タイトルバー,ウィンドウ枠,ボタンOpenbox themercRetro 6 XP Luna
GTK テーマGTK アプリケーションの外観GTK3 テーマB00merang Windows XP Luna
Qt ウィジェットスタイルQt アプリケーションのウィジェットQt StyleWindows(Qt 標準)
アイコンテーマデスクトップ,ファイルマネージャのアイコンfreedesktop アイコンテーマWindows XP icon theme pack
カーソルテーママウスカーソルXCursormodernXP
壁紙デスクトップ背景画像ファイル草原風 Creative Commons 画像

6.2 テーマファイルのダウンロードとインストール

6.2.1 B00merang Windows XP Luna GTK テーマ

REM === B00merang Windows XP GTK テーマのダウンロード ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.themes && cd /tmp && git clone https://github.com/B00merang-Project/Windows-XP.git && cp -r '/tmp/Windows-XP/Windows XP Luna' ~/.themes/ && rm -rf /tmp/Windows-XP"

6.2.2 eXperience-LXQt パネルテーマ

eXperience-LXQt テーマは opendesktop.org(https://www.opendesktop.org/p/1292573)から入手可能である。以下のコマンドでダウンロードとインストールを行う。

REM === eXperience-LXQt テーマのインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.local/share/lxqt/themes/experience && cd /tmp && wget -q 'https://www.opendesktop.org/p/1292573/startdownload?file_id=1553736&file_name=eXperience-LXQt-0.9b.tar.gz&file_type=application/x-gzip&file_size=3872' -O experience.tar.gz && tar xzf experience.tar.gz -C ~/.local/share/lxqt/themes/ && rm -f /tmp/experience.tar.gz"

補足: opendesktop.org のダウンロード URL は変更される可能性がある。ダウンロードに失敗する場合は,Web ブラウザで https://www.opendesktop.org/p/1292573 にアクセスし,手動でダウンロードしたファイルを VM に転送すること。代替手段として,scp -P 2222 eXperience-LXQt-0.9b.tar.gz myuser@localhost:~/ でファイルを転送できる。

6.2.3 Retro 6 XP Luna Openbox テーマ

Retro 6 XP Luna テーマは opendesktop.org(https://www.opendesktop.org/p/1762973)から入手可能である。

REM === Retro 6 XP Luna Openbox テーマのインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.themes && cd /tmp && wget -q 'https://www.opendesktop.org/p/1762973/startdownload?file_id=1762973&file_name=Retro6XPLuna.tar.gz&file_type=application/x-gzip' -O retro6.tar.gz && tar xzf retro6.tar.gz -C ~/.themes/ && rm -f /tmp/retro6.tar.gz"

6.2.4 Windows XP アイコンテーマ

REM === Windows XP アイコンテーマのインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.icons && cd /tmp && wget -q 'https://www.xfce-look.org/p/1215836/startdownload?file_id=1553089&file_name=WinXP.tar.gz&file_type=application/x-gzip' -O winxp-icons.tar.gz && tar xzf winxp-icons.tar.gz -C ~/.icons/ && rm -f /tmp/winxp-icons.tar.gz"

6.2.5 Windows XP カーソルテーマ

REM === modernXP カーソルテーマのインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.icons && cd /tmp && git clone https://github.com/na0miluv/modernXP-cursor-theme.git && cp -r /tmp/modernXP-cursor-theme/modernXP ~/.icons/ && rm -rf /tmp/modernXP-cursor-theme"

6.3 テーマの適用

6.3.1 LXQt パネルテーマの設定

REM === LXQt テーマの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.config/lxqt && cat > ~/.config/lxqt/lxqt.conf << 'LXQTEOF'
[General]
theme=experience

[Appearance]
icon_theme=WinXP
cursor_theme=modernXP
LXQTEOF"

6.3.2 Qt ウィジェットスタイルの設定

REM === Qt ウィジェットスタイルを Windows に設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "cat > ~/.config/lxqt/lxqt-config-appearance.conf << 'QTEOF'
[Qt]
style=Windows

[GTK]
theme=Windows XP Luna
QTEOF"

6.3.3 Openbox ウィンドウテーマの設定

REM === Openbox テーマの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.config/openbox && sed -i 's|.*|Retro 6 XP Luna|' ~/.config/openbox/lxqt-rc.xml 2>/dev/null || cat > ~/.config/openbox/lxqt-rc.xml << 'OBEOF'


  
    Retro 6 XP Luna
    NLIMC
    yes
    yes
    Sans9BoldNormal
    Sans9BoldNormal
  

OBEOF"

補足: Openbox の設定ファイル lxqt-rc.xml が既に存在する場合は sed コマンドでテーマ名のみを変更する。存在しない場合は最小構成の設定ファイルを作成する。既存ファイルが存在する場合は,事前に cp lxqt-rc.xml lxqt-rc.xml.bak でバックアップを取得することを推奨する。

6.3.4 LXQt パネルの設定(Windows XP 風タスクバー)

LXQt パネルを Windows XP 風のタスクバーとして設定する。パネルを画面下部に配置し,高さを 30 ピクセルに設定する。

REM === LXQt パネル設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "cat > ~/.config/lxqt/panel.conf << 'PANELEOF'
[panel1]
alignment=Left
animation-duration=0
background-color=@Variant(\0\0\0\x43\0\0\0\0\0\0\0\0\xff\xff)
background-image=
desktop=0
font-color=@Variant(\0\0\0\x43\xff\xff\xff\xff\xff\xff\xff\xff)
hidable=false
hide-on-overlap=false
iconSize=22
length=100
lengthInPercent=true
lockPanel=true
opacity=100
panelSize=30
position=Bottom
reserve-space=true
show-delay=0
visible=true
width=100

[panel1/plugins]
1=mainmenu
2=quicklaunch
3=taskbar
4=tray
5=statusnotifier
6=worldclock

[mainmenu]
type=mainmenu
alignment=Left

[quicklaunch]
type=quicklaunch
alignment=Left

[taskbar]
type=taskbar
alignment=Left

[tray]
type=tray
alignment=Right

[statusnotifier]
type=statusnotifier
alignment=Right

[worldclock]
type=worldclock
alignment=Right
PANELEOF"

6.3.5 壁紙の設定

Windows XP の標準壁紙「Bliss」は著作権で保護されているため,類似の Creative Commons ライセンスの草原風壁紙を使用する。以下では,壁紙画像のダウンロードと設定を行う例を示す。

REM === 壁紙用ディレクトリの作成とダウンロード ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.local/share/wallpapers && wget -q 'https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/280px-PNG_transparency_demonstration_1.png' -O ~/.local/share/wallpapers/xp_bliss_alt.jpg 2>/dev/null; echo 'Wallpaper placeholder created.'"

REM === PCManFM-Qt デスクトップ壁紙設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.config/pcmanfm-qt/lxqt && cat > ~/.config/pcmanfm-qt/lxqt/settings.conf << 'WPEOF'
[Desktop]
Wallpaper=~/.local/share/wallpapers/xp_bliss_alt.jpg
WallpaperMode=stretch
BgColor=#3a6ea5
DesktopIconSize=48
ShowHidden=false
WPEOF"

補足: 上記の壁紙 URL はプレースホルダである。Windows XP の「Bliss」に類似した草原風の壁紙を使用する場合は,Creative Commons ライセンスの画像を検索し,URL を差し替えること。デスクトップ背景色 #3a6ea5 は Windows XP のデフォルトの青色に近い値である。壁紙が設定されない場合,この背景色が表示される。

6.4 デスクトップアイコンの配置

Windows XP 風のデスクトップアイコン(マイコンピュータ,ごみ箱等)を配置する。LXQt では PCManFM-Qt がデスクトップアイコンの管理を担当する。

REM === デスクトップショートカットの作成 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/Desktop && cat > ~/Desktop/computer.desktop << 'DSKEOF'
[Desktop Entry]
Type=Application
Name=マイ コンピュータ
Exec=pcmanfm-qt computer:///
Icon=computer
Terminal=false
DSKEOF
chmod +x ~/Desktop/computer.desktop"

ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "cat > ~/Desktop/trash.desktop << 'DSKEOF2'
[Desktop Entry]
Type=Application
Name=ごみ箱
Exec=pcmanfm-qt trash:///
Icon=user-trash
Terminal=false
DSKEOF2
chmod +x ~/Desktop/trash.desktop"

ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "cat > ~/Desktop/home.desktop << 'DSKEOF3'
[Desktop Entry]
Type=Application
Name=マイ ドキュメント
Exec=pcmanfm-qt ~/Documents
Icon=folder-documents
Terminal=false
DSKEOF3
chmod +x ~/Desktop/home.desktop"

6.5 GTK テーマの適用(GTK アプリケーション用)

REM === GTK3 テーマ設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.config/gtk-3.0 && cat > ~/.config/gtk-3.0/settings.ini << 'GTKEOF'
[Settings]
gtk-theme-name=Windows XP Luna
gtk-icon-theme-name=WinXP
gtk-cursor-theme-name=modernXP
gtk-font-name=Noto Sans CJK JP 10
GTKEOF"

6.6 カーソルテーマの設定

REM === X カーソルテーマの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.icons/default && cat > ~/.icons/default/index.theme << 'CUREOF'
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=modernXP
CUREOF"

6.7 最終再起動とデザインの確認

REM === VM の再起動 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "sudo reboot"

echo.
echo ============================================
echo   全ての設定が完了しました
echo   VM は Windows XP テーマで再起動中です
echo.
echo   再起動後,GUI モードで起動:
echo   VBoxManage startvm "%VM_NAME%" --type gui
echo.
echo   ログイン: %USER_NAME% / %USER_PASSWORD%
echo ============================================

第7章 トラブルシューティング

7.1 インストール関連の問題

問題原因対処方法
VBoxManage が認識されない PATH が設定されていない コマンドプロンプトを再起動する。または "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" の絶対パスで実行する
VBoxManage unattended install が失敗する ISO ファイルのパスが正しくない,または ISO が破損している ISO ファイルのパスを確認する。certutil -hashfile <ISOファイル> SHA256 でハッシュ値を検証し,公式の SHA256SUMS と照合する
インストール中に VM がフリーズする メモリ不足(OOM Kill) VM の RAM を 8192 MB 以上に設定する。インストール中に unattended-upgrades が OOM Kill される場合がある
インストール完了後に VM が起動しない EFI ブート順序が正しくない,または ISO が取り外されていない VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive で ISO を取り外し,VBoxManage modifyvm "%VM_NAME%" --boot1=disk --boot2=none でブート順序を設定する。EFI で起動しない場合は --firmware=bios に変更して試行する
Hyper-V 競合エラー Hyper-V が有効になっている Windows の機能で Hyper-V を無効化する

7.2 SSH 接続の問題

問題原因対処方法
SSH 接続がタイムアウトする ポートフォワーディングが設定されていない,または SSH サーバが起動していない VBoxManage showvminfo "%VM_NAME%" --machinereadable | findstr natpf でポートフォワーディングの設定を確認する。VM 内で sudo systemctl status ssh を確認する
SSH ホスト鍵エラーが発生する VM を再作成した場合,以前のホスト鍵と異なる鍵が提示される ssh-keygen -R "[localhost]:2222" で既知のホスト鍵を削除する

7.3 デスクトップ環境の問題

問題原因対処方法
ログイン後にデスクトップが表示されない(黒い画面) SDDM が LXQt セッションを正しく認識していない SSH 経由でログインし,sudo dpkg-reconfigure sddm を実行する。また ls /usr/share/xsessions/lxqt.desktop が存在することを確認する
画面解像度が低い(800x600 固定) Guest Additions が正しくインストールされていない SSH 経由で lsmod | grep vboxvideo を実行し,vboxvideo カーネルモジュールがロードされていることを確認する。ロードされていない場合は Guest Additions を再インストールする
テーマが適用されない テーマファイルが正しいディレクトリに配置されていない LXQt テーマは ~/.local/share/lxqt/themes/,Openbox テーマは ~/.themes/<テーマ名>/openbox-3/themerc,GTK テーマは ~/.themes/<テーマ名>/ に配置されていることを確認する
GNOME のアプリケーションが残っている GNOME 関連パッケージの削除が不完全 dpkg -l | grep gnome で残存パッケージを確認し,sudo apt-get purge -y <パッケージ名> && sudo apt-get autoremove -y で個別に削除する

7.4 日本語入力の問題

問題原因対処方法
半角/全角キーで日本語入力に切り替わらない Fcitx5 が起動していない,またはトリガーキーの設定が反映されていない システムトレイに Fcitx5 アイコンが表示されているか確認する。表示されていない場合は fcitx5 -d で手動起動する。~/.config/fcitx5/config[Hotkey/TriggerKeys] セクションの内容を確認する
Mozc が入力メソッドの一覧に表示されない fcitx5-mozc パッケージがインストールされていない dpkg -l | grep fcitx5-mozc でパッケージの存在を確認する。インストールされていない場合は sudo apt-get install -y fcitx5-mozc を実行する
特定のアプリケーションで日本語入力ができない 環境変数(GTK_IM_MODULEQT_IM_MODULEXMODIFIERS)が設定されていない ~/.config/environment.d/im.conf の内容を確認する。環境変数が設定されていない場合は 5.5 節の手順を再実行する
Ctrl+Space で日本語入力が有効になってしまう Fcitx5 のトリガーキー設定に Ctrl+Space が残っている ~/.config/fcitx5/config[Hotkey/TriggerKeys] セクションから Control+space の行を削除し,Fcitx5 を再起動する(fcitx5 -r

7.5 VM の管理コマンド

トラブルシューティングや日常的な VM 管理に使用するコマンドを以下に示す。

操作コマンド
VM を GUI モードで起動VBoxManage startvm "lubuntu2404" --type gui
VM をヘッドレスモードで起動VBoxManage startvm "lubuntu2404" --type headless
VM の電源を切る(ACPI シャットダウン)VBoxManage controlvm "lubuntu2404" acpipowerbutton
VM を強制停止VBoxManage controlvm "lubuntu2404" poweroff
VM のスナップショットを作成VBoxManage snapshot "lubuntu2404" take "初期設定完了"
VM のスナップショットを復元VBoxManage snapshot "lubuntu2404" restore "初期設定完了"
VM を削除VBoxManage unregistervm "lubuntu2404" --delete
VM の情報を表示VBoxManage showvminfo "lubuntu2404"
SSH 接続ssh -p 2222 myuser@localhost

7.6 VM の削除と再作成

REM === VM の登録解除とファイル削除 ===
VBoxManage unregistervm "lubuntu2404" --delete

REM === 仮想ディスクのみ削除(VM は残す場合) ===
VBoxManage closemedium disk "%USERPROFILE%\VirtualBox VMs\lubuntu2404\lubuntu2404.vdi" --delete