2023年7月23日日曜日

起動したらUSBメディアを自動でマウントするRaspberry Pi OS Liteの設定


背景

Raspberry Pi OS Liteで電源を入れたら処理が動いてUSBメディアに情報を記録するプログラムを作ったところ、USBメディアを自動で認識してくれる設定が難儀だったので備忘録として方法を記事に残します。

なお、Raspberry Pi OSのデスクトップ版はpolkitでudisksの権限を変更したら自動で認識してくれるのを把握しています。
自動ログインを無効にしたRaspberry Pi OSにパスワード入力無しでUSBメディア接続時認識させる

今回はLite版OS向けです。

使ったもの

  • Raspberry Pi OS Liteで動かすRaspberry Pi
    2023年5月配布版のRaspberry Pi OS Liteを3B+で動かして動作を確認しました。
  • USBメディア
    USBメモリを利用しました。

Raspberry Piの自動ログインを有効化

メディアのマウントはそれを扱うユーザーがログインしている必要があるため、cliの自動ログインを有効にします。
Raspberry Piにログインして下記コマンドで設定変更可能です。
sudo raspi-config nonint do_boot_behaviour B2

ストレージ自動マウントプログラムudiskieを自動起動させる

udiskieとはストレージ制御プログラムudisksを利用して自動マウントを行うプログラムです。
udiskieをサービス(デーモン)として動かせば起動後にUSBメディアを自動マウントする状態になるといくつかのページで紹介されていたので、それを参考にしました。

Starting and stopping udiskie in daemon mode #93

Raspberry Piにログインしてインストールします。
sudo apt install -y udiskie

udiskieをOS起動時から動かすためのサービスの設定ファイルを作ります。
~/.config/systemd/user/udiskie.service
[Unit]
Description=udiskie mounts drives when plugged in
# After=udisks2.service

[Service]
ExecStart=/usr/bin/udiskie --automount --no-notify --no-file-manager --no-tray --no-appindicator

[Install]
# WantedBy=graphical.target
# WantedBy=multi-user.target
WantedBy=default.target

下記のコマンドで上記のフォルダとファイルを作れます。
mkdir -p ~/.config/systemd/user/
echo "[Unit]
Description=udiskie mounts drives when plugged in
# After=udisks2.service

[Service]
ExecStart=/usr/bin/udiskie --automount --no-notify --no-file-manager --no-tray --no-appindicator

[Install]
# WantedBy=graphical.target
# WantedBy=multi-user.target
WantedBy=default.target
" >> ~/.config/systemd/user/udiskie.service

設定ファイルを反映してudiskieの自動起動を有効にします。
systemctl --user daemon-reload
systemctl --user enable udiskie

再起動せずに試したい場合は下記のコマンドでサービスを実行します。
systemctl --user start udiskie

再起動するかudiskieのサービスを実行した後にUSBメモリをRaspberry Piに差し込むと、自動で/media/[ユーザー名]のフォルダの中にマウントされます。
ls /media/$USER

余談: 動かないときのログ確認方法

udiskieのログ確認
journalctl --user -u udiskie

udiskieの状態確認
systemctl --user status udiskie

udisksのログ確認
sudo journalctl -u udisks2

udisksの状態確認
sudo systemctl status udisks

なお、udisks2のログで表示される下記のエラーはRAIDに関するプログラムらしいので無視して良いようです。
failed to load module mdraid: libbd_mdraid.so.2: cannot open shared object file: No such file or directory

おわり

Raspberry Pi OS Liteで電源投入後にUSBメディアを自動マウントする状態を作れました。
期待通りに動かせて良かったです。

参考

Starting and stopping udiskie in daemon mode #93
【debian10】udisksdがmdraidモジュールが読み込めないエラー

0 件のコメント :