前回はRaspberry Pi 3 Model B+にリモート接続しました。これでRaspberry Piにディスプレイを接続せずに使えるようになりました。
前回はリモート接続にSSHとVNCを利用しましたが、今回はリモートデスクトップを使って接続してみたいと思います。
リモートデスクトップ
Windowsには他のPCの画面を表示するリモートデスクトップという機能があります。
この機能をつかってRaspberry Piに接続し、Linuxのデスクトップ画面を表示させようというわけです。
リモートデスクトップはWindowsの標準機能なのでWindowsにVNCビューワーのようなアプリを導入する必要がないのがメリットです。
xrdpのインストール
Raspberry Piを起動してxrdpをインストールします。
GUIが使える場合は、Raspberry Piのメニューで「設定」→「Add / Remove Software」を選択します。
表示されたウィンドウの左上に「xrdp」を入力してリターンキーを押すと「Remote Desktop Protocol (RDP) server」というのが表示されるはずです。
「Remote Desktop Protocol (RDP) server」のチェックボックスをオンにしたら右下の「OK」を選択すればxrdpがインストールされます。
コマンドラインで操作する場合は
$ sudo apt-get install xrdp $ sudo service xrdp restart
と入力すればOKです。
リモートデスクトップの接続
Raspberry Pi側の準備ができたのでそれではリモートデスクトップで接続してみます。
Windowsのスタートメニューから「リモートデスクトップ接続」を探して実行します。
次のようなウィンドウが出るので「オプションの表示」を選択しましょう。
これでリモートデスクトップのオプションが設定できるので「画面」タブを選択します。
「画面の設定」のエリアでリモートデスクトップの画面サイズ(=Raspberry Piのデスクトップ画面のサイズ)を設定できます。
Windows画面全体をリモートデスクトップで覆われたくないときはここで画面サイズより小さい解像度を設定しておきます。
設定が終わったら「オプションの非表示」を選択してオプションの設定画面をクローズします。
次のようなウィンドウがでるのでRaspberry PiのIPアドレス(ここでは192.168.10.107としています)と入力して「接続」を選択します。
Raspberry PiのIPアドレスについては、Raspberry Piのコマンドラインで
$ ifconfig
と入力して調べましょう。
すると次のような警告が出るので、チェックボックスを選択してから「はい」を選択します。
これでリモートデスクトップのログイン画面が表示されるはずです。
「Session」で「XVnc」を選択したあと、Raspberry Piのユーザ名とパスワードでログインします(デフォルトのユーザ名は「pi」です)。
これでRaspberry Piのデスクトップが表示されればOKです。
リモートデスクトップの設定を保存する
動作確認がOKでリモートデスクトップのサイズなどが決まったら設定を保存しておきましょう。
リモートデスクトップの接続を起動して「オプションの表示」を選択したあと「全般」タブを選び、接続設定の「名前をつけて保存」を選択しましょう。
私は「Raspberry Pi.rdp」として保存しました。
今後はこのアイコンをダブルクリックするだけでリモートデスクトップに接続することができます
GUIをリモートデスクトップのみにする
これまでの設定でWindowsからリモートデスクトップでRaspberry PiのGUI(デスクトップ画面)を利用できるようになりました。
しかしこの環境ではHDMIに出力するGUI(デスクトップ画面)も有効になっており、Raspberry Piで二つのデスクトップ画面が動いていることになります。
調べてみるとGUI描画を担当するXサーバが2つ実行していることがわかります。
$ ps ax | grep Xorg 474 tty7 Ssl+ 0:03 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch 2206 ? Sl 0:01 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp
Xサーバはメモリを食うプログラムなので、Raspberry PiにHDMIでディスプレイを使っていないユーザにはこれはメモリの無駄遣いです。
Raspberry Piにディスプレイを接続しない場合には、HDMI用のGUIは停止してしまいましょう。
Raspberry Piのメニューから「設定」→「Raspberry Piの設定」を選択し、ブートを「CLI」に変更してOKを選択します。
実は「Raspberry Piの設定」はリモートデスクトップ画面では動作しません。
HDMIディスプレイに表示されているデスクトップか、VNCで表示されているディスプレイで「Raspberry Piの設定」を実行してください。
これでRaspberry Piを再起動するとRaspberry PiではデフォルトではGUIが起動しません。そのため、メモリの消費量がかなり少なくなります。
$ free -h total used free shared buff/cache available Mem: 927M 39M 805M 11M 82M 828M Swap: 99M 0B 99M
この状態でリモートデスクトップで接続すると初めてGUIが起動するかたちになります。
基本はSSHでコマンドラインを使い、ときどきGUIを利用するという方にはこの設定の方が良いのではないでしょうか。
HDMIディスプレイのGUIを有効に戻すためには「sudo raspi-config」を実行して「3 Boot Options」→「B1 Desktop / CLI」→「B4 Desktop Autologin」を選択してください。
リモートデスクトップで起動しないアプリの対策
これでリモートデスクトップで必要に応じてGUIが使えるようになりました。
しかし実際に使ってみると「Raspberry Piの設定」などroot権限が必要なアプリが起動しないという問題があることがわかります。
これはアプリの起動時にリモートデスクトップのディスプレイ番号を正しく指定できていないためです。
アプリの起動コマンドを修正しておきましょう。Raspberry Piのメニューから「設定」を開き、「Raspberry Piの設定」を右クリックして「Properties」を選びます。
これでメニューを選択したときに実行されるコマンドを修正することができます。
「デスクトップエントリ」のタブを選んだら、コマンドの欄で「sudo -A」のあとに「-E」を挿入します。
「-E」の前後にはスペースを入れることを忘れないようにしてください。
編集が終わったら「OK」を選択しておきます。
これでリモートデスクトップでも「Raspberry Piの設定」が実行できるようになるはずです。
そのほかにもリモートデスクトップでメニューから起動しないアプリがあれば同様に対処できると思います。
まとめ
今回はRaspberry Piにリモートデスクトップで接続できるようにしてみました。
リモートデスクトップで使えるようにすると必要なときだけGUIを有効にすることができ、メモリを効率的に使うことができます。
コンソール中心にRaspberry Piを操作する方は、GUIはデフォルトを無効にして、必要に応じてリモートデスクトップを利用すると良さそうです。
次回はRaspberry Piでシリアルコンソールを使い方法を紹介します。
コメント
失礼致します、Rastec会社の広報担当の胡と申します。BLOGにてお客様のレビューをご拝見させて頂きました、つきましてはお客様に弊社のラズベリーパイ4ケースレビューを投稿して頂きたく存じます。レビュー用機材に関しましては無償にて提供させて頂きます。御返事お待ちしております。どうぞよろしくお願いします。
コメントありがとうございます。
残念ながらRaspberry Pi 4本体自体をまだ購入していないのでレビューはできそうにありません。
レビュー記事を作成する時間がないというのもあります・・・
申し訳ございません。