投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2019年10月30日水曜日

【Raspbian Buster September 2019】VNC Serverを利用してpiユーザーのリモートデスクトップ環境を構築する




■realvnc-vnc-serverというパッケージがインストールされているか確認

○まず、正式なパッケージ名を取得

piユーザーでSSHログインした後、suでrootユーザーになった。

root@raspberrypi:/home/pi# apt-cache search realvnc*
libnet-vnc-perl - Perl module implementing a simple VNC client
realvnc-vnc-server - VNC® Server
realvnc-vnc-viewer - VNC® Viewer

○取得したパッケージ名でインストール操作
すると、既に最新版がインストール済みだとわかった。
root@raspberrypi:/home/pi# apt-get install realvnc-vnc-server
Reading package lists... Done
Building dependency tree     
Reading state information... Done
realvnc-vnc-server is already the newest version (6.5.0.41824).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Raspbian Buster September 2019 with desktop and recommended software には、最初から、realvnc-vnc-serverパッケージがインストールされているとわかった。



■piユーザーでVNCセッションにログインするための設定

ただし、vncserverには三つのモードが存在する。
  -user       Set the password for VNC Server in User Mode.
  -service    Set the password for VNC Server in Service Mode.
  -virtual    Set the password for VNC Server in Virtual Mode.
今回は、VNC ServerをVirtualモードで使いたい。


○まず、piユーザー用に、VNCパスワードを設定した。

piユーザーになった。
root@raspberrypi:/home/pi# su pi

piユーザーのためのVNCパスワードを設定した。(-virtualを指定した。)
pi@raspberrypi:~ $ vncpasswd -virtual
Setting "Password" VNC parameter for Virtual Mode server
Password:
Verify:
Successfully set "Password" VNC parameter in /home/pi/.vnc/config.d/Xvnc
Successfully set "Password" VNC parameter in
/home/pi/.vnc/config.d/vncserver-x11-virtual

○VNCセッションでのマウスカーソルの形状を矢印に設定した。

sudoか、rootユーザーで編集を行うこと。

この設定がなければ、×印のカーソルになった。

CTRL + w で、下記コマンドで設定ファイルを開き、xsetroot を検索して編集箇所を見つけること。

nano /etc/vnc/xstartup
(略)
xsetroot -solid grey -cursor_name left_ptr(略)

CTRL+s で上書き保存、CTRL+x で終了する。


○一度だけ、VNC Serverをpiユーザーで起動した。

piユーザーになった。
root@raspberrypi:/home/pi# su pi

そして、オプションを指定して、VNC Serverを起動した。
(重要)
ここで一度起動しておかないと、必要な設定が自動的にされないようである。また、後の手順に示すように、セッションを終了させることを忘れないように!
オプション最後の、:2はディスプレイ番号である。VNCセッション毎に異なる番号をつける必要がある。
pi@raspberrypi:~ $ /usr/bin/vncserver -Encryption PreferOff -Authentication VncAuth -geometry 1600x900 :2
VNC(R) Server 6.5.0 (r41824) ARMv6 (Aug 16 2019 00:24:44)
Copyright (C) 2002-2019 RealVNC Ltd.
RealVNC and VNC are trademarks of RealVNC Ltd and are protected by trademark
registrations and/or pending trademark applications in the European Union,
United States of America and other jurisdictions.
Protected by UK patent 2481870; US patent 8760366; EU patent 2652951.
See https://www.realvnc.com for information on VNC.
For third party acknowledgements see:
https://www.realvnc.com/docs/6/foss.html
OS: Raspbian GNU/Linux 10, Linux 4.19.75, armv7l
Generating private key... done
On some distributions (in particular Red Hat), you may get a better experience
by running vncserver-virtual in conjunction with the system Xorg server, rather
than the old version built-in to Xvnc. More desktop environments and
applications will likely be compatible. For more information on this alternative
implementation, please see: https://www.realvnc.com/doclink/kb-546
Running applications in /etc/vnc/xstartup
VNC Server catchphrase: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
             signature: xx-xx-xx-xx-xx-xx-xx-xx
