背景
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 件のコメント :
コメントを投稿