投げ銭

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

LINK


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

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

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

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

2024年9月7日土曜日

【Raspberry Pi 5】リモートアクセスも可能な日本語デスクトップマシンを構築する【MATE】

 ここでは、Raspberry Pi 5に、基本となるOS「Raspberry Pi OS Lite」に、追加でソフトウェアを構築、設定して、デスクトップ環境構築する手順についてまとめている。
 このように基本となる軽量OSに必要なパッケージを加えていくことによって、余計なものが入っていない自分にとって見通しのよいデスクトップ環境を構築できる。
 
 この手順では、デスクトップ環境としてMATEを導入した。リモートデスクトップ接続、日本語入力ができるようにセットアップする手順も説明している。
 また、最終的に「NVMe M.2 SSD」から起動するようにセットアップを行った。
 
 今後も、デスクトップ環境を充実させるために、追加の設定を行っていく予定である。



<目次>
 
・Raspberry Pi 5で、デスクトップマシンを構築しようと思い立った理由
・デスクトップパソコン構築のために用意したもの
 
(インストール作業)
・「Raspberry Pi OS Lite」をマイクロSDカードにコピーする
・Raspberry Pi 5で基本システムの起動〜初期設定、システム更新、SSH接続設定
・(必要に応じて)sshリモート接続の設定を行う
・ タイムゾーン、ロケールの設定
・デスクトップ環境MATEをインストールと設定
・(必要に応じて)リモートデスクトップ接続するための設定
・(必要に応じて)視覚支援技術をオフにする
・日本語入力をできるようにする
 
・「NVMe M.2 SSD」に構築済みシステムをコピーしRaspberry Pi 5を起動
・Raspberry Pi 5のPCIeインターフェイスの速度を向上させる



■ Raspberry Pi 5で、デスクトップマシンを構築しようと思い立った理由

 Raspberry Pi 5の性能の高さ
 
・Raspberry Pi 5は、マイクロSDだけでなく、NVMe M.2 SSDを起動もできるメインドライブとして利用できる。
 
・CPUの処理性能が高い
 
・USB3.0ポート搭載
 
・メインメモリは8GBも搭載(8GB搭載モデル)。

 耐久性のあるNVMe M.2 SSDを利用できるようになったので、従来型ラズパイでのマイクロSDの書き込みに伴う劣化と破壊を気にする必要がなくなった。これは日々のデスクトップパソコンとして利用するために欠かすことのできない要件ではないかと思う。


 ソフトウェアが無料で使える

 また、Linuxをはじめとし、デスクトップ環境、ブラウザやオフィスソフト等に至るまで、すべてオープンソフトウェアで構築できるので、ソフトウェアのライセンスを気にする必要がなくなる。


 メンテナンスが楽

 ソフトウェアが無料で使えたり、ハードウェアがRaspberry Pi 5として供給されることは、メンテナンスの面でも功を奏する。最初に一台のマシンの設定を済ませてしまえば、残りのマシンへはそのセットアップ済みディスク内容を丸ごとコピーするだけで良いからだ。このことはまた、何かトラブルが生じた場合にも、バックアップしておいたディスク内容をコピーするだけで復旧作業が済むので非常に簡単になる。作業はディスク内容をコピーするだけなので、Linuxの標準的なコマンドででき、特別なソフトウェアを用意する必要もない。


 オンラインを絡めたアカウントの管理が要らない

 Linux OSを使うためには何かオンラインアカウントを取得する必要もない。したがって、SMSやメールアカウント等を用いたアカウント管理に煩わされることがなくなる。PCの用途によってはわざわざオンラインアカウントを取得し管理するまでもない。何かに強制されることもなく、昔のように自身の考えるポリシーに基づいて運用ができる。



■ デスクトップパソコン構築のために用意したもの

・Raspberry Pi 5(8GBメモリ搭載モデル)
・Raspberry Pi 5専用の電源アダプター
・ケースおよびヒートシンク(NVMe M.2 SSDを内蔵できるもの)
・NVMe M.2 SSDをラズパイに取り付けるための拡張カード(ケースに内蔵されている場合は不要)
・NVMe M.2 SSD 
・NVMe M.2 SSD USB接続アダプター(SDからデータを転送する時に用いた)
・マイクロSD(16GB程度、書き込み速度が速いタイプがよい)
・HDMIケーブル(ラズパイ側はHDMI マイクロタイプDオス端子、ディスプレイ側にも合わせる)
・HDMI対応ディスプレイ
・キーボード、マウス(USB接続タイプ)
・別の作業用Linuxマシン
・インターネットに接続できるLAN環境(DHCPで設定自動配布がされること)

 本体を組み立てる際、「NVMe M.2 SSD」はまだ取り外しておく。
 「NVMe M.2 SSD」は一番最後の手順で、セットアップの完了した「マイクロSD」の内容をコピーしたものを取り付ける。



■ (インストール作業)「Raspberry Pi OS Lite」をマイクロSDカードにコピーする

 この作業では別のパソコンが必要である。以下の手順では、Linuxマシンを用いている。
(Windowsで行う場合は、ラズパイ公式の専用ツールを使うと良いらしい。ここでは解説しない。)

◯ マイクロSDに、基本となる軽量のOSディスクイメージをインストール

(Linuxマシンを利用する手順)

1、公式サイトから軽量OS「Raspberry Pi OS Lite」のディスクイメージをダウンロード


Raspberry Pi OS Lite

Release date: July 4th 2024
System: 64-bit
Kernel version: 6.6
Debian version: 12 (bookworm)
Size: 432MB

 これは、この作業時に最新のバージョンのものである。更新されていればそれを使用すると良いと思う。


2、ダウンロードしたxz形式圧縮ファイルを展開

$ xz -dv 2024-07-04-raspios-bookworm-arm64-lite.img.xz

2024-07-04-raspios-bookworm-arm64-lite.img.xz (1/1)
  100 %     431.8 MiB / 2,704.0 MiB = 0.160    27 MiB/s       1:39
      

 2.6GBほどの次のimgファイルが展開された。

$ ls
2024-07-04-raspios-bookworm-arm64-lite.img


 ダウンロードしたimgファイルの中身は、OSのディスクイメージである。OSのディスクイメージとは、OSがインストールされた「ディスクの状態」を丸ごと固めたものである。この中には、ファイルや、そのファイルを格納するファイルシステム、そのファイルシステムを記録するパーティション、そのパーティションを管理したり、システムを起動したりする役割を持つMBR(マスターブートレコード)などがすべて含まれている。
 したがって、このimgファイルは次に述べるddコマンドを用いて、その中身をマイクロSDカードに丸ごと書き込む。(ファイルのレベルで取り扱ってはいけない。)


3、展開したimgファイルの中身を用意したマイクロSDに書き込む

 下記ddコマンドを参考にして自分の環境に合わせたパラメーターで、imgファイルの中身をマイクロSDに書き込みする。(パラメーターの意味は下記)
 
# dd if='2024-07-04-raspios-bookworm-arm64-lite.img' of=/dev/sdX bs=10M status=progress

 
◯ ddコマンドのパラメーターは次の意味を持っている。

・「of=/dev/sdX」では、認識されたマイクロSDカードのデバイスファイルのパスを指定する(Linuxでは、デバイスはファイルとして抽象化されている)
・「bs=10M」は、シーケンシャルライトの高速書き込み効果をねらい適当に設定(SDカードはシーケンシャルライトが速い)
・「status=progress」で書き込み進捗状況を表示


 このコマンドを実行してしばらく待つと、OSのディスクイメージ「2024-07-04-raspios-bookworm-arm64-lite.img」が丸ごと、マイクロSDカード「/dev/sdX」にシーケンシャルライトで書き込まれる。
 
 書き込みが完了すれば、マイクロSDを取り外す。ただし、書き込み完了後に自動的にマイクロSDの内容がシステムに認識され、マウント状態になっている場合がある。その場合はアンマウントしてから取り外す。



■ Raspberry Pi 5で基本システムの起動〜初期設定、システム更新

◯ 起動準備〜起動

 電源は一番最後の手順でつなぐこと。(電源ケーブルをつなぐと、ラズパイは自動で起動してしまうため。)

・Raspberry Pi 5に、上記手順で「Raspberry Pi OS Lite」のコピーができたマイクロSDを挿し込む。
・Raspberry Pi 5に、ディスプレイ、キーボード、マウス、LANケーブルをつなぐ。(ディスプレイは起動前に必ず接続すること。初期設定では、あとから繋いでも認識されないようになっている。)
・最後に、Raspberry Pi 5に電源(Type-Cケーブル)をつなぐと、システムが起動する。

 一旦起動し青い画面が表示された後、まもなくシステムが自動的に再起動された。(初回起動時に行われる初期化作業がなされたのではないかと思う。)


◯ 初期設定

 システムが起動後、キーボードの言語選択と、ユーザー設定が促された。各々、次のように設定した。


キーボード設定

 利用環境に応じて設定する。私の環境の場合、Raspberry Pi 5には日本語USBキーボードを繋いでいるので次のように設定した。

1、青い画面の「Please select the layout matching the keyboard for this machine.」というTUI(テキストユーザーインターフェイス)が開いた。

2、「Keyboard layout:」一覧から上下キーで「Other」を選択後、[TAB]キーを押し「OK」を選択状態にしてから、エンターを押した。

3、「The layout of keyboard varies per country…」というTUIが開くので、上下キーで「Japanese」を選択後、[TAB]キーを押し「OK」を選択状態にしてから、エンターを押した。

4、続けて開くTUIにおいて、一番上に表示されている「Japanese」を選択後、[TAB]キーを押し「OK」を選択状態にしてから、エンターを押した。


ユーザー設定

 最初に一つユーザーを作成する必要があるようだ。

1、「Please enter ner username:」というTUIにおいて、ユーザー名を設定した。[TAB]キーを押し「OK」を選択状態にしてから、エンターを押した。

2、「Please set a password for …」というTUIにおいて、先程設定したユーザーのパスワードを設定した。[TAB]キーを押し「OK」を選択状態にしてから、エンターを押した。

3、パスワードの確認画面が表示されるので、再入力して確認する。


◯ ログイン

raspberrypi login:
Password:

 上で作成したログイン情報を使ってログインする。


◯ システムの更新作業

・superユーザーになる

user01@raspberrypi:~ $ sudo su

 以下、「$」なら通常ユーザー、「#」ならスーパーユーザーとして入力するコマンドとする。

・システムの更新(インターネット接続可能なLANケーブルが接続されていること)

# apt update
# apt upgrade -y

 結構時間がかかった。



■ (必要に応じて)sshリモート接続の設定を行う

 いつもの使いなれたコンピューターからリモートでラズパイに接続して、以後の設定が出来る。次のページを参考にする。




■ タイムゾーン、ロケールの設定

 国によって、時刻は異なるし、言語なども異なる。国に応じた振る舞いをシステムにさせるための設定をここで行う。設定すれば、日本時間となり、後でセットアップするデスクトップ環境は日本語で表示されるようになる。


◯ 設定

 次のコマンドを実行すると、設定用のTUI(テキストユーザーインターフェイス)が開く。

# raspi-config


 以下の表記のとおり階層を指定しながら階層を降りて行き、目的項目の設定を行う。
 以下では、「タイムゾーン」の設定を行った後、つづけて「ロケール」の設定を行っている。

5 Localisation Options Configure language and regional settings←大分類
L2 Timezone     Configure time zone←タイムゾーン設定
Asia
Tokyo


5 Localisation Options Configure language and regional settings←大分類
L1 Locale       Configure language and regional settings←ロケール設定) 
…スクロール
[*] en_GB.UTF-8 UTF-8(←そのまま選択状態にしておく
…スクロール
[*] ja_JP.UTF-8 UTF-8 (←半角スペースキーで選択できる
[OK]
Default locale for the system environment:
ja_JP.UTF-8 (←デフォルトのロケールとして指定
[OK]

<Finish>


 この設定の間、バックグラウンドには次のような内容が出力されていた。

perl: warning: Setting locale failed.                                                                                                                                    
perl: warning: Please check that your locale settings:                                                                                                                   
        LANGUAGE = (unset),                                                                                                                                              
        LC_ALL = (unset),                                                                                                                                                
        LC_MONETARY = "ja_JP.UTF-8",                                                                                                                                     
        LC_ADDRESS = "ja_JP.UTF-8",                                                                                                                                      
        LC_TELEPHONE = "ja_JP.UTF-8",                                                                                                                                    
        LC_NAME = "ja_JP.UTF-8",                                                                                                                                         
        LC_MEASUREMENT = "ja_JP.UTF-8",   
        LC_IDENTIFICATION = "ja_JP.UTF-8",                                          
        LC_NUMERIC = "ja_JP.UTF-8",       
        LC_PAPER = "ja_JP.UTF-8",         
        LANG = "en_GB.UTF-8"              
    are supported and installed on your system.                                     
perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").                   
locale: Cannot set LC_ALL to default locale: No such file or directory              
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory     

Current default time zone: 'Asia/Tokyo'   
Local time is now:      Tue Sep 10 03:24:22 JST 2024.                               
Universal Time is now:  Mon Sep  9 18:24:22 UTC 2024.                               

perl: warning: Setting locale failed.     
perl: warning: Please check that your locale settings:                              
        LANGUAGE = (unset),               
        LC_ALL = (unset),                 
        LC_MONETARY = "ja_JP.UTF-8",      
        LC_ADDRESS = "ja_JP.UTF-8",       
        LC_TELEPHONE = "ja_JP.UTF-8",     
        LC_NAME = "ja_JP.UTF-8",          
        LC_MEASUREMENT = "ja_JP.UTF-8",   
        LC_IDENTIFICATION = "ja_JP.UTF-8",                                          
        LC_NUMERIC = "ja_JP.UTF-8",       
        LC_PAPER = "ja_JP.UTF-8",         
        LANG = "en_GB.UTF-8"              
    are supported and installed on your system.                                     
perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").                   
locale: Cannot set LC_ALL to default locale: No such file or directory              
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory     
Generating locales (this might take a while)...                                     
  en_GB.UTF-8... done                     
  ja_JP.UTF-8... done                     
Generation complete.


◯ 再起動

# reboot



■ デスクトップ環境MATEをインストールと設定

 今はまだマイクロSDカードからシステムを起動している。後で、この「マイクロSDカード」の内容をディスクイメージとして全て「NVMe M.2 SSD」にコピーする。コピーの前に「マイクロSDカード」に、続けてデスクトップ環境をインストールしておく。

 以下の手順で、基本システムに、デスクトップ環境の一種であるMATEをインストールする。(MATE以外のデスクトップ環境も色々あるので、好みのものを入れることができる。各自で調べてみてください。)


◯ デスクトップ環境MATEと依存パッケージをインストール

・管理者権限を取得

user01@raspberrypi:~ $ sudo su


・MATEのインストール

# apt install tasksel

tasksel はすでに最新バージョン (3.73) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。


 次のインストールコマンドは処理が完了するまで結構時間がかかる。

# tasksel install mate-desktop --new-install



 インストール直後のディスクの占有サイズを調べた。

# df -h

ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             3.8G     0  3.8G    0% /dev
tmpfs            806M  5.2M  801M    1% /run
/dev/mmcblk0p2    14G  5.6G  7.5G   43% /
tmpfs            4.0G     0  4.0G    0% /dev/shm
tmpfs            5.0M   48K  5.0M    1% /run/lock
/dev/mmcblk0p1   510M   84M  427M   17% /boot/firmware
tmpfs            806M     0  806M    0% /run/user/1000


・ディスプレイマネージャー(ログインマネージャ)のインストール

# apt install lightdm lightdm-gtk-greeter

lightdm はすでに最新バージョン (1.26.0-8+rpt3) です。
lightdm は手動でインストールしたと設定されました。
lightdm-gtk-greeter はすでに最新バージョン (2.0.8-2+b1) です。
lightdm-gtk-greeter は手動でインストールしたと設定されました。


◯ デスクトップ環境が自動的に起動するための設定

 1、次のコマンドは、ユーザーごとにそのユーザーの権限で実行する。

 (例)ユーザー名「user01」の場合、「su user01」などでユーザーを切り替えてから設定を行って、「exit」でユーザーを戻す。
 
user01@raspberrypi:~ $ echo "mate-session" > /home/user01/.xsession


 内容の確認を行った。

user01@raspberrypi:~ $ cat /home/user01/.xsession

mate-session


 2、以下は、全ユーザー共通

# systemctl set-default graphical.target

Removed "/etc/systemd/system/default.target".
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/graphical.target.


# systemctl enable lightdm

Synchronizing state of lightdm.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable lightdm


 3、ここで、システムを再起動する。

# reboot


 4、起動後は、グラフィカルログインの画面が表示されているので、手順1で設定したユーザーでログインする。


 すると、手順1で設定した通り、このユーザーについては「mate-session」(MATEのセッション)が起動する。(撮影範囲に収まらなかったが、下方にはスクリーン切り替えパレットがある。)




■ (必要に応じて)リモートデスクトップ接続するための設定

 次のページを参考にして設定を行う。
 



■ (必要に応じて)視覚支援技術をオフにする

 デフォルトで、スクリーンに表示されている文字を読み上げる機能が有効になっていた。これは、次の手順でオフにできる。

1、「システム」メニューから、「コントロールセンター」を開く 
 

2、「ユーザー向け」グループの「支援技術」を開く


3、支援技術の「お気に入りのアプリ」を開く


4、アクセリビリティータブの視覚支援で「Orca Screen Reader」 について、「ログイン時に起動する」のチェックマークを外す


 以上で、支援のための音声の再生が停止した。 



■ 日本語入力をできるようにする

 以下の手順で、IME(input method editor)としてMozcを導入する。これは日本語のローマ字入力をサポートするために必要である。加えて、このIMEが依存するIMF(input method framework)としてIBus(Intelligent Input Bus)というシステムをインストールする。
 
 ところで、Mozc以外にも日本語入力を行うIMEはある。例えば、KKCがある。
 

○ 入力メソッドエディタとフレームワークIBusのインストール

 入力メソッドは、「Mozc」か「KKC」のいずれか一方を選択して導入する。今回は、Mozcを使用することにした

 IBusは依存関係で自動で導入される。


《Mozcの場合》
 
# apt install ibus-mozc

以下のパッケージが新たにインストールされます:                                   
  dconf-cli gir1.2-ibus-1.0 ibus ibus-data ibus-gtk ibus-gtk3 ibus-gtk4         
  ibus-mozc im-config libcairo-script-interpreter2 libcloudproviders0           
  libgtk-4-1 libgtk-4-bin libgtk-4-common libibus-1.0-5 libmd4c0 libprotobuf32  
  libqt5dbus5 libqt5gui5 libqt5network5 libqt5qml5 libqt5qmlmodels5             
  libqt5quick5 libqt5svg5 libqt5waylandclient5 libqt5waylandcompositor5         
  libqt5widgets5 libxcb-icccm4 libxcb-image0 libxcb-keysyms1
  libxcb-render-util0 libxcb-xinerama0 libxcb-xinput0 mozc-data mozc-server
  mozc-utils-gui python3-ibus-1.0 qt5-gtk-platformtheme qtwayland5
アップグレード: 0 個、新規インストール: 39 個、削除: 0 個、保留: 0 個。
44.1 MB のアーカイブを取得する必要があります。
この操作後に追加で 219 MB のディスク容量が消費されます。


《KKCの場合》(「Mozc」を選択した場合は不要。)
 
# apt install ibus-kkc


○ フレームワークIBusを自動起動する設定
 
 IBusが動作する設定を行う。デスクトップ環境で日本語入力を使うユーザーごとに設定が必要である。

 以下では、引き続きユーザー「user01」に対して設定している。

 (例)ユーザー名「user01」の場合、「su user01」などでユーザーを切り替えてから設定を行って、「exit」でユーザーを戻す。
 
 このファイルは、最初の手順で作成したものである。既に存在する最後の行「mate-session」よりも上の行に、黄色くマークした内容を追記する。

user01@raspberrypi:~ $ nano /home/user01/.xsession

export LANG=ja_JP.UTF-8

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

exec ibus-daemon -drx &

mate-session

 
 ここで、フレームワークIBusを起動するために、再起動を行った。
 
 
○ 必要に応じて、入力メソッドエディタの設定を行う
 
例えば、日本語入力、英数字直接入力の切り替えキーを変更することができる。
 
次のページを参考にする。

 
 
 
★  以上でシステムの構築作業は完了した。

 ここまででデスクトップシステムを「マイクロSD」内に構築した。しかし、ラズパイをデスクトップマシンとして快適に使うためには、高速なディスクアクセスが必要である。そのために、以下の作業では、「マイクロSD」の内容を「NVMe M.2 SSD」にコピーし、「NVMe M.2 SSD」でシステムを起動するようにする。

  Raspberry Pi 5を、「poweroff」コマンドでシャットダウンし、「マイクロSD」を取り出しておく。



■ 「NVMe M.2 SSD」に構築済みシステムをコピーしRaspberry Pi 5を起動
 
 以下の作業では別のパソコン(Linuxマシン)を利用した。以下の操作では、操作を誤まると意図しないディスクの内容が破壊されるので注意すること。


◯ マイクロSDの内容を丸ごとイメージファイルにバックアップ

 別のLinuxパソコンに、さきほど取り外した「マイクロSD」を取り付けて、認識されたマイクロSDカードのデバイスファイルのパスを確認した。(説明では仮に「/dev/sdX」とする。)

 次のコマンドで、「マイクロSD」の内容をディスクイメージとして吸い出しながら、そのデータを圧縮してバックアップ先ファイルに書き込んだ。
 「マイクロSD」の全内容を吸い出してバックアップするものの、圧縮することによってバックアップ先ファイルのサイズを小さくすることができる。


コマンドのパラメーターの説明

・「/dev/sdX」は、認識されたマイクロSDカードのデバイスファイルのパス(Linuxでは、デバイスはファイルとして抽象化されている)

・「mate_user01_raspios_20240913.img.gz」は、バックアップ先にするファイル名(新規に作成する任意のイメージファイル名)

# dd if=/dev/sdX status=progress | gzip -c > "mate_user01_raspios_20240913.img.gz"

15573697024 bytes (16 GB, 15 GiB) copied, 998 s, 15.6 MB/s 
30425088+0 records in
30425088+0 records out
15577645056 bytes (16 GB, 15 GiB) copied, 998.221 s, 15.6 MB/s

 バックアップ先ファイルのサイズを確認した。

# ls mate_user01_raspios_20240913.img.gz -al -h

-rw-r--r-- 1 root root 2.9G Sep 13 02:46 mate_user01_raspios_20240913.img.gz


 バックアップが完了したら、この「マイクロSD」は、必要に応じアンマウントし、取り外しておく。


◯ マイクロSDに、基本となる軽量のOSディスクイメージをインストール

 このLinuixパソコンに、用意していた空の「NVMe M.2 SSD」を取り付けた。(「NVMe M.2 SSD USB接続アダプター」を用いた。)
 このとき、認識された「NVMe M.2 SSD」のデバイスファイルのパスを確認した。(説明では仮に「/dev/sdY」とする。)

 次のコマンドで、先ほど作成したバックアップファイル「mate_user01_raspios_20240913.img.gz」を解凍しながら、「NVMe M.2 SSD」にディスクレベルで書き込んだ。


コマンドのパラメーターの説明

・「/dev/sdY」は、認識された「NVMe M.2 SSD」のデバイスファイルのパス(間違えると、他のディスクの内容を破壊してしまうので注意する。)

# gzip -dc "mate_user01_raspios_20240913.img.gz" | dd of=/dev/sdY status=progress

15571620352 bytes (16 GB, 15 GiB) copied, 2505 s, 6.2 MB/s 
30425088+0 records in
30425088+0 records out
15577645056 bytes (16 GB, 15 GiB) copied, 2509.06 s, 6.2 MB/s


 書き込みが完了したら、この「NVMe M.2 SSD」を適切に取り外しておく。


◯ 書き込みが完了した「NVMe M.2 SSD」をRaspberry Pi 5に取り付けて起動

 SDカードは外しておく。

 

■ Raspberry Pi 5のPCIeインターフェイスの速度を向上させる
 
◯ PCIe Gen 3を有効にする前(Gen 2.0)の速度の確認

(必要に応じて、「apt install hdparm」コマンドで測定ソフトのインストールを行う。)

$ sudo su

# hdparm -tT /dev/nvme0n1

/dev/nvme0n1:
 Timing cached reads:   6490 MB in  2.00 seconds = 3247.33 MB/sec
 Timing buffered disk reads: 1142 MB in  3.00 seconds = 380.50 MB/sec


◯ PCIe Gen 3を有効にする

$ sudo su

# raspi-config

Raspberry Pi Software Configuration Tool (raspi-config) 
6 Advanced Options     Configure advanced settings
A8 PCIe Speed              Set PCIe x1 port speed
Would you like PCIe Gen 3 to be enabled? 
<はい>
PCIe Gen 3 is enabled
<Finish>


再起動を行った。

# reboot


◯ PCIe Gen 3を有効後の速度の確認

# hdparm -tT /dev/nvme0n1

/dev/nvme0n1:
 Timing cached reads:   6700 MB in  2.00 seconds = 3352.41 MB/sec
 Timing buffered disk reads: 2252 MB in  3.00 seconds = 750.32 MB/sec


以上


(参考)

● GUIインストール
・Forgot to install the desktop environment while installing debian 12
< https://unix.stackexchange.com/questions/768562/forgot-to-install-the-desktop-environment-while-installing-debian-12 > 2024年6月17日

・Debian specific manpage/TASKSEL(8)
< https://manpages.debian.org/testing/tasksel/tasksel.8.en.html > 2024年6月17日

・Tasksel – Quickly Install Software Groups in Debian and Ubuntu
< https://www.tecmint.com/tasksel-install-group-software-debian-ubuntu/ > 2024年6月17日


● ロケール
・Debianでlocaleの設定
< https://zenn.dev/oto/articles/9d18a4de1a15e5 > 2024年6月17日


● 日本語入力
 
http://akira-arets.blogspot.com/2021/03/linux-docker-mate-desktop-for-multiple-languages.html
 
・【IBus Kana Kanji】【IBus Mozc】VNCリモート接続したMATEデスクトップ環境で日本語入力できるように設定する【Linux CentOS 7】
 
Input method
< https://wiki.archlinux.org/title/Input_method > 2024年8月21日
 
・Input method
< https://en.wikipedia.org/wiki/Input_method > 2024年8月21日

・IBus
< https://wiki.archlinux.org/title/IBus> 2024年8月21日

・Intelligent Input Bus
< https://en.wikipedia.org/wiki/Intelligent_Input_Bus > 2024年6月26日

・Fcitx
< https://en.wikipedia.org/wiki/Fcitx > 2024年6月26日


● PCIe Gen 3.0対応
・Raspberry Pi 5でのPCIe Gen 3.0対応
< https://tkyonezu.com/iot/raspberry-pi-5%E3%81%A7%E3%81%AEpcie-gen-3-0%E5%AF%BE%E5%BF%9C/ > 2024年7月1日

・Forcing PCI Express Gen 3.0 speeds on the Pi 5
< https://www.jeffgeerling.com/blog/2023/forcing-pci-express-gen-30-speeds-on-pi-5 > 2024年7月1日


● その他
・【Linux CentOS7】DockerコンテナにMATEによるLinuxデスクトップ環境を構築する(日本語、複数ユーザー対応)【VNC SERVERによるヘッドレス運用】【No privileged】

・gzip(1) - Linux man page
< https://linux.die.net/man/1/gzip > 2024年9月13日


2024年9月4日水曜日

【Raspberry Pi 5】ローカルディスプレイのデスクトップ画面をミラーリングするリモートデスクトップ接続の設定方法について

 ■ 概要

  ここでは、安全なローカルネットワーク上にあるRaspberry Pi 5 (Raspberry Pi OS)に、ローカルHDMIディスプレイに表示されるデスクトップをミラーリングしたリモートデスクトップ接続を行う手順を確認している。

 このリモートデスクトップ接続にはVNCを用いているが、Raspberry PiにHDMI接続したディスプレイで通常表示されるデスクトップ画面そのものをミラーリングして、リモートの環境で操作する方法を取り扱っている点が特徴的である。

 通常、ユーザーはRaspberry PiにHDMI接続したディスプレイに表示される画面でログインし、デスクトップ操作を行う。これらのユーザーをリモートからサポートするためには、上記のような方法でのリモートデスクトップ接続が必要である。


■ ローカル画面をミラーリングしてリモートデスクトップ接続するための設定


◯ ヘッドレスでラズパイが起動した場合に備えるための設定

 Raspberry Pi 5は、HDMIに関して初期設定のまま、ヘッドレス(HDMI接続ディスプレイなし)で起動すると、内部でローカル画面描画に関するシステムの機能の処理能力を制限するようである。そのためローカルディスプレイをミラーリングするリモートデスクトップの反応が非常に遅くなった。

 しかし、次のように、「video=HDMI-A-1:1920x1080@60D」という設定を次のファイルの次のような設定項目の最後に付けて、再起動を行うと問題が解消した。

# nano /boot/firmware/cmdline.txt

console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-02 rootfstype=ext4 fsck.repair=yes rootwait video=HDMI-A-1:1920x1080@60D

# reboot

 あるいは、この設定なしで、「ダミーHDMI」のドングルをRaspberry Pi 5のHDMIポートに取り付けておいても、ヘッドレスでもローカル画面をミラーリングしたリモートデスクトップを快適に使うことができた。


◯ x11vncのインストール

# apt install x11vnc -y

以下の追加パッケージがインストールされます:
  liblzo2-2 libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6
提案パッケージ:
 tcl-tclreadline
以下のパッケージが新たにインストールされます:
  liblzo2-2 libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc                    
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 0 個。



◯ リモート接続時のパスワードを設定

# mkdir /etc/x11vnc
# touch /etc/x11vnc/passwd

# x11vnc -storepasswd /etc/x11vnc/passwd

Enter VNC password: 
Verify password:    
Write password to /etc/x11vnc/passwd?  [y]/n y
Password written to: /etc/x11vnc/passwd

 ここで、設定したパスワードを「共通VNCパスワード」と呼ぶことにする。



◯ Raspberry Pi 5に割り当てられているIPアドレスの確認

# ip a | grep inet

 ネットワーク環境に依るが、192.168.X.Xのようなアドレスが割り当てられていることが多い。これをメモしておく。リモート接続の際に使用する。



◯ (動作テスト) x11vncの起動(display 0にアタッチ)

 Linuxでは、X ServerというシステムがGUIの画面を取り扱う。(X Serverが、マウス、キーボード入力の受け取り、画面の描画などを担当する。)Linuxでは、このX Serverというシステムを複数起動させることができる。複数のX Serverのうちから一つを指定するための番号が、display番号と呼ばれるものである。

 通常、display番号「0」が参照するX Serverは、ローカルでGUIへのログインを担当する「ウインドウマネージャー」の画面を取り扱っている。そこで、後に示すコマンド(★)を用いて、display番号「0」が参照するX Serverに、x11vncをアタッチする。これによって、ログイン画面をVNC経由でミラーリングできるようになる

 また、この方法で、ログイン後のデスクトップ環境の画面も、引き続きVNC経由でミラーリングできる。つまり、display番号「0」が参照するX Serverは、最初はログインを担当するウインドウマネージャーの画面を取り扱っているが、ログインに成功すると、そのままそのユーザーのデスクトップ画面を取り扱うということである

 次の図の仕組みによって、ローカル側GUI画面と、リモート側画面がミラーリングされる。

(ローカル側画面)X Server(0) ← X11Vnc(5900) ← == ネット== ←Vnc Client (リモート側画面)

(★)

# x11vnc -auth guess -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -forever -loop -xkb -noxdamage -repeat -shared

 --- x11vnc loop: 1 ---

 --- x11vnc loop: waiting for: 2622

24/06/2024 09:53:37 passing arg to libvncserver: -rfbauth
24/06/2024 09:53:37 passing arg to libvncserver: /home/user01/.vnc/passwd
24/06/2024 09:53:37 passing arg to libvncserver: -rfbport
24/06/2024 09:53:37 passing arg to libvncserver: 5900
24/06/2024 09:53:37 x11vnc version: 0.9.16 lastmod: 2019-01-05  pid: 2622
xauth:  file /root/.Xauthority does not exist
24/06/2024 09:53:37 -auth guess: using 'XAUTHORITY=/var/run/lightdm/root/:0' for disp=':0'
24/06/2024 09:53:37 Using X display :0
24/06/2024 09:53:37 rootwin: 0x39f reswin: 0x600001 dpy: 0x72803770
24/06/2024 09:53:37 
24/06/2024 09:53:37 ------------------ USEFUL INFORMATION ------------------
24/06/2024 09:53:37 
24/06/2024 09:53:37 Wireframing: -wireframe mode is in effect for window moves.
24/06/2024 09:53:37   If this yields undesired behavior (poor response, painting
24/06/2024 09:53:37   errors, etc) it may be disabled:
24/06/2024 09:53:37    - use '-nowf' to disable wireframing completely.
24/06/2024 09:53:37    - use '-nowcr' to disable the Copy Rectangle after the
24/06/2024 09:53:37      moved window is released in the new position.
24/06/2024 09:53:37   Also see the -help entry for tuning parameters.
24/06/2024 09:53:37   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2024 09:53:37   repaint the screen, also see the -fixscreen option for
24/06/2024 09:53:37   periodic repaints.
24/06/2024 09:53:37 
24/06/2024 09:53:37 XFIXES available on display, resetting cursor mode
24/06/2024 09:53:37   to: '-cursor most'.
24/06/2024 09:53:37   to disable this behavior use: '-cursor arrow'
24/06/2024 09:53:37   or '-noxfixes'.
24/06/2024 09:53:37 using XFIXES for cursor drawing.
24/06/2024 09:53:37 GrabServer control via XTEST.
24/06/2024 09:53:37 
24/06/2024 09:53:37 Scroll Detection: -scrollcopyrect mode is in effect to
24/06/2024 09:53:37   use RECORD extension to try to detect scrolling windows
24/06/2024 09:53:37   (induced by either user keystroke or mouse input).
24/06/2024 09:53:37   If this yields undesired behavior (poor response, painting
24/06/2024 09:53:37   errors, etc) it may be disabled via: '-noscr'
24/06/2024 09:53:37   Also see the -help entry for tuning parameters.
24/06/2024 09:53:37   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2024 09:53:37   repaint the screen, also see the -fixscreen option for
24/06/2024 09:53:37   periodic repaints.
24/06/2024 09:53:37 X FBPM extension not supported.
24/06/2024 09:53:37 X display is capable of DPMS.
24/06/2024 09:53:37 --------------------------------------------------------
24/06/2024 09:53:37 
24/06/2024 09:53:37 Default visual ID: 0x21
24/06/2024 09:53:37 Read initial data from X display into framebuffer.
24/06/2024 09:53:37 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/4096
24/06/2024 09:53:37 
24/06/2024 09:53:37 X display :0 is 32bpp depth=24 true color
24/06/2024 09:53:37 
24/06/2024 09:53:37 Listening for VNC connections on TCP port 5900
24/06/2024 09:53:37 Listening for VNC connections on TCP6 port 5900
24/06/2024 09:53:37 listen6: bind: Address already in use
24/06/2024 09:53:37 Not listening on IPv6 interface.
24/06/2024 09:53:37 fb read rate: 468 MB/sec
24/06/2024 09:53:37 fast read: reset -wait  ms to: 10
24/06/2024 09:53:37 fast read: reset -defer ms to: 10
24/06/2024 09:53:37 The X server says there are 10 mouse buttons.
24/06/2024 09:53:37 screen setup finished.
24/06/2024 09:53:37 

The VNC desktop is:      raspberrypi:0
PORT=5900

******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval.  It should work with any VNC viewer.  Try it by running:

    x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching



◯ (動作テスト) リモート接続

 他の端末から、先程確かめたRaspberry Pi 5のアドレス「192.168.X.X」にVNCで接続する。

 今回は、別のLinux端末のTigerVNCクライアントアプリケーションを使って接続した。このとき指定アドレスとポートを次のように指定した。

「192.168.X.X:0」もしくは「192.168.X.X:5900

 先程設定した「共通VNCパスワード」を入力すると、次のようにリモートの操作画面が開いた。

 ここで、ユーザー名(user01)、そのパスワードを入力した。


 すると、次のようにユーザー「user01」のMATEデスクトップ環境の画面に遷移した。



 さらに、ログアウト後、再びログインすることも問題なくできた。

 複数のVnc Clientを接続して、1対多でミラーリングすることもできた。



◯ システム起動時にリモート接続機能を自動起動させる設定

 以上で、手動でコマンドを実行することによって、ローカル画面をミラーリングしてリモートデスクトップを許可する仕組みを整えられたことを確認した。ここでは、このコマンドをシステム起動時に自動で起動するための設定を行う。

 まず、次のように設定ファイルを作成する。この設定ファイル名がサービス名として使用される。X Server(Display番号0)にアタッチするx11vncサービスということから「x11vnc_0」とした。

# nano /etc/systemd/system/x11vnc_0.service

[Unit]
Description=x11vnc (Remote access to X Server 0)
After=network-online.target

[Service]
Type=simple
ExecStart=x11vnc -auth guess -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -forever -loop -xkb -noxdamage -repeat -shared
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=graphical.target


# systemctl daemon-reload
# systemctl enable x11vnc_0

Created symlink /etc/systemd/system/graphical.target.wants/x11vnc_0.service → /etc/systemd/system/x11vnc_0.service.

# reboot

 システムの再起動後、しばらく待つと、テスト動作と同様にしてVNCクライアントからユーザー「user01」のログインを経て、MATEデスクトップ環境を操作できた。



<参考>

● ディスプレイマネージャー
・What is the greeter?/A greeter is a graphical login interface. It's also often called the login screen.
< https://askubuntu.com/questions/1027145/what-is-the-greeter > 2024年6月17日

・LightDM/Greeter
< https://wiki.archlinux.org/title/LightDM > 2024年6月17日


● リモートアクセス
・【備忘録】Ubuntu20.04でx11vncセットアップ
< https://qiita.com/moootoko/items/a489279c26cae68d60d6 > 2024年6月24日


● HDMI出力
・Bullseye vncserver is very slow without display
< https://forums.raspberrypi.com/viewtopic.php?t=323294 > 2024年9月11日

・Extremely slow VNC response in Chromium - Bookworm (Raspberry 5 using X11)
< https://forums.raspberrypi.com/viewtopic.php?t=366262 > 2024年9月11日

【Raspberry Pi 5 】Raspberry Pi OSにSSHでリモート接続を行う手順【tmux】

 ここでは、安全なローカルネットワーク上にあるRaspberry Pi 5 (Raspberry Pi OS)に、SSHでリモート接続を行う手順を確認している。

 不意な切断でセッションが閉じて動作中コマンドが終了してしまうことを防ぐため、ターミナルマルチプレクサ(Terminal Multiplexer) である「tmux」を用いる方法についても触れている。


■ SSH接続でシステムにリモート接続する
 
 Raspberry Pi 5 (Raspberry Pi OS)にログインし、コマンドを実行できる状態にする
 
 
◯ SSHリモート接続の設定

 次のように空のファイルを作成するだけでリモート接続設定が済む

# touch /boot/firmware/ssh

(IPフィルタが設定されている場合は必要な設定が別途必要である。)


◯ tmuxのインストール

 ターミナルマルチプレクサ(Terminal Multiplexer) である「tmux」を導入しておく。これを用いると、リモート接続時コマンド実行中に接続が途切れたとしても、コマンドが強制終了せずに処理が継続されるようになる。また後からそのセッションに再接続することができる。また画面を分割して一つ一つの画面でコマンドプロンプトが使うこともできる。

# apt install tmux -y


◯ Raspberry Pi 5に割り当てられているIPアドレスの確認

 再起動する前に、割り当てられているIPアドレスを確認しておく。

# ip a | grep inet

 ネットワーク環境に依るが、ルーター類のDHCP機能により自動で、192.168.X.Xのようなアドレスが割り当てられていることが多い。これをメモしておく。リモート接続の際に使用する。


◯ 再起動

reboot


◯ SSH接続でRaspberry Pi 5にログイン

 別のLinuxマシン等のターミナルソフトを用いて、再起動前にメモしておいたIPアドレスにSSH接続してログインする。

 usernameには設定したユーザー名、192.168.X.XにはメモしておいたIPアドレスを指定した。

$ ssh username@192.168.X.X


◯ tmux仮想端末を開く

 上記、sshで接続ログイン後、プロンプト「username@raspberrypi:~ $」が表示されたら次のようにコマンドを入力するとtmux仮想端末のセッションが開く。

username@raspberrypi:~ $ tmux


 仮想端末の詳しい使い方は他のマニュアルなどを参考にしてください。下記操作方法は一例です。
 
 
セッションを新規作成
・ターミナルマルチプレクサを有効にしセッションを作成するには、「tmux」を実行
 
セッション操作
・セッションから抜ける(バックグラウンドでセッションは動作)には、セッション内で、[ctrl]を押しながら[b]を押下した後、それらをいったん離して、[d]を押下(デタッチ)
・最後に切断したセッションに再接続するには「tmux a」を実行(アタッチ)
 
・動作中セッション番号の一覧を表示するには、「tmux ls」
・動作中セッションの番号を指定して接続するには「tmux a -t X」(Xはセッション番号)
 
・セッション終了するには、セッション内で「exit」を実行
 
画面分割
・画面縦に分割するには、セッション内で 、[ctrl]を押しながら[b]を押下した後、それらをいったん離して、[%]を押下(SHIFTを勿論使う)
・画面横に分割するには、セッション内で 、[ctrl]を押しながら[b]を押下した後、それらをいったん離して、["]を押下(SHIFTを勿論使う)
 


投げ銭

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

Ad

Ad