メインコンテンツへスキップ

VNCでTermuxのLinuxデスクトップへリモート接続する方法

·
カテゴリー スマートフォン Termuxチュートリアル
タグ Proot-Distro VNC
目次

この記事では、VNCサーバーを設定して、TermuxのLinuxシステムデスクトップへアクセスする方法を説明します。prootまたはchrootでインストールしたLinuxシステムに適用できます。

TermuxはAndroidスマートフォンでLinuxを動かせます。環境を整えた後は、デスクトップ(グラフィカル環境)への接続方法を考える必要があります。TermuxのLinuxシステムデスクトップへ接続するには、Termux X11XSDL、VNCの3つの方法があります。

前者2つはスマートフォン上でXサーバーを動かす方法です。後者はリモートデスクトップの考え方で、スマートフォン上でVNCサーバーを動かし、仮想Xvncサーバーを起動してから、VNCクライアントで接続します。このVNCクライアントはローカルでも、別のPC上のクライアントでもかまいません。

グラフィック性能でいえば、XサーバーはVNCより優れており、3Dハードウェアアクセラレーションも実現しやすいです。

昔私がTermuxを学び始めた頃は、多くの人がVNCを使っていました。しかしTermux X11が成熟するにつれて、私はVNCを徐々に使わなくなりました。

3つとも同じスマートフォン上で動かす場合、どれもlocalhostなので遅延の問題はありません。VNCはXサーバーに比べ、実際のところ性能面の利点がほとんどありません。

VNCの強みは、別のPCからリモートアクセスできることです。SSH Xサーバーforwardingの方法と比べ、VNCは画質を下げて帯域幅を減らせますし、headlessで起動することもできます。リモートで表示するときに性能上の利点が出てきます。

そのためVNCは「PCからスマートフォンのTermuxデスクトップへ接続する」場面に向いています。小さな画面を見つめながら必死にコマンドを打つのは嫌ですよね。テキストだけのSSHアクセスに加えて、グラフィカルなVNCはよい選択肢です。

VNCとTermux X11の2つの方法は共存できます。おそらく互いに影響しません。

1. VNCクライアントを選ぶ
#

スマートフォンではAVNCまたはRealVNC Viewerをおすすめします。後者は機能が多いですが、プロプライエタリソフトウェアです。

PCではRemminaをおすすめします。

2. VNCサーバーを設定する
#

次のどちらかを選びます。

Termuxで直接VNCサーバーを動かす
#

実際にはproot-distroは不要です。Termux自体がネイティブのVNCサーバーパッケージを提供しています。ただし、proot-distro内のLinuxディストリビューションのデスクトップを開きたい場合は、この方法を使わないでください。

また、Termuxに収録されているデスクトップ環境パッケージはproot-distroほど豊富ではありません。現時点で最も完成度が高いのはXFCEです。

  1. TermuxにXFCEデスクトップをインストールします。ただしTermux X11はインストールしません。

  2. TigerVNCのパッケージをインストールします。執筆時点のバージョンは1.13.0です。

pkg install tigervnc
  1. VNCサーバーのパスワードを設定します。
vncpasswd
  1. VNCサーバー起動後に実行するプログラムを追加します。~/.vnc/xstartupを編集します。
mkdir ~/.vnc/

vim ~/.vnc/xstartup
  1. 次の内容を入力します。
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADRESS

# PulseAudio音声サーバーを起動。音声はTermuxから出力される
pulseaudio --start --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1

# デスクトップ環境を実行。ここではXFCE
exec startxfce4
  1. xstartupに実行権限を付与します。
chmod +x ~/.vnc/xstartup
  1. VNCサーバーの設定ファイルを定義します。~/.vnc/tigervnc.confを編集します。
vim ~/.vnc/tigervnc.conf
  1. 次の内容を入力します。
# 現在のセッションはXFCE
$session="xfce-session";
# 解像度。高いほど帯域幅を多く使う
$geometry="1920x1080";
# ビット深度。値は8/16/24/32で、数字が大きいほど画質はよいが帯域幅を消費する
$depth="32";
# 外部ネットワークから接続できるようにする
$localhost="no";

proot-distro内でVNCサーバーを動かす
#

先にDebianなどのTermux proot-distroをインストールしてください。続いてproot-distro内にデスクトップ環境をインストールします。最もリソースを食わないのはXFCEですが、KDE Plasmaを試してもかまいません。

  1. proot-distroにログインし、現在rootではなく一般ユーザーであることを確認します。
whoami

# rootの場合は su "ユーザー名" と入力して一般ユーザーへ切り替える
  1. TigerVNCのパッケージをインストールします。現在のバージョンは1.13.0です。
sudo apt install tigervnc-standalone-server tigervnc-xorg-extension
  1. VNCサーバーのパスワードを設定します。
vncpasswd
  1. VNCサーバー起動後に実行するプログラムを追加します。~/.vnc/xstartupを編集します。
mkdir ~/.vnc/

vim ~/.vnc/xstartup
  1. 次の内容を入力します。
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADRESS

# PulseAudio音声サーバーを起動。音声はTermuxから出力される
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1

# デスクトップ環境を実行。ここではXFCE
exec startxfce4
  1. xstartupに実行権限を付与します。
chmod +x ~/.vnc/xstartup
  1. VNCサーバーの設定ファイルを定義します。~/.vnc/tigervnc.confを編集します。
vim ~/.vnc/tigervnc.conf
  1. 次の内容を入力します。
# 現在のセッションはXFCE
$session="xfce-session";
# 解像度。高いほど帯域幅を多く使う
$geometry="1920x1080";
# ビット深度。値は8/16/24/32で、数字が大きいほど画質はよいが帯域幅を消費する
$depth="32";
# 外部ネットワークから接続できるようにする
$localhost="no";

3. VNCサーバーへ接続する
#

Termuxでtigervncserverまたはvncserverコマンドを入力し、VNCサーバーを起動します。画面に出力されるポート番号を確認します。通常は1から始まります。VNCサーバーのポートは5900から数えるため、この場合のポートは5901です。

ローカル接続
#

ローカル接続するには、スマートフォンでAVNCアプリを開き、ホスト接続を追加します。アドレスにlocalhost、ポートに5901を入力します。

AVNCの操作では、左側のボタンをタップしてタッチパッドモードに切り替えるのがおすすめです。Linuxデスクトップの文字が小さすぎる場合は、解像度を下げるか、そのデスクトップ環境の設定でDPIを調整してください。

VNCサーバー接続を終了した後は、Termuxに戻ってサーバーを停止してください。そうしないと、次回起動時に新しいポートで動いてしまいます。

vncserver -kill :1

PCからリモート接続
#

まずスマートフォンとPCを同じWi-Fiネットワークに接続します。

Termuxでsudo apt install net-tools & ifconfigコマンドを実行してスマートフォンのローカルIPを取得し、Wlanの行を確認します。

次にPCのReminnaのアドレス欄をVNCに切り替え、スマートフォンIP:5901を入力して接続します。

Reminnaでは左側のボタンを押して、リモートデスクトップのサイズに合わせられます。入力方式はリモート側のものしか使えませんが、両側のクリップボードは自動で同期されます。

VNCサーバー接続を終了した後は、Termuxに戻ってサーバーを停止してください。そうしないと、次回起動時に新しいポートで動いてしまいます。

vncserver -kill :1

関連記事
#

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。