Raspberry Pi OS Tips

Raspberry Pi/電子工作
スポンサーリンク

こんにちは、あろっちです。

Raspberry Pi OSは、Debian(GNU/Linux)ベースのRaspberry Pi用のOSです。
この記事では、Raspberry Pi OSでできるカスタマイズなどのTipsを書いていきます。

Raspberry Pi OSの日本語設定について、まとめた記事を書きました。

スプラッシュ画面(OS起動時の画面)のカスタマイズ

Raspberry Pi OSは、スプラッシュ画面に 「Plymouth」という起動時や終了時にスプラッシュスクリーンを表示するソフトウェアを使っています。

Plymouthのテーマディレクトリは、

/usr/share/plymouth/themes

です。

デフォルトでは、pixというテーマが使われていて、Raspberry Pi OSのスプラッシュ画像は、

/usr/share/plymouth/themes/pix/splash.png

です。

スプラッシュ画面の画像を手っ取り早く差し替えたい(独自のものにする)という場合、このsplash.pngを好みの画像に入れ替えればいいという訳です。

例えば、自分で用意したpng画像(例:/home/pi/Pictures/my.png)があるとします。
それを、

/usr/share/plymouth/themes/pix/

にコピーします。

$ sudo cp /home/pi/Pictures/my.png /usr/share/plymouth/themes/pix

元画像(splash.png)をバックアップします。

$ cd /usr/share/plymouth/themes/pix
$ sudo cp splash.png splash.png.bak

この場合、元画像がsplash.png.bakという名前で保存されます。

自分の画像をスプラッシュ画像にします。

$ sudo cp my.png splash.png

当ブログのロゴをスプラッシュ画像にした場合の起動イメージはこんな感じです。

元の画像に戻すには、次のようにします。

$ sudo cp splash.png.bak splash.png

OS起動時のサービス(systemd・sytemctl) Tips

Raspberry Pi OSは、systemdというサービスがOS起動時に色々なサービス等(ユニット)を自動起動します。

サービス(ユニット)に対して、色々と指示するコマンドがsystemctlです。

このTipsでは、systemctlを使った操作方法を記述します。

systemctlを実行したときにエディタの様な状態になった時は、基本的にlessの操作と同じです。

  • 文字検索
    /を入力した後、検索したい文字を入力します。nで次の検索結果にジャンプ、shift+nで前の検索結果に戻ります。
  • ターミナルに戻る
    :qを入力します。

全体的な操作

システムの状態を表示

$ systemctl status

インストールされているユニット一覧表示

$ systemctl list-unit-files

実行中のユニット一覧表示

$ systemctl list-units

実行に失敗したユニット一覧表示

$ systemctl --failed

個別サービスの操作

ユニットの実行

$ sudo systemctl start <ユニット>

時間を合わせるためのサービスntpを例にすると

$ sudo systemctl start ntp

と入力します。(ユニット名はntp.serviceですが、.serviceは省略できます。)

ユニットの停止

$ sudo systemctl stop <ユニット>

ユニットの再起動

$ sudo sytemctl restart <ユニット>

ユニットの状態表示

$ sudo systemctl status <ユニット>

例えば、起動に失敗している時は、Active: failedという具合に表示されるので起動していない! なんていう事が分かります。

起動時自動実行の設定

自動実行状態の確認

$ sudo systemctl is-enabled <ユニット>

自動実行の有効化設定

$ sudo systemctl enable <ユニット>

自動実行の無効化設定

$ sudo systemctl disable <ユニット>

rng-toolsの起動失敗の対処

systemctlの記事を作成するため調査している時に、自分の環境でrng-toolsが起動に失敗していることが判明しました。このサービスは何? というところから調べていくと次のことが分かりました。

  • rng-toolsは乱数を生成するためのサービス
  • rng-toolsはデフォルトでハードウェア乱数生成器(/dev/hwrng)を使用する
  • 自分の環境は仮想デスクトップ(Parallels)だからなのか、/dev/hwrngが存在しない(この原因は定かではない)
    ※Pi4の実機で確認したところ、実機では/dev/hwrngが存在しました。(※2021年4月1日追記)

これの対処法として擬似乱数生成器を使ってねってことで、その設定方法2点紹介します。

パターン1

擬似乱数生成器の/dev/urandomのシンボリックリンクを/dev/hwrngに貼る

$ sudo ln -s /dev/urandom /dev/hwrng

rng-toolsを起動

$ sudo systemctl start rng-tools

