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

概要

Windows 11 ホスト上の Oracle VirtualBox において,コマンドラインインターフェース(CLI)のみで Lubuntu 24.04 LTS 相当の仮想マシンを自動構築し,Windows XP 日本語版風の画面デザインを適用する手順を記述する。以降,この構成を「Lubuntu 24.04 LTS」と記す(定義は第0章および 3.1 節を参照)。

本書のコマンドはすべて Windows のバッチ(コマンドプロンプトで実行する一連のコマンド)として記述しており,各章のコードは管理者権限のコマンドプロンプトで上から順に実行することを前提とする。GPU の有無や機種は問わない。

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

目次

サイト内の関連情報

第0章 本書を読む前に(前提知識)

0.1 仮想化と仮想マシン

仮想化とは,1 台の物理コンピュータ上に,独立した別のコンピュータを論理的に動作させる技術である。VirtualBox は仮想化を実現するソフトウェア(ハイパーバイザ)の一つであり,物理コンピュータに相当する論理的な実体を仮想マシン(VM)と呼ぶ。仮想マシンを動かす側の OS をホスト OS,仮想マシンの中で動作する OS をゲスト OS と呼ぶ。本書では Windows 11 がホスト OS,Lubuntu 24.04 LTS がゲスト OS となる。仮想ディスク(本書では VDI 形式のファイル)はゲスト OS から見たハードディスクに相当し,ホスト OS 上では単一のファイルとして保存される。

0.2 Ubuntu と Lubuntu,LXQt と GNOME

Ubuntu は Linux ディストリビューション(Linux カーネルとソフトウェア群をまとめた配布形態)の一つで,標準のデスクトップ環境として GNOME を採用している。Lubuntu は Ubuntu の派生版(公式フレーバー)であり,LXQt デスクトップ環境を採用する点が異なる。デスクトップ環境とは,ウィンドウマネージャ,パネル(タスクバー),ファイルマネージャ,標準アプリケーション群などをまとめた利用者向けの GUI 環境を指す。LXQt は Qt フレームワーク(C++ ベースの GUI フレームワーク)をベースとするデスクトップ環境である。

0.3 ディスプレイマネージャ(GDM3 / SDDM)

ディスプレイマネージャは,OS 起動時にログイン画面を表示し,ユーザー認証後にデスクトップ環境を起動するソフトウェアである。Ubuntu Desktop の標準は GDM3,Lubuntu の標準は SDDM である。本書では Ubuntu Desktop をベースに構築するため,初期状態では GDM3 が動作しているが,lubuntu-desktop 導入後に SDDM へ切り替え,最終的に GDM3 を削除する。

0.4 VBoxManage unattended install の仕組み

VBoxManage unattended install は,対象 ISO の種別を自動判別したうえで,無人インストール用の応答ファイル(Ubuntu の場合は autoinstall 用 YAML,Debian 系の場合は preseed など)を生成し,それを ISO に組み込む(または別経路で供給する)ことで,対話操作なしに OS インストールを完了させる仕組みである。--post-install-command オプションは,OS インストール完了後にゲスト OS 内で実行されるコマンドを指定する。実行のタイミングはゲスト OS のインストーラに依存する。本書ではこのフックで openssh-server(SSH 接続を受け付けるサーバ)を導入し,以降の作業を SSH に切り替える。

0.5 Linux デスクトップにおけるテーミングの階層

Linux デスクトップでは,画面外観を構成する要素が複数の独立したレイヤに分かれており,それぞれ別の仕組み・別の設定ファイルで管理されている。代表的なレイヤは,ウィンドウ装飾(タイトルバーや枠線:Openbox 等のウィンドウマネージャが担当),ウィジェットスタイル(ボタンや入力欄の見た目:Qt と GTK が個別に担当),アイコンテーマ,カーソルテーマ,パネル(タスクバー)テーマ,壁紙である。単一のテーマファイルで一括変更する仕組みではないため,「Windows XP 風」の統一外観を得るには,これらのレイヤを個別に設定する必要がある。第6章はこの理由から複数の節に分かれている。

0.6 本書における「Lubuntu 24.04 LTS」の定義

本書では Lubuntu 公式 ISO(Calamares インストーラを採用)を用いず,Ubuntu Desktop 24.04 LTS の ISO を VBoxManage unattended install でインストールしたうえで,lubuntu-desktop メタパッケージを追加し GNOME 関連パッケージを削除する方式を採る(理由は 3.1 節)。これにより得られる構成は,パッケージ構成・利用感ともに Lubuntu 公式 ISO の成果物と実質的に同等であるため,本書ではこれを略して「Lubuntu 24.04 LTS」と記す。

第1章 概要

