いくつかの特定のUSB HDが接続されたときに/media/my-diskディレクトリを生成するシェルスクリプトを起動するudevルールを作成しました。数ヶ月間は機能しましたが、再起動後(一部のパッケージの更新)ドライブを接続するたびに、システムログに次のメッセージが表示されます。
mkdir: cannot create directory '/media/my-disk': Read-only file system
スクリプトに次の行を追加しました。
whoami
mount
結果:
root
usb-mount.sh: /dev/mapper/sda3_crypt on / type btrfs (ro,relatime,ssd,space_cache,subvolid=257,subvol=/@)
したがって、udevはルートファイルシステムを読み取り専用として見ているようですが、sudo mount
手動で実行すると読み取り/書き込みとしてマウントされたとマークされます。
/dev/mapper/sda3_crypt on / type btrfs (rw,relatime,ssd,space_cache,subvolid=257,subvol=/@)
オンラインで検索したところ、同じ問題が見つかりましたが、解決策はありません。 https://www.raspberrypi.org/forums/viewtopic.php?t=210243
udevサービスを再起動すると、次回再起動するまで問題が解決します。
この問題を永久に解決するには、何を確認する必要がありますか?
注:私はUbuntu 18.04.1 LTSを実行しています。
答え1
私は2つの可能性を見る:
- この
systemd-udevd
プロセスは、ルートファイルシステムが読み取り/書き込みで再マウントされ、読み取り専用として処理される前に開始されます。 - プロセス
systemd-udevd
はいくつかのセキュリティメカニズムによってバインドされます。 Ubuntuの場合はAppArmorです。
しかし、手動再起動後に動作するという事実は、udev
最初の可能性を強く示唆しています。usb-mount.sh
次のコマンドを使用してrootfsの読み取りと書き込みを再マウントしようとします。
mount -o remount,rw /