パターン2

rng-toolsの設定ファイルに乱数生成器として/dev/urandomを使うように設定変更する

$ sudo vi /etc/default/rng-tools

次のようにHRNGDEVICE=/dev/urandomを記述する

rng-toolsを起動

$ sudo systemctl start rng-tools

どちらも試しましたが、どちらがよいかと言われれば、個人的にはパターン2かなというところですね。

Raspberry Piのチェック(Rivision Number & Board Version)

ボードの状態をチェックする
※仮想デスクトップ環境非対応

$ pinout

CPU情報をチェックする

$ cat /proc/cpuinfo
Rapberry Pi 4 model B
仮想デスクトップ環境

Raspberry Pi Model情報をチェックする
※仮想デスクトップ環境非対応

$ cat /proc/device-tree/model

Raspberry Piの情報を表示する

neofetchコマンドをインストールします。

sudo apt install neofetch

neofetchコマンドを実行

neofetch

次のようにRaspberry Piのアスキーロゴとともに情報が表示されます。

GUIをXfceに変更する

GUIをXfce4(エックス エフ シー イー)に変更する方法を記述します。

Xfceをインストールする

aptでOSを更新します。

sudo apt update
sudo apt full-upgrade
sudo reboot

Xfceをインストールします。結構時間がかかります。

sudo apt install xfce4

Xfceに変更する

GUIをXfceに変更します。

sudo update-alternatives --config x-session-manager

この場合、5(/usr/bin/startxfce4)を入力し、Enterを押します。
※ご使用の環境によって選択肢は異なりますので、/usr/bin/startxfce4に対応する番号を入力してください。

再起動します。

sudo reboot

このようにXfceが使えるようになります。

元のGUIに戻すには、

sudo update-alternatives --config x-session-manager

より、/usr/bin/startlxde-piに対応する番号(上記の画像を例にすると0)を入力し、Enterを押します。
その後、再起動します。

Xfceからlxde-piに戻した時に、音声読み上げ機能が有効になる事象が発生したことがありました。
その機能を停止する方法は、以下の通りです。

USBからブート(起動)する

Raspberry Pi 4(実機)をUSBからブートする手順を記述します。

sudo raspi-config

6 Advanced Optionsを選択してEnterを押します。

A6 Boot Orderを選択してEnterを押します。

B2 USB Bootを選択してEnterを押します。

了解を押します。

Tabキーで下の選択肢に移動し、<Finish>を押します。

リブートするか尋ねてきますので、<いいえ>を選択すると終了します。

実際にUSBからブートできるかテストしてみましょう。

一旦、シャットダウンし、Raspberry Pi 4の電源を切ります。

本体からSDカードを抜きます。下のようなUSB SDカード専用カードリーダーを使ってUSBブートをしてみます。

SDカード(OSが入っている)をUSB SDカード専用カードリーダーにセットしたところ

このようにうまく起動できました。

SSH接続できなくなった時の対処法

SSH接続では、初回接続時に接続先の公開鍵を保存し、次回以降この鍵が一致すれば自動的に接続するようになっていますが、IPアドレスの振り直しやOS再インストールなどで鍵が変わってしまった場合、次のようなエラーが発生します。

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

この場合、接続先の鍵を削除することで、再び初回接続の状態にできます。

接続先ホスト公開鍵の削除コマンド。こちらのコマンドは、PCのSSH接続するターミナル(例: WindowsならPowerShell、MacやLinuxならターミナル(端末))で実行します。

ssh-keygen -R raspberrypi.local

raspberrypi.localの箇所は、接続先のアドレスを指定します。

共有ファイルサーバー(Samba)を構築する

Raspberry Pi OSにファイルサーバーを構築(Samba使用)する手順を記述します。

今回、記事を作成するにあたり、以下のようなSSDを使用しました。SSDには、Raspberry Pi OS(32bit)がインストールされています。

Sambaをインストールする

aptでOSを更新します。

sudo apt update
sudo apt full-upgrade
sudo reboot

Sambaをインストールします。

sudo apt install samba -y

インストール途中で以下のような設定(WINS設定)を実施するか尋ねられますが、<いいえ>を選択します。

Sambaの設定

piユーザでアクセスできるように設定します。

公開ディレクトリは、piユーザのホームディレクトリ/home/piとします。

Sambaの設定ファイル/etc/samba/smb.confを開きます。以下は、エディタにviを使用しています。

sudo vi /etc/samba/smb.conf

末尾に以下の設定を追加します。