1.1 ゴール

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

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

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

1.2 用語

用語説明
wingetWindows 標準のパッケージマネージャ。コマンドラインからソフトウェアのインストールと管理を行う
VBoxManageVirtualBox のコマンドラインインターフェース。GUI を使わずに仮想マシンの作成・設定・管理を行う
SSH(Secure Shell)ネットワーク経由でリモートマシンに接続するプロトコル。本書ではホストからゲスト OS を操作するために使用する
NAT(Network Address Translation)VirtualBox のネットワークモードの一つ。ゲスト OS はホストのネットワーク接続を共有してインターネットに接続する。ポートフォワーディング(特定ポートへの通信をゲストの特定ポートへ転送する設定)によりホストからゲストへの接続が可能となる
ディスプレイマネージャログイン画面を提供しデスクトップセッションを開始するソフトウェア。GDM3 は GNOME 系の標準,SDDM は LXQt / KDE 系の標準
ウィンドウマネージャウィンドウの配置・装飾・操作を担うソフトウェア。LXQt の標準は Openbox

1.3 前提条件

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

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

ソフトウェアバージョン用途
Oracle VirtualBox7.2.10仮想化プラットフォーム
VirtualBox Extension Pack7.2.10USB 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.10r174163(2026年6月時点の最新版)のような形式である(末尾のリビジョン番号はバージョンにより異なる)。表示されれば,本体がインストールされ PATH も設定されている。

2.2 Extension Pack のインストール

Extension Pack は,USB 2.0/3.0 やリモートデスクトップ(VRDP)などの拡張機能を提供する追加コンポーネントである。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 を確認する。出力の Usabletrue であれば正常に動作している。

VBoxManage list extpacks

補足: Extension Pack のダウンロード URL は https://download.virtualbox.org/virtualbox/<バージョン>/Oracle_VirtualBox_Extension_Pack-<バージョン>.vbox-extpack の形式である。バージョン 7.2.10 の場合,URL は https://download.virtualbox.org/virtualbox/7.2.10/Oracle_VirtualBox_Extension_Pack-7.2.10.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 公式 ISO のインストーラ(Calamares)が VBoxManage unattended install に対応していないためである。VBoxManage unattended install は,ISO の種別を自動判別して適切な無人インストール方式を選択する。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 の作成と設定,インストールの実行

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"

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

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 無人インストールが開始されました

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

3.4 インストール完了の待機,SSH 鍵の登録

Ubuntu Desktop のインストールが完了すると,VM は自動的に再起動する。以下のコマンドで,SSH 接続が確立可能になることをもってインストール完了を判定する。

補足(無人化方針について): 本書では初回の SSH 鍵登録時のみ対話的なパスワード入力(ゲスト OS の USER_PASSWORD)を行う。完全な無人化が必要な場合は,3.3 節の --post-install-command 内でホスト側の公開鍵を ~/.ssh/authorized_keys に書き込む方式を採る。

REM === 変数の再設定(新しいセッションで実行する場合) ===
set "VM_NAME=lubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"

REM === SSH 接続が可能になるまで待機 ===
echo SSH 接続を待機中 ...
set "SSH_DONE=" & for /L %i in (1,1,180) 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 秒待機します)))

REM === SSH 鍵ペアの生成(既存の場合はスキップ) ===
if not exist "%USERPROFILE%\.ssh\id_ed25519" (
    ssh-keygen -t ed25519 -f "%USERPROFILE%\.ssh\id_ed25519" -N ""
)

REM === 公開鍵をゲスト OS に登録(パスワードプロンプトが表示される) ===
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 && chmod 700 ~/.ssh"

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"

補足: 本節の時点ではディスプレイマネージャは GDM3 のままである。本書では 3.5 節で lubuntu-desktop を導入し SDDM へ切り替えたうえで自動ログイン設定を行うため,GDM3 に対する自動ログイン設定はここでは実施しない。

3.5 lubuntu-desktop のインストール,GNOME 関連パッケージの削除,SDDM 自動ログイン設定,VM の再起動

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

続いて,Ubuntu Desktop に付属する GNOME デスクトップ環境と GDM3 ディスプレイマネージャを削除し,LXQt + SDDM のみの構成とする。最後に SDDM に対して自動ログイン設定を行う。

補足: DEBIAN_FRONTEND=noninteractive 環境変数により,インストール中の対話的プロンプトを抑制する。apt-get purge はパッケージの設定ファイルも含めて削除し,apt-get autoremove により削除されたパッケージに依存していた不要パッケージを削除する。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 "echo /usr/bin/sddm | sudo tee /etc/X11/default-display-manager && 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 === SDDM の自動ログイン設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "sudo mkdir -p /etc/sddm.conf.d && printf '[Autologin]\nUser=%USER_NAME%\nSession=lxqt.desktop\n' | sudo tee /etc/sddm.conf.d/autologin.conf"

