自宅に設置したCeleron J4125 ミニPCによる VMware ESXi 8.0ホスト上に、リモートアクセス用として 軽量デスクトップ 環境の Xubuntu 仮想マシンを構築しました。
仮想マシンの構築
Xubuntu公式サイトに記載されているシステムの推奨最低環境は、
- CPU : 1.5GHz 2Cores
- RAM : 2GB
- HDD : 20GB
とあるので、今回はこれを元に以下のような仮想マシンを以前、Celeron J4125ミニPCで構築したVMware ESXi 8.0ホスト上に新規作成しました。
仮想ディスクを可変長のシンプロビジョニングにしている他、仮想オプションでUEFIセキュアブートを無効にしています。
ダウンロードしたXubuntu 22.04.1デスクトップ版ISOイメージを仮想光学ドライブへセットしているので、パワーオンでインストールが始まります。
Xubuntuのインストール
仮想マシンをパワーオンするとGRUBメニューの後、
見慣れたインストーラ画面が現れるので、 Xubuntuをインストール を選択。
キーボードレイアウトで英語キーボードを選択したら、
アプリケーションは最小インストールとし、サードパーティソフトウェアのインストールにチェックを入れました。
高度な機能も特に設定せず、デフォルトのままの新規インストールを選択。
EFIとLinuxの2つのパーティションで進みます。
タイムゾーンを設定して、
普段使いのユーザアカウントを作成すると、インストールが始まります。
10分弱でインストールは終わり、再起動待ちになるので、仮想インストールメディアを抜いて再起動。
Xubuntuの初期設定
インストール時に日本語表示を選択したせいか、立ち上がったシステムも日本語ロケールになっていました。
Xubuntuに限らず、こうした場合に困るのがホームフォルダ名が日本語表記になってしまうこと。ターミナルから次のコマンドを実行して、英文フォルダ名へ変更します( Don't ask me this again のチェックを忘れずに)。
1 |
$ LANG=C xdg-user-dirs-gtk-update |
日本語表記のフォルダの中にファイルが存在していると消えずに残ってしまうので、中身を英文名フォルダへ移したら削除してしまいます。
最小構成でも、FirefoxやThunderbirdはインストールされています。GUIベースのテキストエディタが見当たらなかったので、Mousepadをインストール。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo apt install mousepad パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: libgspell-1-2 libgspell-1-common libgtksourceview-4-0 libgtksourceview-4-common libmousepad0 以下のパッケージが新たにインストールされます: libgspell-1-2 libgspell-1-common libgtksourceview-4-0 libgtksourceview-4-common libmousepad0 mousepad アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 14 個。 1,023 kB のアーカイブを取得する必要があります。 この操作後に追加で 6,008 kB のディスク容量が消費されます。 続行しますか? [Y/n] y |
また、SSHから入ることも多いので、OpenSSH-Serverも追加でインストールしておきました。
1 2 3 4 |
$ systemctl status ssh Unit ssh.service could not be found. $ sudo apt install openssh-server |
open-vm-tools はセットアップ時にインストールされていたので、何もせずともESXi Host Client上でゲストOSの情報が表示されます。

図16.ゲストOS全般情報
サウンド追加とビデオ改善
リモートアクセスを前提としたデスクトップ用途と言えど、時にはブラウザでの動画視聴ぐらいは想定されるのに対し、このままでは音が出ないので仮想マシンにサウンドカードを追加します。
また、ビデオカードもメモリを許される最大値256MBまで増やし、3Dサポートも有効にしました。
xrdpでリモートアクセス
ここまでセットアップでは、VMware Workstationからリモートアクセスしてきましたが、より汎用的なリモートアクセスツールとして、VNCよりはセットアップが簡単なxrdpを導入してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ sudo apt install xrdp パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: xorgxrdp 提案パッケージ: guacamole 以下のパッケージが新たにインストールされます: xorgxrdp xrdp アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 14 個。 582 kB のアーカイブを取得する必要があります。 この操作後に追加で 3,380 kB のディスク容量が消費されます。 続行しますか? [Y/n] y -略- Generating 2048 bit rsa key... ssl_gen_key_xrdp1 ok saving to /etc/xrdp/rsakeys.ini -略- |
インストール後即、3389ポートで待機状態になりますが、設定を変えたければ /etc/xrdp/xrdp.ini を編集します。
1 2 |
$ ss -nat | grep 3389 LISTEN 0 2 *:3389 *:* |
早速、別のPCからリモートクライアントRemminaを使ってRDPによるリモートアクセスをしてみたのですが、いくつか難点が。

図19.Remminaからxrdpへアクセス
まず、RDPなのでローカルセッションがログアウトしていないと、そのユーザではログインも何もできずブラックアウト。なので、ローカルセッションが起動時に自動ログインするような設定にしないよう、注意する必要が有ります。
ブラウザのYoutube動画再生もたつくことが多いのですが、さらに致命的なのが「音が出ない」ということ。
これはリモートログイン後、 pulseaudio -k でプロセス再始動させると音が出るようになるケースもあるようですが、基本的にxrdpというよりpulseaudioの問題なので、これ以上の深入りはやめておきます。
RustDeskでリモートアクセス
次に以前にも試したことのある、クロスプラットフォームな遠隔ソフト、RustDeskを入れてみて代替になり得るか試してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$ wget https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9.deb $ sudo apt install ./rustdesk-1.1.9.deb パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 注意、'./rustdesk-1.1.9.deb' の代わりに 'rustdesk' を選択します 以下の追加パッケージがインストールされます: binutils binutils-common binutils-x86-64-linux-gnu build-essential curl dpkg-dev fakeroot g++ g++-11 gcc gcc-11 javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libbinutils libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-11-dev libitm1 libjs-jquery libjs-sphinxdoc libjs-underscore liblsan0 libnsl-dev libpython3-dev libpython3.10-dev libstdc++-11-dev libtirpc-dev libtsan0 libubsan1 libxdo3 linux-libc-dev lto-disabled-list make manpages-dev patch python3-dev python3-distutils python3-lib2to3 python3-pip python3-setuptools python3-wheel python3.10-dev rpcsvc-proto zlib1g-dev 提案パッケージ: binutils-doc debian-keyring g++-multilib g++-11-multilib gcc-11-doc gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-11-multilib gcc-11-locales apache2 | lighttpd | httpd glibc-doc git bzr libstdc++-11-doc make-doc diffutils-doc python-setuptools-doc 以下のパッケージが新たにインストールされます: binutils binutils-common binutils-x86-64-linux-gnu build-essential curl dpkg-dev fakeroot g++ g++-11 gcc gcc-11 javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libbinutils libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-11-dev libitm1 libjs-jquery libjs-sphinxdoc libjs-underscore liblsan0 libnsl-dev libpython3-dev libpython3.10-dev libstdc++-11-dev libtirpc-dev libtsan0 libubsan1 libxdo3 linux-libc-dev lto-disabled-list make manpages-dev patch python3-dev python3-distutils python3-lib2to3 python3-pip python3-setuptools python3-wheel python3.10-dev rpcsvc-proto rustdesk zlib1g-dev アップグレード: 0 個、新規インストール: 57 個、削除: 0 個、保留: 14 個。 68.6 MB 中 62.4 MB のアーカイブを取得する必要があります。 この操作後に追加で 15.4 GB のディスク容量が消費されます。 続行しますか? [Y/n] y -略- |
別のPCからインターネット越しにリモートアクセスして、Youtube動画再生してみると、動画もxrdpの時よりも安定しており、音声も正常にリモート越しに再生されました。

図20.RustDesk越しにYoutube再生
Youtube鑑賞中のESXiホストの負荷をアイドル時と比較してみると、CPU負荷が跳ね上がるので、さすがに非力なCeleron J4125では荷が重たそう。
リモートアクセス時もシャットダウン再起動したい
リモートアクセスの終了時には、ログアウトしか選択できず、シャットダウンや再起動させることができません。
これはxrdpでもRustDeskでも全く同じで、Polkitの仕業なのだそう。xrdpのGitHubで見つけたこちらの回答に沿って、ポリシーファイルを作成してみます。
1 2 3 4 5 6 7 8 9 |
[Allow users to shutdown from XRDP] Identity=unix-user:* Action=org.freedesktop.login1.power-off ResultAny=yes [Allow users to reboot from XRDP] Identity=unix-user:* Action=org.freedesktop.login1.reboot ResultAny=yes |
ポリシーファイルを作成したら、次のコマンドでシステムへ反映させます。
1 2 3 4 5 |
$ sudo nano /etc/polkit-1/localauthority/50-local.d/50-xrdp.pkla $ sudo invoke-rc.d dbus restart $ ps -ef | grep polkitd root 17172 1 2 12:54 ? 00:00:00 /usr/libexec/polkitd --no-debug |
これでリモートアクセスでも、Xubuntu仮想マシンのシャットダウンや再起動が可能になりました。