[pi]
path = /home/pi
read only = no
guest ok = yes
force user = pi

追加後、保存して終了します。
(viの場合、コマンドモードでZZと入力することで保存して終了できます。)

Sambaを再起動します。Sambaのサービス名は、smbdです。

sudo service smbd restart

Windowsから接続する

Windowsからは、エクスプローラーから接続できます。

エクスプローラーのパス入力欄に、

¥¥[Raspberry PiのIPアドレス]

あるいは、

¥¥[Raspberry Piのホスト名]

と入力します。

ホスト名がデフォルトの場合、

¥¥raspberrypi

と入力すれば、接続できるはずです。

利用方法など

例えば、Raspberry Piで作成したファイル(画像やテキスト、プログラムのソースファイル)をPC(Windows)で開いたり、PCにコピーするといったことができます。

逆にPCにあるファイルをRaspberry Piに保存するという使い方もできます。

もちろん、単純に共有ファイルサーバーとして、活用することもできます。

タッチモニターを縦置き(90度回転)に設定する

以下のモニターでの設定例を記述します。
縦置き設定は、画面回転とタッチスクリーン回転の2つの設定を実施します。

画面回転

出力端子名をチェックします。

xrandr

赤枠の箇所が出力端子名です。この例だと、HDMI-1です。

次のコマンドで画面回転します。

xrandr --output HDMI-1 --rotate right

--outputに出力端子名を指定します。--rotate rightは90度回転のオプションです。

元に戻す場合は、--rotate nomalを指定します。

xrandr --output HDMI-1 --rotate nomal

タッチスクリーン回転

タッチスクリーンのデバイスをチェックします。

xinput

タッチスクリーンのデバイス名は、この例の場合、TSTP MTouchです。ただ、id=9、id=10とも同じデバイス名です。
調べたところ、タッチスクリーンは、id=10(赤枠)のようでした。

次のコマンドでタッチスクリーンを回転します。

xinput --set-prop '10' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

--set-propの最初のパラメータにデバイス名かidを指定します。今回は、上述のように同じデバイス名が2箇所あったためidを指定しています。

‘Coordinate Transformation Matrix’ 0 1 0 -1 0 1 0 0 1

は90度回転(行列の回転変換)の指定です。

元に戻すには、行列回転変換指定を

‘Coordinate Transformation Matrix’ 1 0 0 0 1 0 0 0 1

とします。

起動スクリプト化

縦置きをデフォルトとする場合、シェルスクリプトにしておくと便利です。

上記コマンドを実行するシェルスクリプト。
ファイル名は「screen_vertical.sh」など任意の名前で作成。

#!/bin/bash
xrandr --output HDMI-1 --rotate right
xinput --set-prop '10' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

シェルスクリプトに実行権限をつければ、いつでもコマンドで実行できるようになるはずです。

chmod +x ファイル名

モニターの縦置きを起動時デフォルトにしたい場合は、

~/.xsessionrcというファイルに上記のシェルスクリプトの内容を記述して保存します。
~/.xsessionrcが存在しない場合は、新規作成します。

起動時に縦置きの画面となります。

マウスホイールのスクロール動作をMacのように逆にする

普段Macを使っていると、たまにPi OSを触った時にマウスホイールの動きが逆で戸惑うことがあります。

そこで、マウスホイールの動作を逆にする手順を紹介します。

マウスのデバイス名を確認します。

xinput

この例の場合、マウスのデバイス名は「ELECOM BlueLED Mouse」、id=12です。

マウスの’libinput Natural Scrolling Enabled’を1に設定すると、マウスホイール動作を逆にすることができます。

xinput set-prop 'デバイス名 or id' 'libinput Natural Scrolling Enabled' 1

set-propにデバイス名を指定する場合は、以下のようになります。

xinput set-prop 'ELECOM BlueLED Mouse' 'libinput Natural Scrolling Enabled' 1

起動スクリプト化

~/.xsessionrcというファイルに上記コマンドを記述して保存します。
~/.xsessionrcが存在しない場合は、新規作成します。

OS起動時、自動的にマウスホイール動作が逆になるよう設定されます。

参考サイト

Change your Raspberry Pi scrolling to Natural Scrolling - NEW Bookworm hack!
Change your Raspberry Pi scrolling to Natural Scrolling - NEW Bookworm hack! - bookworm.md

まとめ

本記事は、気づいたときにTipsを追記していきたいと思います。

コメント

タイトルとURLをコピーしました