echo SDDM の自動ログイン設定が完了しました

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 "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 秒待機します)))

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

VBoxManage startvm "%VM_NAME%" --type gui

SDDM の自動ログイン設定により,再起動後はパスワード入力なしに myuser として LXQt デスクトップが表示される。手動でログインする場合は,ユーザー名 myuser,パスワード changeme を使用する。

以下のコマンドで,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 に接続し,以下のコマンドを実行する。build-essentialdkms,カーネルヘッダは,Guest Additions のカーネルモジュールをビルドするために必要である。

REM === 変数の設定 ===
set "VM_NAME=lubuntu2404"
set "USER_NAME=myuser"
set "SSH_HOST_PORT=2222"

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 "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 秒待機します)))

補足: VBoxManage storageattach ... --medium additions は,VirtualBox に同梱されている Guest Additions ISO を IDE DVD ドライブにマウントするショートカットである。共有クリップボードおよびドラッグ&ドロップは,3.3 節の VM 設定時に --clipboard-mode=bidirectional および --drag-and-drop=bidirectional オプションで有効化されている。設定を変更する場合は,VM を停止した状態で VBoxManage modifyvm コマンドを実行する。

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

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

第5章 日本語環境の構築

5.1 概要

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

5.2 日本語ロケールとタイムゾーンの設定,ユーザーディレクトリの英語名固定

本書ではスクリプト中でホームディレクトリ配下のサブディレクトリ(~/Documents 等)を英語名で参照する箇所があるため,ロケールを日本語に設定したうえで XDG ユーザーディレクトリ(DocumentsDownloads 等のホーム配下標準ディレクトリ)は英語名に固定する。

REM === 変数の設定 ===
set "USER_NAME=myuser"
set "SSH_HOST_PORT=2222"

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"

REM === XDG ユーザーディレクトリを英語名に固定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "LC_ALL=C xdg-user-dirs-update --force"

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 をすべてのアプリケーションで使用するため,環境変数を設定する。GTK_IM_MODULEQT_IM_MODULE は GTK / Qt アプリケーションが使用する入力メソッドを指定する変数,XMODIFIERS はそれ以外の X クライアントが参照する入力メソッド指定である。

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つをトリガーキーとして定義している。Fcitx5 のデフォルトに含まれる Control+space は定義していない。日本語配列キーボードでない場合は,Alt+`(Alt+grave)による切替を使用する。

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+`(Alt+grave)を押すことで,日本語入力が有効になる。

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

6.1 概要

Linux デスクトップでは,画面外観を構成する要素が複数の独立したレイヤに分かれており,それぞれ別の仕組み・別の設定ファイルで管理されている(第0章 0.5 節参照)。「Windows XP 風」を一貫して適用するには,各レイヤを個別に設定する必要がある。本章で扱うレイヤと採用テーマは以下のとおりである。

レイヤ対象テーマ形式使用テーマ
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 画像

補足(テーマ取得について): opendesktop.org(pling.com / gnome-look.org / store.kde.org は同一バックエンドを共有する)からのテーマファイルは,ページ内の file_id が随時変更されるため,wget による直リンクダウンロードは失敗する場合がある。失敗した場合は,ホスト側の Web ブラウザで該当ページを開き,「Files」タブからアーカイブを手動でダウンロードしたうえで,scp -P 2222 <ファイル名> myuser@localhost:~/ によりゲスト OS に転送して所定のディレクトリに展開する。

補足(ライセンスについて): 本章で利用する各テーマ・アイコン・カーソル・壁紙は,それぞれ配布元のライセンスに従って利用すること(本書はライセンス分析を範囲外とする)。

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

6.2.1 B00merang Windows XP Luna GTK テーマ

REM === 変数の設定 ===
set "USER_NAME=myuser"
set "SSH_HOST_PORT=2222"

REM === B00merang Windows XP GTK テーマのダウンロード ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "sudo apt-get install -y git && 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)から入手する。Web ブラウザで上記ページを開き,「Files」セクションから eXperience-LXQt-0.9b.tar.gz をホスト側にダウンロードした後,以下の手順でゲスト OS に転送・展開する。

REM === ホスト側にダウンロード済みのテーマファイルをゲスト OS に転送 ===
scp -P %SSH_HOST_PORT% "%USERPROFILE%\Downloads\eXperience-LXQt-0.9b.tar.gz" %USER_NAME%@localhost:/tmp/

