RaspiOSでUSB hotplugを停止する

 RaspiOSのDesktopで、USBを差し込むとfatとかなら自動認識されてどのアプリを起動するか聞かれるダイアログが出る。

 デフォルトはアプリはFile Manager(pcmanfm)が設定されている。

 都合により、これを止めて、アプリ側からマウント/アンマウントを制御したい。

 trixieから、いっぱい分散していた設定関係は、Control Centreに集約されたようだ。

 起動する。Centreは英語表記なのね。そういう妙な自己主張が面白いw

 しかし、この中には設定はないのであった。

 どこにあるかというと「File Managerの設定」になる。フォルダアイコンのFile Mangerを開いて、Edit->Preferencesを開く。

 このチェックをぜんぶ外しておく。

 ぜんぶチェックを外すと、プログラムがキックされることもなくなった。

 LXDE-piはもう使っていないようだ。

fd@pi4:~ $ ~/.config/pcmanfm/LXDE-pi/pcmanfm.conf

-bash: /home/fd/.config/pcmanfm/LXDE-pi/pcmanfm.conf: No such file or directory

 GUIでやった設定は、どこに保存されているんだろう? 探す。

fd@pi4:~ $ find ~/.config -type f -name "pcmanfm.conf"

/home/fd/.config/pcmanfm/default/pcmanfm.conf

fd@pi4:~ $ find /etc/xdg -type f -name "pcmanfm.conf"

/etc/xdg/pcmanfm/default/pcmanfm.conf

 なるほど、いまはこれか。

fd@pi4:~ $ cat /home/fd/.config/pcmanfm/default/pcmanfm.conf

[config]
bm_open_method=0
[volume]
mount_on_startup=0
mount_removable=0
autorun=0
[ui]
always_show_tabs=0
max_tab_chars=32
win_width=640
win_height=418
splitter_pos=150
media_in_new_tab=0
desktop_folder_new_win=0
change_tab_on_drop=1
close_on_unmount=1
focus_previous=0
side_pane_mode=places
view_mode=icon
show_hidden=0
show_thumbs=0
sort=name;ascending;
columns=name;size;mtime;
toolbar=newtab;navigation;home;
show_statusbar=1
pathbar_mode_buttons=0
prefs_app=rpcc desktop
common_bg=0

 コピー元と思われるデフォルト設定も見てみる。

fd@pi4:~ $ cat /etc/xdg/pcmanfm/default/pcmanfm.conf

[config]
bm_open_method=0
[volume]
mount_on_startup=1
mount_removable=1
autorun=1
[desktop]
wallpaper_mode=0
desktop_bg=#000000
desktop_fg=#ffffff
desktop_shadow=#000000
show_wm_menu=0
[ui]
win_width=640
win_height=480
splitter_pos=150
view_mode=0
show_hidden=0
max_tab_chars=32
sort=name;ascending;
columns=name;size;mtime;
prefs_app=rpcc desktop
common_bg=0

 通常、外部メディアのコントロールは、udisks2がサービスとして行なっている。

fd@pi4:~ $ sudo systemctl status udisks2.service | cat

● udisks2.service - Disk Manager

Loaded: loaded (/usr/lib/systemd/system/udisks2.service; enabled; preset: enabled)

Active: active (running) since Tue 2025-09-09 17:38:39 JST; 3 weeks 5 days ago

Invocation: 9056b08ab00c4f7aaa60c55b83b1e388

Docs: man:udisks(8)

Main PID: 750 (udisksd)

Tasks: 6 (limit: 3906)

CPU: 436ms

CGroup: /system.slice/udisks2.service

└─750 /usr/libexec/udisks2/udisksd

Sep 09 17:38:38 pi4 systemd[1]: Starting udisks2.service - Disk Manager...

Sep 09 17:38:39 pi4 udisksd[750]: udisks daemon version 2.10.1 starting

Sep 09 17:38:39 pi4 systemd[1]: Started udisks2.service - Disk Manager.

Sep 09 17:38:39 pi4 udisksd[750]: Acquired the name org.freedesktop.UDisks2 on the system message bus

Oct 06 13:25:18 pi4 udisksd[750]: Mounted /dev/sda1 at /media/fd/bootfs on behalf of uid 1000

Oct 06 13:34:23 pi4 udisksd[750]: Cleaning up mount point /media/fd/bootfs (device 8:1 no longer exists)

Oct 06 13:34:24 pi4 udisksd[750]: g_variant_store: assertion 'data != NULL' failed

 なので、これを停止してしまうという方法もある。

sudo systemctl stop udisks2.service
sudo systemctl disable udisks2.service

 さらに、udevルールで自動マウントトリガを抑止するルールを追加して、マウント自体をブロックする方法もある。

 さて、udisks2が有効であれば、udisksctlコマンドを使って、マウント操作ができる。

fd@pi4:~ $ sudo udisksctl mount -b /dev/sda1

Mounted /dev/sda1 at /media/root/bootfs

fd@pi4:~ $ sudo df /dev/sda1

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda1         522230 75762    446468  15% /media/root/bootfs

fd@pi4:~ $ sudo udisksctl unmount -b /dev/sda1

Unmounted /dev/sda1.

 USBストレージを切ることもできる。

fd@pi4:~ $ sudo fdisk -l /dev/sda1

Disk /dev/sda1: 512 MiB, 536870912 bytes, 1048576 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x00000000

fd@pi4:~ $ sudo udisksctl power-off -b /dev/sda1

fd@pi4:~ $ sudo fdisk -l /dev/sda1

fdisk: cannot open /dev/sda1: No such file or directory

 もっとプリミティブに、mount/umountコマンドを使ってもいい。

 これもわりと普通だな...


オリジナル投稿:
RaspiOSでUSB hotplugを停止する|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/10693823