Raspberry PiにインストールしたブラウザをRDPから操作する

Raspberry PiでWebブラウザを全画面表示し、RDP(リモートデスクトップ接続)から操作できるようにしてみる。

環境

Raspberry Pi 3 (Raspbian Jessie Lite)

$ uname -a
Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Xorgのインストール

ブラウザを表示するにはGUI環境が必要になるので、まずXorgをインストールする。 合わせて、fbturboドライバをインストールして画面表示を高速化する。

$ sudo apt-get install xorg xserver-xorg-video-fbturbo

GUIログインを行うために、ディスプレイマネージャLightDMをインストールする。

$ sudo apt-get install lightdm

ここで、/etc/lightdm/lightdm.confを開き、以下のような設定を加えておくとよい。

  • 一定時間操作がないとき画面が消える動作をオフにする
  • ログイン画面においてユーザをリストから選択できるようにする
[SeatDefaults]
xserver-command=X -s 0 -dpms
greeter-hide-users=false

raspi-configを起動し、「3.3 Desktop」を選択してグラフィカルログインを有効にする。

$ sudo raspi-config

合わせて、「9.3 Memory Split」からGPU用のメモリをデフォルトの64MBから256MBに増やしておくとよい。

x11vncのインストール

Raspberry Piに接続したディスプレイ画面をリモートで操作できるようにするため、x11vncをインストールする。 続けて、VNCパスワードを設定する。

$ sudo apt-get install x11vnc

$ x11vnc -storepasswd
Enter VNC password:
Verify password:
Write password to /home/pi/.vnc/passwd?  [y]/n
Password written to: /home/pi/.vnc/passwd

起動時に自動実行されるよう、/lib/systemd/system/x11vnc.serviceを新規作成し、次のように記述する。

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/pi/.vnc/passwd -rfbport 5900 -shared

[Install]
WantedBy=multi-user.target

次のコマンドで、作成したサービスを有効化する。

$ sudo systemctl daemon-reload
$ sudo systemctl enable x11vnc.service

xrdpのインストール

x11vncだけでもVNCプロトコルで接続が可能だが、Windows標準の「リモートデスクトップ接続」から接続できるとより便利である。 そこで、xrdpをインストールし、RDP経由でVNCサーバに接続できるようにする。

xrdpパッケージをインストールするには次のようにする。

$ sudo apt-get install xrdp

接続時のダイアログにおいて、VNC経由のコンソール接続がデフォルトになるように、/etc/xrdp/xrdp.iniを開き、次の2つのセクションを入れ替えておく。

[xrdp1]
name=console
lib=libvnc.so
ip=127.0.0.1
port=5900
username=na
password=ask

[xrdp2]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

再起動した後、LAN内のWindows端末からRDP接続を行い、Raspberry Piのデスクトップを操作できるか確認する。

$ sudo reboot

Epiphanyブラウザのインストール

Raspberry Piでは、GPUアクセラレーションが有効なブラウザとしてEpiphanyが用意されている。 ここでは、browserユーザでログインすることでEpiphanyブラウザが全画面表示されるようにしてみる。

まず、Epiphanyブラウザとこれが利用するgnome-keyring、全画面表示のために使うxdotoolをインストールする。

$ sudo apt-get install epiphany-browser gnome-keyring xdotool

次に、音声、映像、キーボード・マウス入力が有効なbrowserユーザを作成し、パスワードを設定する。

$ sudo useradd -G audio,video,input -m browser

$ sudo passwd browser
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

browserユーザに切り替え、~/.bashrcをバックアップした後、全画面でEpiphanyブラウザを表示するように編集する。

$ sudo su - browser

$ mv .bashrc{,.bak}

$ vi .bashrc
xdotool search --sync --onlyvisible --class "epiphany-browser" windowsize 100% 100% &
exec epiphany-browser

RDPで接続してbrowserユーザでログインした後、適当なWebサイトを表示したときの写真を次に示す。

f:id:inaz2:20160422013334p:plain

課題

以上の設定である程度ブラウジングできるようになるが、以下のような課題も残されている。

  • Input Methodが入っていないため、日本語入力ができない
  • Flashが再生できない
  • クラッシュして見れないページがある(Netflixのログインページなど)

関連リンク

Special Thanks