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 のバッチ(コマンドプロンプトで実行する一連のコマンド)として記述しており,各章のコードは管理者権限のコマンドプロンプトで上から順に実行することを前提とする。
| 項目 | 内容 |
|---|---|
| 目的 | コマンドラインによる Lubuntu 仮想マシンの自動構築と Windows XP 風デザインの適用 |
| 使用ツール | winget(Windows のパッケージ管理),VBoxManage(VM 管理),SSH(ゲスト OS 操作) |
| 構築環境 | VirtualBox 7.2 系 + Lubuntu 24.04 LTS(メモリ 8 GB,ストレージ 60 GB) |
| 前提 | Windows 11(64bit),管理者権限,80 GB 以上の空き容量,10 GB 以上の空きメモリ |
【目次】
- 第0章 本書を読む前に(前提知識)
- 第1章 概要
- 第2章 環境構築
- 第3章 VM 作成と OS インストール
- 第4章 Guest Additions のインストール
- 第5章 日本語環境の構築
- 第6章 Windows XP 風デザインの適用
- 第7章 トラブルシューティング
【サイト内の関連情報】
- Windows の基本操作・コマンド操作・設定と、アプリ・開発環境・ローカル AI の導入
- Linux基本コマンドとその活用法:別ページで説明
第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 ディストリビューションの一つで,標準のデスクトップ環境として GNOME を採用している。Lubuntu は Ubuntu の派生版(公式フレーバー)であり,LXQt デスクトップ環境を採用する点が異なる。デスクトップ環境とは,ウィンドウマネージャ,パネル(タスクバー),ファイルマネージャ,標準アプリケーション群などをまとめた利用者向けの GUI 環境を指す。LXQt は Qt フレームワークをベースとするデスクトップ環境である。
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 内で実行されるコマンドを指定する。本書ではこのフックで 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 系(Windows 11 ホスト上) |
| ゲスト OS | Lubuntu 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 用語
| 用語 | 説明 |
|---|---|
| winget | Windows 標準のパッケージマネージャ。コマンドラインからソフトウェアのインストールと管理を行う |
| VBoxManage | VirtualBox のコマンドラインインターフェース。GUI を使わずに仮想マシンの作成・設定・管理を行う |
| SSH(Secure Shell) | ネットワーク経由でリモートマシンに接続するプロトコル。本書ではホストからゲスト OS を操作するために使用する |
| NAT(Network Address Translation) | VirtualBox のネットワークモードの一つ。ゲスト OS はホストのネットワーク接続を共有してインターネットに接続する。ポートフォワーディングによりホストからゲストへの接続が可能となる |
| ディスプレイマネージャ | ログイン画面を提供しデスクトップセッションを開始するソフトウェア。GDM3 は GNOME 系の標準,SDDM は LXQt / KDE 系の標準 |
| ウィンドウマネージャ | ウィンドウの配置・装飾・操作を担うソフトウェア。LXQt の標準は Openbox |
1.3 前提条件
| 項目 | 要件 |
|---|---|
| ホスト OS | Windows 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 VirtualBox | winget が導入する版(7.2 系) | 仮想化プラットフォーム |
| VirtualBox Extension Pack | 本体と同一バージョン | USB 2.0/3.0,リモートデスクトップ等の拡張機能 |
| Ubuntu Desktop ISO | 24.04.4 LTS(Noble Numbat) | ベース OS のインストールメディア |
| lubuntu-desktop | 24.04 LTS | LXQt デスクトップ環境メタパッケージ |
| winget | Windows 標準 | VirtualBox のインストール |
1.5 ネットワーク構成
VM のネットワークは NAT モードを使用する。ホストから VM への SSH 接続は,以下のポートフォワーディングにより行う。
| 方向 | プロトコル | ホスト側ポート | ゲスト側ポート | 用途 |
|---|---|---|---|---|
| ホスト → ゲスト | TCP | 2222 | 22 | SSH 接続 |
1.6 作業の全体フロー
| ステップ | 内容 | 章 |
|---|---|---|
| 1 | VirtualBox と Extension Pack のインストール | 第2章 |
| 2 | VM の作成と Ubuntu Desktop の無人インストール | 第3章 |
| 3 | lubuntu-desktop のインストールと GNOME の削除(SSH 経由) | 第3章 |
| 4 | Guest Additions のインストール(SSH 経由) | 第4章 |
| 5 | 日本語環境の構築(SSH 経由) | 第5章 |
| 6 | Windows 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
出力は <バージョン>r<リビジョン> の形式である。表示されれば,本体がインストールされ 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 を確認する。出力の Usable が true であれば利用可能である。
VBoxManage list extpacks
補足: Extension Pack のダウンロード URL は https://download.virtualbox.org/virtualbox/<バージョン>/Oracle_VirtualBox_Extension_Pack-<バージョン>.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 に対応していないためである。Ubuntu Desktop インストール後に lubuntu-desktop メタパッケージを追加インストールし,GNOME 関連パッケージを削除することで,Lubuntu と同等の LXQt デスクトップ環境を得る。
3.2 ストレージ構成
仮想マシン(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%"
)
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 設定(EHCI は Extension Pack が必要) ===
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 update && 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 節参照)。
3.4 インストール完了の待機,SSH 鍵の登録
Ubuntu Desktop のインストールが完了すると,VM は自動的に再起動する。以下のコマンドで,SSH サーバのポートが応答することをもってインストール完了を判定し,その後 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 ポートを待機中 ...
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"
if errorlevel 1 exit /b 1
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"
REM === SSH 鍵認証の動作確認 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "echo SSH_OK"
REM === インストール ISO の取り外し ===
VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive
echo === 動作確認 ===
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 により削除されたパッケージに依存していた不要パッケージを削除する。
REM === システムの更新 ===
set "VM_NAME=lubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S apt-get update && printf '%s\n' '%USER_PASSWORD%' | sudo -S DEBIAN_FRONTEND=noninteractive apt-get upgrade -y"
REM === lubuntu-desktop のインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S DEBIAN_FRONTEND=noninteractive apt-get install -y lubuntu-desktop"
REM === SDDM をデフォルトのディスプレイマネージャに設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '/usr/bin/sddm\n' > /tmp/default-display-manager && printf '%s\n' '%USER_PASSWORD%' | sudo -S cp /tmp/default-display-manager /etc/X11/default-display-manager && rm -f /tmp/default-display-manager && printf '%s\n' '%USER_PASSWORD%' | sudo -S DEBIAN_FRONTEND=noninteractive dpkg-reconfigure sddm"
REM === GNOME 関連パッケージの削除 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S 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 "printf '%s\n' '%USER_PASSWORD%' | sudo -S apt-get autoremove -y && printf '%s\n' '%USER_PASSWORD%' | sudo -S apt-get autoclean -y"
REM === SDDM の自動ログイン設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"printf '[Autologin]\nUser=%USER_NAME%\nSession=lxqt.desktop\n' > /tmp/sddm-autologin.conf && printf '%s\n' '%USER_PASSWORD%' | sudo -S mkdir -p /etc/sddm.conf.d && printf '%s\n' '%USER_PASSWORD%' | sudo -S cp /tmp/sddm-autologin.conf /etc/sddm.conf.d/autologin.conf && rm -f /tmp/sddm-autologin.conf"
REM === VM の再起動 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S reboot"
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 BatchMode=yes -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 秒待機します)))
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 size | 8192 MB |
| VRAM size | 128 MB |
| Firmware | EFI |
| Number of CPUs | 2 |
第4章 Guest Additions のインストール
4.1 概要
VirtualBox Guest Additions は,ゲスト OS にインストールするドライバおよびユーティリティのセットである。Guest Additions をインストールすることで,以下の機能が利用可能となる。
| 機能 | 説明 |
|---|---|
| 画面解像度の自動調整 | VM ウィンドウのリサイズに応じてゲスト OS の画面解像度が自動調整される |
| 共有クリップボード | ホストとゲスト間でテキストのコピー&ペーストが可能となる |
| 共有フォルダ | ホストのフォルダをゲスト OS からマウントできる |
| マウス統合 | ホストとゲスト間でマウスカーソルがシームレスに移動する |
| 時刻同期 | ホストとゲストの時刻が自動同期される |
4.2 Guest Additions のインストール手順
SSH 経由でゲスト OS に接続し,以下のコマンドを実行する。build-essential,dkms,カーネルヘッダは,Guest Additions のカーネルモジュールをビルドするために必要である。
REM === 変数の設定 ===
set "VM_NAME=lubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
REM === ビルドに必要なパッケージのインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S 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 "printf '%s\n' '%USER_PASSWORD%' | sudo -S sh -c 'mount /dev/cdrom /mnt && /mnt/VBoxLinuxAdditions.run --nox11 && umount /mnt'"
REM === Guest Additions ISO の取り外し ===
VBoxManage storageattach "%VM_NAME%" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive
REM === VM の再起動 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S reboot"
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 BatchMode=yes -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 設定時に有効化されている。設定を変更する場合は,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 ユーザーディレクトリは英語名に固定する。
REM === 変数の設定 ===
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
REM === 日本語ロケールの生成と設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S locale-gen ja_JP.UTF-8 && printf '%s\n' '%USER_PASSWORD%' | sudo -S update-locale LANG=ja_JP.UTF-8"
REM === タイムゾーンの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S 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 "printf '%s\n' '%USER_PASSWORD%' | sudo -S apt-get install -y fonts-noto-cjk fonts-noto-cjk-extra fonts-vlgothic fonts-ipafont-gothic fonts-ipafont-mincho"
| パッケージ | フォント名 | 用途 |
|---|---|---|
| fonts-noto-cjk | Noto Sans CJK JP / Noto Serif CJK JP | 汎用日本語フォント(ゴシック体・明朝体) |
| fonts-vlgothic | VL ゴシック | ゴシック体 |
| fonts-ipafont-gothic | IPA ゴシック | IPA 提供のゴシック体 |
| fonts-ipafont-mincho | IPA 明朝 | IPA 提供の明朝体 |
5.4 Fcitx5 と Mozc のインストール
REM === Fcitx5 と Mozc のインストール ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S 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_MODULE と QT_IM_MODULE は GTK / Qt アプリケーションが使用する入力メソッドを指定する変数,XMODIFIERS はそれ以外の X クライアントが参照する入力メソッド指定である。
REM === 環境変数の設定 ===
ssh -o StrictHostKeyChecking=no -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"
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 && printf '[Hotkey/TriggerKeys]\n0=Zenkaku_Hankaku\n1=Alt+grave\n\n[Hotkey/AltTriggerKeys]\n0=Shift_L\n\n[Hotkey/EnumerateForwardKeys]\n0=Control+Shift_R\n\n[Hotkey/EnumerateBackwardKeys]\n0=Control+Shift_L\n\n[Hotkey/EnumerateGroupForwardKeys]\n0=Super+space\n\n[Hotkey/EnumerateGroupBackwardKeys]\n0=Shift+Super+space\n\n[Hotkey/ActivateKeys]\n\n[Hotkey/DeactivateKeys]\n\n[Hotkey/PrevPage]\n0=Up\n\n[Hotkey/NextPage]\n0=Down\n\n[Behavior]\nActiveByDefault=False\nShowInputMethodInformation=True\nDefaultPageSize=5\nEnabledAddons=\nDisabledAddons=\n' > ~/.config/fcitx5/config"
補足: [Hotkey/TriggerKeys] セクションでは,0=Zenkaku_Hankaku(半角/全角キー)と 1=Alt+grave(Alt+`)の2つをトリガーキーとして定義している。日本語配列キーボードでない場合は,Alt+`(Alt+grave)による切替を使用する。
5.7 Fcitx5 のプロファイル設定
REM === Fcitx5 プロファイルの作成 ===
ssh -o StrictHostKeyChecking=no -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"
5.8 Fcitx5 の自動起動設定
REM === Fcitx5 の自動起動設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"mkdir -p ~/.config/autostart && printf '[Desktop Entry]\nType=Application\nName=Fcitx5\nExec=fcitx5 -d\nX-LXQt-Need-Tray=true\n' > ~/.config/autostart/fcitx5.desktop"
VM を再起動後,LXQt デスクトップ上で半角/全角キーまたは Alt+`(Alt+grave)を押すことで,日本語入力が有効になる。
第6章 Windows XP 風デザインの適用
6.1 概要
Linux デスクトップでは,画面外観を構成する要素が複数の独立したレイヤに分かれており,それぞれ別の仕組み・別の設定ファイルで管理されている(第0章 0.5 節参照)。本章で扱うレイヤと採用テーマは以下のとおりである。
| レイヤ | 対象 | テーマ形式 | 使用テーマ |
|---|---|---|---|
| LXQt パネル | タスクバー,システムトレイ,メニュー | QSS(Qt Style Sheet) | eXperience-LXQt |
| Openbox ウィンドウ装飾 | タイトルバー,ウィンドウ枠,ボタン | Openbox themerc | Retro 6 XP Luna |
| GTK テーマ | GTK アプリケーションの外観 | GTK3 テーマ | B00merang Windows XP Luna |
| Qt ウィジェットスタイル | Qt アプリケーションのウィジェット | Qt Style | Windows(Qt 標準) |
| アイコンテーマ | デスクトップ,ファイルマネージャのアイコン | freedesktop アイコンテーマ | Windows XP icon theme pack |
| カーソルテーマ | マウスカーソル | XCursor | modernXP |
| 壁紙 | デスクトップ背景 | 画像ファイル | 草原風 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 "VM_NAME=lubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
REM === B00merang Windows XP GTK テーマのダウンロード ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"printf '%s\n' '%USER_PASSWORD%' | sudo -S 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 カーソルテーマ
LXQt の設定画面に表示させるため,カーソルテーマは ~/.icons 配下に配置する。
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 テーマとアイコン・カーソルの設定
LXQt では,テーマとアイコンテーマは ~/.config/lxqt/lxqt.conf,カーソルテーマは ~/.config/lxqt/session.conf の [Mouse] セクションで管理される。
REM === LXQt テーマ・アイコンテーマの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"mkdir -p ~/.config/lxqt && printf '[General]\n__userfile__=true\ntheme=eXperience\nicon_theme=WinXP\n' > ~/.config/lxqt/lxqt.conf"
REM === カーソルテーマの設定(session.conf に追記) ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"printf '\n[Mouse]\ncursor_theme=modernXP\n' >> ~/.config/lxqt/session.conf"
6.3.2 Qt ウィジェットスタイルの設定
REM === Qt ウィジェットスタイルを Windows に設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"printf '[General]\nstyle=Windows\n\n[Qt]\nstyle=Windows\n\n[GTK]\ntheme=Windows XP Luna\n' > ~/.config/lxqt/lxqt-config-appearance.conf"
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 '0,/<name>.*<\/name>/s|<name>.*</name>|<name>Retro 6 XP Luna</name>|' ~/.config/openbox/lxqt-rc.xml; else printf '<openbox_config>\n <theme>\n <name>Retro 6 XP Luna</name>\n <titleLayout>NLIMC</titleLayout>\n <keepBorder>yes</keepBorder>\n <animateIconify>yes</animateIconify>\n </theme>\n</openbox_config>\n' > ~/.config/openbox/lxqt-rc.xml; fi"
6.3.4 LXQt パネルの設定(Windows XP 風タスクバー)
LXQt パネルを Windows XP 風のタスクバーとして設定する。パネルを画面下部に配置し,高さを 30 ピクセルに設定する。
REM === LXQt パネル設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"printf '[panel1]\nalignment=Left\nanimation-duration=0\nbackground-image=\ndesktop=0\nhidable=false\nhide-on-overlap=false\niconSize=22\nlength=100\nlengthInPercent=true\nlockPanel=true\nopacity=100\npanelSize=30\nposition=Bottom\nreserve-space=true\nshow-delay=0\nvisible=true\nwidth=100\n\n[panel1/plugins]\n1=mainmenu\n2=quicklaunch\n3=taskbar\n4=tray\n5=statusnotifier\n6=worldclock\n\n[mainmenu]\ntype=mainmenu\nalignment=Left\n\n[quicklaunch]\ntype=quicklaunch\nalignment=Left\n\n[taskbar]\ntype=taskbar\nalignment=Left\n\n[tray]\ntype=tray\nalignment=Right\n\n[statusnotifier]\ntype=statusnotifier\nalignment=Right\n\n[worldclock]\ntype=worldclock\nalignment=Right\n' > ~/.config/lxqt/panel.conf"
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 && printf '[Desktop]\nWallpaper=/home/%USER_NAME%/.local/share/wallpapers/xp_bliss_alt.jpg\nWallpaperMode=stretch\nBgColor=#3a6ea5\nDesktopIconSize=48\nShowHidden=false\n' > ~/.config/pcmanfm-qt/lxqt/settings.conf"
補足: 背景色 #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 && printf '[Desktop Entry]\nType=Application\nName=マイ コンピュータ\nExec=pcmanfm-qt computer:///\nIcon=computer\nTerminal=false\n' > ~/Desktop/computer.desktop && chmod +x ~/Desktop/computer.desktop"
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"printf '[Desktop Entry]\nType=Application\nName=ごみ箱\nExec=pcmanfm-qt trash:///\nIcon=user-trash\nTerminal=false\n' > ~/Desktop/trash.desktop && chmod +x ~/Desktop/trash.desktop"
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"printf '[Desktop Entry]\nType=Application\nName=マイ ドキュメント\nExec=pcmanfm-qt /home/%USER_NAME%/Documents\nIcon=folder-documents\nTerminal=false\n' > ~/Desktop/home.desktop && 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 && printf '[Settings]\ngtk-theme-name=Windows XP Luna\ngtk-icon-theme-name=WinXP\ngtk-cursor-theme-name=modernXP\ngtk-font-name=Noto Sans CJK JP 10\n' > ~/.config/gtk-3.0/settings.ini"
6.6 X カーソルテーマの既定値設定
REM === X カーソルテーマの設定 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost ^
"mkdir -p ~/.icons/default && printf '[Icon Theme]\nName=Default\nComment=Default Cursor Theme\nInherits=modernXP\n' > ~/.icons/default/index.theme"
6.7 最終再起動とデザインの確認
REM === 変数の設定 ===
set "VM_NAME=lubuntu2404"
set "USER_NAME=myuser"
set "USER_PASSWORD=changeme"
set "SSH_HOST_PORT=2222"
REM === VM の再起動 ===
ssh -o StrictHostKeyChecking=no -p %SSH_HOST_PORT% %USER_NAME%@localhost "printf '%s\n' '%USER_PASSWORD%' | sudo -S reboot"
echo.
echo 再起動後,GUI モードで起動: VBoxManage startvm "%VM_NAME%" --type gui
echo ログイン: %USER_NAME% / %USER_PASSWORD%
第7章 トラブルシューティング
7.1 インストール関連の問題
| 問題 | 原因 | 対処方法 |
|---|---|---|
VBoxManage が認識されない |
PATH が設定されていない | コマンドプロンプトを再起動する。または "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" の絶対パスで実行する |
VBoxManage unattended install が失敗する |
ISO ファイルのパスが正しくない,または ISO が破損している | ISO ファイルのパスを確認する。certutil -hashfile <ISOファイル> SHA256 でハッシュ値を計算し,公式の SHA256SUMS と照合する |
| Extension Pack のインストールが失敗する | 本体とバージョンが一致していない | VBoxManage --version の出力から得たバージョンで URL を組み立て直す(2.2 節) |
| インストール完了後に 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 で内容を確認し,User と Session=lxqt.desktop が設定されていることを確認する |
| 画面解像度が変更できない | Guest Additions が正しくインストールされていない | SSH 経由で lsmod | grep vboxvideo を実行し,カーネルモジュールがロードされていることを確認する。ロードされていない場合は Guest Additions を再インストールする |
| テーマが適用されない | テーマファイルが正しいディレクトリに配置されていない | LXQt テーマは ~/.local/share/lxqt/themes/,Openbox テーマは ~/.themes/<テーマ名>/openbox-3/themerc,GTK テーマは ~/.themes/<テーマ名>/ に配置されていることを確認する |
| カーソルテーマが変わらない | 設定ファイルまたは配置先が異なる | カーソルテーマは ~/.icons/ 配下に配置し,~/.config/lxqt/session.conf の [Mouse] セクションに cursor_theme が設定されていることを確認する |
| 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_MODULE,QT_IM_MODULE,XMODIFIERS)が設定されていない |
~/.config/environment.d/im.conf の内容を確認する。設定されていない場合は 5.5 節の手順を再実行する |
| Ctrl+Space で日本語入力が有効になってしまう | Fcitx5 のトリガーキー設定に Control+space が残っている |
~/.config/fcitx5/config の [Hotkey/TriggerKeys] セクションから該当行を削除し,fcitx5 -r で Fcitx5 を再起動する |
7.5 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