REM === ゲスト OS で LXQt テーマディレクトリに展開 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.local/share/lxqt/themes && tar xzf /tmp/eXperience-LXQt-0.9b.tar.gz -C ~/.local/share/lxqt/themes/ && rm -f /tmp/eXperience-LXQt-0.9b.tar.gz"

6.2.3 Retro 6 XP Luna Openbox テーマ

Retro 6 XP Luna テーマは opendesktop.org(https://www.opendesktop.org/p/1762973)から入手する。Web ブラウザで上記ページを開き,「Files」セクションからアーカイブをホスト側にダウンロードした後,以下の手順でゲスト OS に転送・展開する。

REM === ホスト側にダウンロード済みのテーマファイルをゲスト OS に転送 ===
scp -P %SSH_HOST_PORT% "%USERPROFILE%\Downloads\Retro6XPLuna.tar.gz" %USER_NAME%@localhost:/tmp/

REM === ゲスト OS で Openbox テーマディレクトリに展開 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.themes && tar xzf /tmp/Retro6XPLuna.tar.gz -C ~/.themes/ && rm -f /tmp/Retro6XPLuna.tar.gz"

6.2.4 Windows XP アイコンテーマ

Windows XP アイコンテーマは opendesktop.org または xfce-look.org から入手する。ホスト側で WinXP.tar.gz 等のアーカイブをダウンロードした後,以下の手順でゲスト OS に転送・展開する。

REM === ホスト側にダウンロード済みのアイコンテーマをゲスト OS に転送 ===
scp -P %SSH_HOST_PORT% "%USERPROFILE%\Downloads\WinXP.tar.gz" %USER_NAME%@localhost:/tmp/

REM === ゲスト OS でアイコンテーマディレクトリに展開 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.icons && tar xzf /tmp/WinXP.tar.gz -C ~/.icons/ && rm -f /tmp/WinXP.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 ウィンドウテーマの設定

Openbox の設定ファイル lxqt-rc.xml が既に存在する場合は,バックアップを取得したうえで sed によりテーマ名を書き換える。存在しない場合は最小構成の設定ファイルを新規作成する。

REM === Openbox テーマの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.config/openbox && if [ -f ~/.config/openbox/lxqt-rc.xml ]; then cp ~/.config/openbox/lxqt-rc.xml ~/.config/openbox/lxqt-rc.xml.bak && sed -i 's|.*|Retro 6 XP Luna|' ~/.config/openbox/lxqt-rc.xml; else cat > ~/.config/openbox/lxqt-rc.xml << 'OBEOF'


  
    Retro 6 XP Luna
    NLIMC
    yes
    yes
    Sans9BoldNormal
    Sans9BoldNormal
  

OBEOF
fi"

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 ライセンスの草原風壁紙を使用する。ホスト側で取得した壁紙ファイル(例: xp_bliss_alt.jpg)を以下の手順でゲスト OS に転送し,PCManFM-Qt(LXQt のファイルマネージャ。デスクトップ背景の管理も担当)に設定する。

REM === 壁紙ディレクトリの作成 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
    "mkdir -p ~/.local/share/wallpapers"

REM === ホスト側に用意した壁紙ファイルをゲスト OS に転送 ===
scp -P %SSH_HOST_PORT% "%USERPROFILE%\Downloads\xp_bliss_alt.jpg" %USER_NAME%@localhost:~/.local/share/wallpapers/

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"

補足: 壁紙ファイルは Creative Commons ライセンスの草原風画像を別途用意する。背景色 #3a6ea5 は壁紙が読み込めない場合に表示される。

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

Windows XP 風のデスクトップアイコン(マイコンピュータ,ごみ箱等)を配置する。LXQt では PCManFM-Qt がデスクトップアイコンの管理を担当する。「マイ ドキュメント」ショートカットは,5.2 節で XDG ユーザーディレクトリを英語名に固定済みであるため,~/Documents を参照する。

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=sh -c 'pcmanfm-qt \"$(xdg-user-dir 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。Linux カーネルがメモリ不足時にプロセスを強制終了する仕組み) VM の RAM を 8192 MB 以上に設定する
インストール完了後に VM が起動しない ブート順序が正しくない,または 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 でディスク優先のブート順序に変更する。それでも起動しない場合は,VM を削除(7.6 節)したうえで,3.3 節からインストールをやり直す(本書はインストール時に 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 が存在することを確認する
自動ログインが効かない /etc/sddm.conf.d/autologin.conf が存在しない,または Session 名が誤っている cat /etc/sddm.conf.d/autologin.conf で内容を確認し,UserSession=lxqt.desktop が設定されていることを確認する。ls /usr/share/xsessions/ でセッション名を併せて確認する
画面解像度が低い(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 のトリガーキー設定に Control+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