udev ルールにより、「読み取り専用ファイルシステム」エラーが発生します。

udev ルールにより、「読み取り専用ファイルシステム」エラーが発生します。

いくつかの特定の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つの可能性を見る:

  1. このsystemd-udevdプロセスは、ルートファイルシステムが読み取り/書き込みで再マウントされ、読み取り専用として処理される前に開始されます。
  2. プロセスsystemd-udevdはいくつかのセキュリティメカニズムによってバインドされます。 Ubuntuの場合はAppArmorです。

しかし、手動再起動後に動作するという事実は、udev最初の可能性を強く示唆しています。usb-mount.sh次のコマンドを使用してrootfsの読み取りと書き込みを再マウントしようとします。

mount -o remount,rw /

関連情報