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サイトを表示したときの写真を次に示す。
課題
以上の設定である程度ブラウジングできるようになるが、以下のような課題も残されている。
- Input Methodが入っていないため、日本語入力ができない
- Flashが再生できない
- クラッシュして見れないページがある(Netflixのログインページなど)
関連リンク
- Screen sharing between Raspberry PI and Mac OSx - Stack Overflow
- VNC/Servers - Community Help Wiki
- xinitrc - ArchWiki
- Web browser released! - Raspberry Pi
- Disable screen blanking in X-Windows on Raspbian - Raspberry Pi Stack Exchange