Ubuntu Weekly Recipe

第773回RemoteBoxでさまざまなPCからVirtualBoxを遠隔操作する

今回はもう1つのVirtualBoxフロントエンドであるRemoteBoxを紹介します。VirtualBoxデフォルトのフロントエンドであるVirtualBoxマネージャーとはどのような違いがあるのでしょうか。

VirtualBoxのフロントエンド

VirtualBoxのフロントエンドとして真っ先に思い浮かぶのは、VirtualBoxマネージャーでしょう。Qtで書かれたマルチプラットフォームなフロントエンドです。

VBoxManageというCLIフロントエンドもあります。GUIフロントエンドではできない設定にも対応していますが、マニュアルを見るとオプションが多すぎて使いこなせる気は全くしません。とはいえ、ピンポイントで使用するには非常に便利です。

なお、デフォルトでは有効になっていないのですが、実はSOAPに対応したWeb APIサーバー(VirtualBox Web Service)もあります。これを使用すれば独自のフロントエンドを作成できます。

今回取り上げるRemoteBoxはそのAPIに対応したGUIフロントエンドです。他にも似たような機能を提供するフロントエンドがありましたが、現在もメンテナンスされているのはこのRemoteBoxだけです。

VirtualBoxマネージャーはVirtualBoxが動作している環境でしか動作していませんが、RemoteBox(というよりVirtualBox Web Service経由での接続)はURLとユーザー名とパスワードがわかっていれば、どの端末からもアクセスできるというメリットがあります。すなわち複数の端末からVirtualBoxを共有したいときに便利です[1]

VirtualBoxのバージョン

VirtualBoxのバージョンは7.0を使用します。Ubuntuのバージョンは22.04 LTSとします。

今回VirtualBoxマネージャーはインストールせずUbuntu Serverにインストールします。したがってOracleが提供しているバイナリではなく、筆者のPPAを使用します。22.04 LTSのリポジトリには7.0はありません。

Extension Packをインストールしていますが、VirtualBox側の問題なのかRemoteBox側の不具合なのかは不明なものの、Extension Packを認識しません。したがってパッケージに収録されているVNCプラグインを使用します[2]

セットアップ作業 サーバー編

ではセットアップを開始しますが、8割くらいはVirtualBox(サーバー)の作業です。難しいところは特にないのですが、注意点としてはVirtualBox動作用に通常のユーザーを作成することです。もちろん自分しか使わないというのであれば特に気にすることはないのですが、複数人で使用する場合は専用のユーザーを作成することを強くおすすめします。ご存知のとおりVirtualBoxは使用しているユーザーの権限で仮想マシンの各種ファイルを作成するので、それはすなわちホームフォルダーが必要ということです。今回は「vbox」というユーザーを作成します。⁠vboxusers」というユーザーもいるため、紛らわしいので注意してください。

前述のとおり、VirtualBoxはVirtualBoxマネージャーなしでインストールします。次のコマンドを実行してください。

$ sudo add-apt-repository ppa:ikuya-fruitsbasket/virtualbox
$ sudo apt install virtualbox virtualbox-ext-pack virtualbox-guest-additions-iso --no-install-recommends

Extension Packをインストールするので、ライセンスに同意するか質問されます。ライセンスを読んだ上で少し見にくいですが図1のように「<Yes>」にしてエンターキーを押すと、ライセンスを承認したことになります。

図1 Extension Packのライセンス(PUEL)を承認するかどうか
図1

続いてVirtualBoxを使用するユーザーを作成します。次のコマンドを実行してください。

$ sudo adduser vbox
$ sudo adduser vbox vboxusers

VirtualBox Web Service自体はすでにインストールされているので、systemdのユニットを作成します。次のコマンドを実行してください。

$ sudo systemctl edit --force --full vboxweb-mod.service

内容は次のとおりにします。

[Unit]
Description=VirtualBox Web Service
After=network.target

[Service]
Type=forking
PIDFile=/run/vboxweb/vboxweb.pid
ExecStart=/usr/lib/virtualbox/vboxwebsrv --pidfile /run/vboxweb/vboxweb.pid --host (ホスト名) --background
User=vbox
Group=vboxusers

[Install]
WantedBy=multi-user.target

ホスト名の修正を忘れないでください。

/etc/default/virtualboxに以下3行を追記します。

VBOXWEB_USER="vbox"
VBOXWEB_TIMEOUT=0
VBOXWEB_HOST="(ホスト名)"

こちらもホスト名の修正を忘れないでください。

あとはひたすらコマンドを打ち込んでいきます。

$ sudo bash -c 'echo "d /run/vboxweb 0755 vbox vboxusers" > /etc/tmpfiles.d/vboxweb-mod.conf'
$ sudo mkdir /run/vboxweb
$ sudo chown vbox:vboxusers /run/vboxweb/
$ sudo chmod 755 /run/vboxweb/
$ sudo systemctl enable --now vboxweb-mod.service 