Log file is /home/pi/.vnc/raspberrypi:2.log
New desktop is raspberrypi:2 (192.168.1.2:2)

ここで、一度、VNCクライアントソフト(私はTiger VNC Viewerを用いた)から、VNCセッションに接続した。
Raspberry piのIPアドレス:ディスプレイ番号 という書式で、VNC Serverを指定した。
192.168.1.2:2
問題なく、VNCセッションに接続することができた。

★VNCセッションを終了した。(これも忘れないこと!)
pi@raspberrypi:~ $ /usr/bin/vncserver -kill :2



○次に、piユーザーのためのVNC Serverを自動起動するための設定を行った。

(注意)
以下では、systemdを用いてvnc Serverを起動させる設定を行っている。
しかし、systemdからVNC Serverを動作させた場合、polkitが動作しなかった。
そのため、gnome-disksなど特権を必要とするアプリケーションでは権限がないというエラー
「Not authorized to perform operation (udisks-error-quark, 4)」
が表示された。
しかし、上記のように、ユーザーのSSHコンソールからvncserverコマンドを起動する方法では問題は発生しなかった。(←これは重要な回避策
tigervncではこれについてバグが報告されている。
realvncでも同様のバグがあるのではないか。 

rootユーザーになった。
pi@raspberrypi:~ $ su

次のファイルを新規作成して下記のように記述した。
root@raspberrypi:/home/pi# nano /usr/lib/systemd/system/vncserver-pi.service
[Unit]
Description=VNC Server for user pi in Virtual Mode daemon
After=network.target

[Service]
User=pi     
Type=forking
#ExecStart=/usr/bin/vncserver -geometry 1600x900 :2
ExecStart=
/usr/bin/vncserver -Encryption PreferOff -Authentication VncAuth -geometry 1600x900 :2
ExecStop=/usr/bin/vncserver -kill :2
Restart=on-failure
RestartSec=5
KillMode=process

[Install]
WantedBy=multi-user.target

CTRL+s で上書き保存、CTRL+x で終了する。

piユーザーのためのVNC Serverがシステム起動時に自動的に立ち上がるよう設定した。
root@raspberrypi:/home/pi# systemctl enable vncserver-pi.service
Created symlink /etc/systemd/system/multi-user.target.wants/vncserver-pi.service → /usr/lib/systemd/system/vncserver-pi.service.

手動で、VNC Serverを起動した。
root@raspberrypi:/home/pi# systemctl daemon-reload
root@raspberrypi:/home/pi# systemctl start vncserver-pi.service

先程と同様にしてVNCクライアントソフトから、VNCセッションに接続した。
Raspberry piのIPアドレス:ディスプレイ番号 という書式で、VNC Serverを指定した。
192.168.1.2:2
VNCセッションに接続することができた。

手動で、VNC Serverを終了した。
セッション内デスクトップで動作中のプログラムなどは終了するので注意すること!
root@raspberrypi:/home/pi# systemctl stop vncserver-pi.service


これで、システムが再起動すると、自動的に、piユーザーのためのVNC Serverが起動することになる。



○さらに別のユーザーについても同じことを行いたい場合

もし、さらに別のユーザーを追加し各々デスクトップを用意してVNCで接続できるようにしたいなら、次のページを参考にしてください。

【Raspbian Buster September 2019】VNC Server virtualモードで、新規に作成したユーザーのリモートデスクトップ環境を個々に構築する




<参考>

・VNC viewer: "No matching security types"
< https://www.raspberrypi.org/forums/viewtopic.php?t=176408 > 2019年10月25日

・RealVNC server in virtual mode - Enterprise license required?
< https://www.raspberrypi.org/forums/viewtopic.php?t=249124 > 2019年10月25日

・Bug 1633805 - tigervnc-server, when started via systemd produces problems with polokit when DE is Xfce
< https://bugzilla.redhat.com/show_bug.cgi?id=1633805 > 2019年10月25日

・PolicyKit failed over headless VNC
< https://forums.fedoraforum.org/showthread.php?316905-PolicyKit-failed-over-headless-VNC&p=1809280#post1809280 > 2019年10月25日

・Jessie and XRDP
< https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=122386&p=861126 > 2019年10月26日

・Understanding VNC Server Modes
< https://help.realvnc.com/hc/en-us/articles/360002253238-Understanding-VNC-Server-Modes > 2019年10月25日

・VNC Connect and Raspberry Pi
< https://help.realvnc.com/hc/en-us/articles/360002249917-VNC-Connect-and-Raspberry-Pi#creating-and-remoting-a-virtual-desktop-0-5 > 2019年10月25日


2019年10月27日日曜日

【Raspbian Buster September 2019】OSインストールから初期セットアップ(rootユーザー、SSHログイン、システム更新、ヘッドレス運用、microSD丸ごとバックアップ、リストアなど)


以下では、Raspberry pi 4 Model B(4GBタイプ)に、Raspbian をインストールし、
rootユーザーへの切り替え、SSH接続、システムの更新を行うまでの手順を記載したものである。
また、最後に、RaspbianをインストールしたmicroSDXCカードの、
バックアップ方法とリストア方法についても記載した。

インストールには、microSDXCカードへの書き込みで別マシンが必要になる。
ここでは、Linux(CentOS 7)マシンを使用している。


<使用したもの>

○OSインストール段階で使ったもの
Linuxマシン、
SDXCカードリーダー、
空の高速なmicroSDXC(ここでは、ランダムアクセス性能にも優れた64GB、U3タイプを用いた)、

(注意)
microSDXCは、64GBのものを用いた。
容量が大きいことは、ユーザーデータの保存容量が増すだけでなく、
SDカードのコントローラーによって分散書き込みできる領域が増すということだと考えられるので、
SDカードの寿命も長くすることができると考えられる。

○OS初期セットアップ段階で使ったもの
キーボード、
マウス、
HDMI接続モニター、

アップデートのためにインターネットに接続できるネットワーク環境も用いている。



■Raspberry piの公式OSであるRaspbianの導入

ファイルのダウンロードやSDカードへの書き込みなどの準備作業では、
Linuxマシン(CentOS 7 64bit)を用いた。このLinuxマシンではGUIが使える。
この項目では、この準備用マシンでの操作について記載している。

○ダウンロード

以下のページから、Raspbian というOSをダウンロードした。
https://www.raspberrypi.org/downloads/raspbian/

Raspbianには、現在のところ二種類が用意されていた。
いずれも、バージョンは、September 2019 というものである。

一つは、Raspbian Buster with desktop and recommended software で、
デスクトップの環境に追加のお勧めソフトウェアがパッケージされたものである。

もう一つは、Raspbian Buster with desktop で、そういう追加のソフトウェアがないものである。
(必要に応じて、自分で追加ソフトを選択して導入することもできる。)

ここでは、追加ソフトウェア付のデスクトップ環境を選択した。
ダウンロードしたファイルは3GB程で、zipで圧縮されていた。

(注意)
ブラウザを用いてダウンロードした場合、転送速度が非常に遅い場合に、
セッションがタイムアウトになってしまうことがあった。
その場合、wgetコマンドを用いてダウンロードすれば良かった。


○microSDXCカードへのインストール

インストールと言っても、インストーラーがあるわけではない。
ダウンロードしたファイルは、OSのイメージになっているので、
それをSDカードにそのまま書き込むシンプルな方法で良い。

まず、圧縮ファイルを展開した。
# unzip 2019-09-26-raspbian-buster-full.zip

すると、2019-09-26-raspbian-buster-full.img というファイルが得られた。
このファイルをmicroSDXCカードにRAWデータとして書き込めば良い。
次にその方法を示す。

(注意)
ファイルとして書き込むのではない。
imgファイルにはRaspberry piシステムディスクのイメージがそのまま書き込まれている。
RAWデータとして専用のコマンドでmicroSDXCカードに書き込むことによって、
そのディスク構造(パーティションやファイルシステム)ごとmicroSDXCに転写されることになる。
(注意)
Linuxシステムでは、SDXCカードはデバイスファイルと対応づけられる。
即ち、対応づけられたデバイスファイルにデータを放り込むことによって、
そのSDXCカードにデータが転写される。
まず、SDXCカードリーダーに差し込んだSDXCカードが、
Linuxシステム上でどのデバイスファイル名で認識されたかを確認する。
そこで、microSDXCカードを操作するために、gnome-disksを起動した。(GUI必要)
# gnome-disks
このアプリケーションは、gnome-disk-utility というパッケージから導入できる。


そして、ターゲットの空のmicroSDXCカードを、準備用マシンのカードリーダーに差し込んだ。
起動中のgnome-disksにより、microSDXCがどのデバイスファイルに割り当てられたかわかった。
あるいは、下記ページを参考にして、デバイス名を調べることができる。
http://akira-arets.blogspot.com/2010/03/centos54sd.html

ここでは、microSDXCカードが /dev/sdX というデバイスファイルを割り当てられたものとする。


次のフォーマットを参考にして、microSDXCにデータを書き込んだ。(=インストール)
# dd if='2019-09-26-raspbian-buster-full.img' of=/dev/sdX bs=4M
1624+0 レコード入力
1624+0 レコード出力
6811549696 バイト (6.8 GB) コピーされました、 223.274 秒、 30.5 MB/秒
(注意)
この段階では、書き込まれたデータは6.8GBであるが、
Raspberry pi システムを立ち上げてセットアップが完了した段階では、
64GBのSDカードいっぱいにまでファイルシステムが拡張されていた。
以前のより古いRaspbianではこのような自動拡張はなかったと思う。

(注意)
デバイスファイル(/dev/sdX の所)の指定は間違えないようにすること。
さもなければ、意図せずに別のディスクの内容を破壊してしまうことになる。
bsで指定されている4Mというのは一度に書き込み操作するデータの大きさである。
これが小さいとシーケンシャルライトにならずに、書き込み速度が落ちてしまうことがある。
ここで使用したSDXCカードは、U3という書き込みが高速のものである。
Raspberry piでは、SDXCカードがハードディスク代わりとなるので、高速アクセスのタイプを選んだ。
本当はきちんとランダムアクセスの早いSDXCカードを探して選んだ方が良い。

書き込みが完了したら、microSDXCカードに対して予めgnome-disksで「ディスクの取り出し」を行う。
その上で、microSDXCカードをカードリーダーから取り外した。



■Raspberry pi の起動

○先ず初めに

インストール済みのmicroSDXCカードをRaspberry piのカードスロットに差し込んだ。
キーボード、マウス、そしてHDMI端子よりモニターに接続した。
さらに、ローカルネットワーク接続用のLANケーブルを差し込んだ。

その上で、電源供給のためにType-Cを差し込んだ。
これにより、Raspberry piが起動した。

(注意)
デフォルトでは、SSHログインもできないし、
セットアップは、GUIで行うためにマウスも必要だった。
モニターの無いところで起動してしまうと、終了させることもできなくなり、
仕方無く電源断をすればSDのファイルシステムを壊してしまうことになるだろう。

初回起動は、ラズベリーのアイコンが表示されてから、モニターにデスクトップ画面が表示されるまでに時間がかかった。(5分くらい?)
モニターが真っ暗な状態になっていてもじっくり待つ必要があった。

デスクトップが表示されると、セットアップを促すウインドウが開かれた。
地域や言語を選択し、piユーザー(デフォルトユーザー)のパスワードの設定を行った。
WiFi接続の設定もここで行うことができる。

設定が完了すると、再起動が行われた。


○rootユーザーを使用するための設定

rootユーザーは、パスワードを設定するだけで使用できるようになった。
仮想端末を起動した。

rootユーザーのパスワードを設定した。
pi@raspberrypi:~ $ sudo passwd root


○SSHログインできるようにするための設定

続いて、rootユーザーに切り替えた。
(さきほど設定したパスワードを入力した。)
pi@raspberrypi:~ $ su
Password: 
root@raspberrypi:/home/pi#
これでrootユーザーに切り替わった。

SSHという空のファイルをbootディレクトリに作成した。
root@raspberrypi:/home/pi# touch /boot/ssh

これで、再起動を行うと、SSH接続が可能となった。

次回は、SSH接続を行うので、ここでRaspberry piに割り当てられているIPアドレスを確認した。
root@raspberrypi:/home/pi# ip a | grep inet
inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute eth0
192.168.1.2 がそのアドレスである。環境によって当然異なる。

再起動を行った。
root@raspberrypi:/home/pi# reboot



■Raspberry pi システムの更新


○Raspberry pi へのSSHログイン

上記手順で、Raspberry piにリモート接続(SSH接続)ができるようになった。
別マシンから、Raspberry piにSSH接続を行った。
(デフォルトではrootユーザーは直接ログイン不可だった。)

$ ssh pi@192.168.1.2



○システムのアップグレードを行った。

piユーザーでSSHログイン後、rootユーザーに切り替えた
(さきほど設定済みのrootパスワードを入力した。)
pi@raspberrypi:~ $ su
Password: 
これで、rootユーザーに切り替わった。
root@raspberrypi:/home/pi#

不意にSSHセッションが切れることに備えて、仮想端末tmuxを導入した。
root@raspberrypi:/home/pi# apt-get install tmux

仮想端末tmuxを起動した。
root@raspberrypi:/home/pi# tmux

念の為、インストール直後のunameの情報を挙げておく。
root@raspberrypi:/home/pi# uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux
システムの更新を行った。
(updateでパッケージの更新の有無を調べ、upgradeで更新する。)
root@raspberrypi:/home/pi# apt-get update
root@raspberrypi:/home/pi# apt-get upgrade

更新には結構な時間が必要だった。
ネット環境、microSDXCカードの性能にも依るだろうと思う。

完了後、再起動を行った。
root@raspberrypi:/home/pi# reboot


アップデート後のunameの情報
とくに変化は無かった。
root@raspberrypi:/home/pi# uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux


■ディスプレイ不要のヘッドレス運用について

ところで、この段階で、マウスを使うGUIデスクトップ画面をリモートアクセスで利用するための設定ができる準備ができた。

ネットワーク越しに、別のパソコンからリモートアクセスでデスクトップ画面を利用することをヘッドレス運用と言う。
Raspberry pi 専用にディスプレイを接続する必要がないということである。

ヘッドレス運用のための設定が必要な場合は、以下を参照してください。

二つにページを分けていますが、注意点もあるため、順に目を通すことをお勧めします。

・デフォルトpiユーザーでヘッドレス運用をするための設定について
【Raspbian Buster September 2019】VNC Serverを利用してpiユーザーのリモートデスクトップ環境を構築する

・新規にユーザーを作成してヘッドレス運用をするための設定について
【Raspbian Buster September 2019】VNC Server virtualモードで、新規に作成したユーザーのリモートデスクトップ環境を個々に構築する

上記の設定を行う前に、システムのアップグレードを先ず行うことを推奨します。



■システムのバックアップとリストア

初期セットアップが完了した後、いつでも同じ環境に戻せるようにするために、
microSDXCにインストールされているシステム全体のバックアップを作成した。

ここでも、バックアップファイルの保存先はLinux(CentOS 7)とした。


○Raspberry piからmicroSDXCカードの取り出し

まず、Raspberry pi を終了させた。
root@raspberrypi:/home/pi# poweroff

Raspberry piのシャットダウンを確認後、
本体microSDカードスロットから、microSDXCカードを取り出した。


○取り出したmicroSDXCカードのバックアップ

microSDXCカードをバックアップ保存先とするLinuxマシンのカードリーダーに取り付けた。
既に述べた方法を参考にして、デバイスファイル名を確認した。

ここでは、microSDXCカードが /dev/sdX というデバイスファイルを割り当てられたものとする。

# dd if=/dev/sdX | gzip -c > Raspbian_Raspi4_testmachine_20191025.img.gz

ddコマンドにより、microSDXCの内容が全て読み取られて、
gzipコマンドによって圧縮されてから指定したgzファイルに保存される。
圧縮をかけたので、microSDXCは64GB程度あるが、3GB程度に圧縮されて保存できた。


○バックアップファイルからmicroSDXCへリストア

リストアするには次のようにする。
# gzip -dc < Raspbian_Raspi4_testmachine_20191025.img.gz | dd of=/dev/sdX

バックアップのときに発行したコマンドと逆のデータの流れになっている。

(注意)
一つ気になることがある。それは、リストア先のmicroSDXCの容量である。
リストア先のmicroSDXCカードがバックアップ元と全く同じ容量であるか、
あるいはそれよりも大きい場合は問題ないだろう。
しかし、逆に、少しでも容量が小さい場合にはデータを全て書き込みできずに、
エラーになると考えられる。
同じ64GBと表記されたmicroSDXCでもメーカーや型番やロットによって、
容量が同じでない場合があるので注意が必要である。
悩ましさを切り捨てるために、リストアが必要になった際には、
128GBサイズのmicroSDXCカードを使ってみることも手である。


○上記の方法でリストアを試した結果

バックアップしたRaspberry pi 4 のSDカードの容量は、次の通りである。

(parted) unit b                                                         
(parted) p                                                             
Model: SD SA64G (sd/mmc)
Disk /dev/mmcblk0: 61983424512B

そして、リストア先として用いた新しい空のSDカードの容量は、次の通りである。

(parted) unit b                                                         
(parted) p
Model: SD SR64G (sd/mmc)
Disk /dev/mmcblk0: 63864569856B

このように比べると、リストア先のSDカードの容量は同じ64GBタイプでも少し大きいものだとわかる。
これはメーカーや、型番、ロットによって異なるので実際に試してみなければわからない。
したがって既に述べたように、リストア先としてはワンサイズ上のタイプのSDカードを選ぶ手が確実となる。


リストアコマンドの結果は次の通りである。
bs=4M は一度に書き込むデータの量である。
これを省略するとシーケンシャルライトにならずにSDへの書き込みが非常に遅くなる場合がある。

[root@localhost Raspberry]# gzip -dc < Raspbian_Raspi4_testmachine_20191025.img.gz | dd of=/dev/sdX bs=4M
121061376+0 レコード入力
121061376+0 レコード出力
61983424512 バイト (62 GB) コピーされました
リストア先SDカードのサイズは、63864569856バイトあるので、問題なく書き込むことができたわけである。


そして、このリストアしたSDカードを、新規に購入したRaspberry pi 4で用いて、
そのまま起動したところ以前と同じ設定のシステムを得られた。
例えば、前のシステムで設定したVNC SERVERも自動的に起動された。

同じ設定のRaspberry piを増やすことができるのでバックアップ、リストアはとても便利である。
また、SDカードが故障して起動しなくったり、システムがおかしくなった場合でも、リストアは有効である。

以上



<参考>
・ddの進捗を確認
< https://qiita.com/tukiyo3/items/5e3fd748287ffa4b6612 > 2019年10月27日

・gzip - ファイルを圧縮・展開 - Linuxコマンド
< https://webkaru.net/linux/gzip-command/ > 2019年10月27日


新品価格
¥7,800から
(2020/1/19 06:25時点)

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad