ここでは、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対応ディスプレイ
・インターネットに接続できる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」のディスクイメージをダウンロード
Release date: March 15th 2024
Debian version: 12 (bookworm)
これは、この作業時に最新のバージョンのものである。更新されていればそれを使用すると良いと思う。
2、ダウンロードしたxz形式圧縮ファイルを展開
$ xz -dv 2024-03-15-raspios-bookworm-arm64-lite.img.xz
2024-03-15-raspios-bookworm-arm64-lite.img.xz (1/1)
100 % 414.2 MiB / 2,640.0 MiB = 0.157 26 MiB/s 1:41
2024-03-15-raspios-bookworm-arm64-lite.img
ダウンロードしたimgファイルの中身は、OSのディスクイメージである。OSのディスクイメージとは、OSがインストールされた「ディスクの状態」を丸ごと固めたものである。この中には、ファイルや、そのファイルを格納するファイルシステム、そのファイルシステムを記録するパーティション、そのパーティションを管理したり、システムを起動したりする役割を持つMBR(マスターブートレコード)などがすべて含まれている。
したがって、このimgファイルは次に述べるddコマンドを用いて、その中身をマイクロSDカードに丸ごと書き込む。(ファイルのレベルで取り扱ってはいけない。)
3、展開したimgファイルの中身を用意したマイクロSDに書き込む
下記ddコマンドを参考にして自分の環境に合わせたパラメーターで、imgファイルの中身をマイクロSDに書き込みする。(パラメーターの意味は下記)
# dd if='2024-03-15-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-03-15-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、パスワードの確認画面が表示されるので、再入力して確認する。
◯ システムの更新作業
・superユーザーになる
user01@raspberrypi:~ $ sudo su
以下、「$」なら通常ユーザー、「#」ならスーパーユーザーとして入力するコマンドとする。
・システムの更新(インターネット接続可能なLANケーブルが接続されていること)
■ (必要に応じて)sshリモート接続の設定を行う
いつもの使いなれたコンピューターからリモートでラズパイに接続して、以後の設定が出来る。次のページを参考にする。
■ タイムゾーン、ロケールの設定
国によって、時刻は異なるし、言語なども異なる。国に応じた振る舞いをシステムにさせるための設定をここで行う。設定すれば、日本時間となり、後でセットアップするデスクトップ環境は日本語で表示されるようになる。
◯ 設定
次のコマンドを実行すると、設定用のTUI(テキストユーザーインターフェイス)が開く。次のような階層になっているので、項目を指定しながら階層を降りて行き、設定を行う。項目の指定はエンターキーで行う。
以下では、「タイムゾーン」の設定を行った後、つづけて「ロケール」の設定を行っている。
# raspi-config
5 Localisation Options Configure language and regional settings(←大分類)
L2 Timezone Configure time zone(←タイムゾーン設定)
Asia
Tokyo
Current default time zone: 'Asia/Tokyo'
Local time is now: Sat Jun 22 04:32:55 JST 2024.
Universal Time is now: Fri Jun 21 19:32:55 UTC 2024.
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 (←スペースキーで選択できる)
Default locale for the system environment:
ja_JP.UTF-8 (←デフォルトのロケールとして指定)
Generating locales (this might take a while)...
<Finish>
◯ 再起動
# reboot
■ デスクトップ環境MATEをインストールと設定
今はまだマイクロSDカードからシステムを起動している。後で、この「マイクロSDカード」の内容をディスクイメージとして全て「NVMe M.2 SSD」にコピーする。コピーの前に「マイクロSDカード」に、続けてデスクトップ環境をインストールしておく。
以下の手順で、基本システムに、デスクトップ環境の一種であるMATEをインストールする。(MATE以外のデスクトップ環境も色々あるので、好みのものを入れることができる。各自で調べてみてください。)
◯ デスクトップ環境MATEと依存パッケージをインストール
・管理者権限を取得
user01@raspberrypi:~ $ sudo su
・MATEのインストール
# apt install tasksel
tasksel is already the newest version (3.73).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
次のコマンドは処理が完了するまで結構時間がかかる。
# tasksel install mate-desktop --new-install
パッケージをインストールしています
ファイルを取得しています …/824 (残り 分 秒)
…を展開しています
・ディスプレイマネージャー(ログインマネージャ)のインストール
# apt install lightdm lightdm-gtk-greeter
lightdm is already the newest version (1.26.0-8+rpt3).
lightdm set to manually installed.
lightdm-gtk-greeter is already the newest version (2.0.8-2+b1).
lightdm-gtk-greeter set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
◯ デスクトップ環境が自動的に起動するための設定
・次のコマンドは、ユーザーごとにそのユーザーの権限で実行する。
(例)ユーザー名「user01」の場合(sudo user01などで切り替え、設定後、exit)
user01@raspberrypi:~ $ echo "mate-session" > /home/user01/.xsession
・以下は、全ユーザー共通
# 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
ここで、システムを再起動する。
# reboot
起動後は、グラフィカルログインの画面が表示されている。
■ (必要に応じて)リモートデスクトップ接続するための設定
次のページを参考にして設定を行う。
■ 日本語入力をできるようにする
以下の手順で、IME(input method editor)としてKKCを導入する。これは日本語のローマ字入力をサポートするために必要である。加えて、このIMEが依存するIMF(input method framework)としてIBus(Intelligent Input Bus)というシステムをインストールする。
ところで、KKC以外にも日本語入力を行うIMEはある。例えば、Mozcがある。しかし、今回構築のシステムにおいてはMozcはFirefoxブラウザでのGoogleドキュメントの入力時などで頻回に入力ができなくなる問題が発生したので利用しないことにした。他にもIMEがあるが試していない。
1、フレームワークIBusのインストール
$ sudo su
# apt update
# apt install ibus
2、入力メソッドエディタのインストール
◎ KKCの場合
今回の環境ではこちらの入力メソッドエディタを使った。
# apt install ibus-kkc
◯ Mozcの場合 ただし、既に述べたように今回の環境において不具合が発生したので利用しないことにした。(念のためにインストールの手順をメモしておく)
ibus (1.5.27-5) を設定しています ...
ibus-mozc (2.28.4715.102+dfsg-2.2) を設定しています ...
3、フレームワークIBusを自動起動する設定
MATEが立ち上がるタイミングでIBusが動作する設定を行った。次のように直接設定内容をファイルに書き込んでも良いし、後述のスタートアップ設定ウインドウにおいて設定しても良い。
$ nano /home/user01/.config/autostart/ibus-daemon.desktop
[Desktop Entry]
Type=Application
Exec=/usr/bin/ibus-daemon -drx
Hidden=false
X-MATE-Autostart-enabled=true
Name[ja_JP]=Start ibus daemon
Name=Start ibus daemon
Comment[ja_JP]=AKIRA
Comment=AKIRA
次のコマンドでスタートアップ設定ウインドウが開き、スタートアップの登録、また上記で設定したスタートアップの登録内容、有効/無効の状態を確認するためのウインドウが開く。
$ mate-session-properties
ここで、フレームワークIBusを起動するために、再起動を行った。
4、入力メソッドエディタKKCの設定を行う
次のページを参考にして、フレームワークiBusに、入力メソッドエディタKKCを登録した。そして、KKCの設定も行う。
★ 以上でシステムの構築作業は完了した。
Raspberry Pi 5を、「poweroff」コマンドでシャットダウンし、「マイクロSD」を取り出しておく。
■ 「NVMe M.2 SSD」に構築済みシステムをコピーしRaspberry Pi 5を起動
以下の作業では別のパソコン(Linuxマシン)を利用した。以下の操作では、操作を誤まると意図しないディスクの内容が破壊されるので注意すること。
◯ マイクロSDの内容を丸ごとイメージファイルにバックアップ
Linuxパソコンに、さきほど取り外した「マイクロSD」を取り付けて、認識されたマイクロSDカードのデバイスファイルのパスを確認した。
次のコマンドで、「マイクロSD」の内容をディスクイメージとして吸い出した。
・「/dev/sdX」は、認識されたマイクロSDカードのデバイスファイルのパス(Linuxでは、デバイスはファイルとして抽象化されている)
・「mate_user01_raspios_20240701.img」は、バックアップ先にするファイル名(新規に作成する任意のイメージファイル名)
# dd if=/dev/sdX of='mate_user01_raspios_20240701.img' status=progress
バックアップが完了したら、この「マイクロSD」は、必要に応じアンマウントし、取り外しておく。
◯ マイクロSDに、基本となる軽量のOSディスクイメージをインストール
このLinuixパソコンに、用意していた空の「NVMe M.2 SSD」を取り付けた。(「NVMe M.2 SSD USB接続ケース」を用いた。)
次のコマンドで、先ほど作成したバックアップファイル「mate_user01_raspios_20240701.img」を、「NVMe M.2 SSD」にディスクレベルで書き込んだ。
・「/dev/sdY」は、認識された「NVMe M.2 SSD」のデバイスファイルのパス
# dd if='mate_user01_raspios_20240701.img' of=/dev/sdY status=progress
書き込みが完了したら、この「NVMe M.2 SSD」を適切に取り外しておく。
◯ 書き込みが完了した「NVMe M.2 SSD」をRaspberry Pi 5に取り付けて起動
■ Raspberry Pi 5のPCIeインターフェイスの速度を向上させる
◯ PCIe Gen 3を有効にする前(Gen 2.0)の速度の確認
$ sudo su
# hdparm -tT /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
$ sudo su
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?
再起動を行った。
# hdparm -tT /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】