vboxweb-mod.serviceが起動していれば成功です。起動しない場合、まずはホスト名あたりを見直してみるといいでしょう(経験者談⁠⁠。

セットアップ作業 RemoteBox編

まずはRemoteBoxの動作に必要なパッケージをインストールします。次のコマンドを実行してください。

$ sudo  apt install libgtk3-perl libsoap-lite-perl freerdp2-x11 vinagre

RemoteBoxの動作に必要なのは最初の2つのパッケージで、あとは画面表示用のパッケージです。

もちろんRemoteBoxをダウンロードします。最新版の3.2をダウンロードしてください。

ダウンロード後展開してインストールする必要がありますが、手動だとやや面倒なのでシェルスクリプトを用意しました。

#!/bin/sh

RBOX=RemoteBox-3.2

if [ ! -d ./${RBOX} ]; then
  echo "${RBOX}をダウンロードし、このスクリプトと同じところに展開してください"
  exit 1
fi

mkdir -p ~/.local/bin
mkdir -p ~/.local/share/appdata
mkdir -p ~/.local/share/applications

cd ${RBOX}
cp remotebox ~/.local/bin
cp -r share/remotebox/ ~/.local/share
cp packagers-readme/remotebox.appdata.xml ~/.local/share/appdata
sed -i "s|\$Bin/share/remotebox|${HOME}/.local/share/remotebox|" ~/.local/bin/remotebox
desktop-file-install --dir=${HOME}/.local/share/applications packagers-readme/remotebox.desktop
update-desktop-database ~/.local/share/applications

以上の内容をremotebox-install.shなどとして保存し、実行するとユーザー権限でインストールされます。

一度ログアウトして再ログインすると、GNOME ShellにRemoteBoxのアイコンが表示され、起動できるようになります。

RemoteBoxの初期設定

RemoteBoxを起動します図2⁠。

図2 起動直後のRemoteBox
図2

「File⁠⁠-⁠Connection Profiles」で接続するVirtualBoxの情報を追加します図3⁠。プロファイル名、URL、ユーザー名、パスワードを入力します。なおデフォルトの場合はポート番号を省略できます。⁠Auto-Connect on Start」にはチェックを入れていませんが、必要であれば入れてください。

図3 簡単に接続できるよう、接続プロファイルを作成する
図3

「File⁠⁠-⁠RemoteBox Preferences」「Guest Display」タブを開きます図4⁠。⁠VNC Client」「Presets」をクリックし、⁠Vinagre」をクリックして先程インストールしたVinagreを使用するように変更します。

図4 VNC Clientの設定を変更する
図4

最低限必要な設定はこのくらいで、あとは「Connect」をクリックしてVirtualBoxに接続します。

ログを開いてみると図5⁠、Extension Packが使用できない旨のメッセージが表示されています。そして右から3番目の大きなアイコンが「Guest Display (VNC)」になっており、VNCしか使用できないことがわかります。

図5 Extension PackのRDP接続が使用できず、VirtualBoxビルトインのVNCプラグインが使用されていることがわかる
図5

仮想マシンを作成してみる

試しに仮想マシンを作ってみましょう。VirtualBoxマネージャーを使用するのと違い、いくつかポイントがあります。

ゲストOSはUbuntu 23.04としますが、インストーラーをダウンロードしてVirtualBoxが動作しているサーバーのVirtualBoxユーザー(今回の例だとvbox)にコピーしておく必要があります。

その上で「File⁠⁠-⁠Virtual Media Manager」を開きます。⁠Optical Discs」タブを開き、⁠Add」でインストーラーを選択します。図6のように登録できたら「OK」をクリックして閉じてください。

図6 Virtual Media Managerでインストーラーを登録する
図6

「New」をクリックしてゲストOSの初期設定をします図7⁠。⁠ISO Image」を選択する必要があることを除けば、VirtualBoxマネージャーを使用するのとあまり変わりありません。

図7 ゲストOS作成メニュー
図7

これでゲストOSが追加されます図8⁠。

図8 ゲストOSが追加された
図8

VNCを使用する場合はパスワードの設定が必要です。VirtualBoxユーザー(今回だとvbox)ユーザーにログインし、次のコマンドを実行します。

$ vboxmanage modifyvm <guestname> --vrdeproperty VNCPassword=<vncpassword>

ゲストOSの名称(guestname)がわからない場合、あるいは長い場合、あるいは入力が困難な場合は次のコマンドを実行してください。

$ $ VBoxManage list vms

すると次のように表示されます。

"Ubuntu 23.04" {cf766aa4-b3d6-43bc-a33d-6d394593d84e}

ゲストOSの名称は表示されているUUIDでも構わないので、どちらか入力しやすいものを入力してください。

ここまで来てようやく「Start」をクリックして起動します。操作画面はVNCビューアー、今回だとVinagreが起動してそちらに表示されます図9⁠。その際、先ほど指定したパスワードを入力する必要があります。

図9 VinagreにゲストOSが表示されている
図9

おすすめ記事

記事・ニュース一覧