私はg_mass_storageカーネルモジュールを使ってみました。まず/etc/modulesに入れて、オプションを入れてみました。/etc/modprobe.d/file.conf
これはうまくいきますが、デバイスをコンピュータに接続すると、一括ファイルストアは読み取り専用なので、私は望むものではありません。
これは、モジュールがロードされたときにルートファイルシステムが読み取り - 書き込みではなく読み取り専用でマウントされるためであると理論化します。
これは、カーネルドライバがバックアップストアの読み取り/書き込みファイルハンドルを取得しようとし、このrwハンドルをネゴシエートできない場合は読み取り専用に戻るために問題になります。
私が考えることができる唯一の解決策は、起動順序でカーネルモジュールのロードを後で移動することです。
私はmodprobeを使ってモジュールの初期化を/etc/rc.localに移しました。これは読み取りと書き込みの両方に効果的でしたが、モジュールをロードするのは少し面倒でした。
ファイルへのrwアクセスを必要とするカーネルモジュールをロードするための推奨場所はありますか?
答え1
これに対する[おそらく完全ではない]解決策は、ファイルシステムを読み取り/書き込みで再マウントする "systemd-remount-fs.service"システムサービスを接続することです。
これは、モジュールができるだけ早くロードされると同時に、ファイルシステムが読み書き可能になった後もまだロードされることを意味します。
私のサンプルsystemd設定ファイルは次のとおりです。
[Unit]
Description=Starts kernel modules for USB OTG
After=systemd-remount-fs.service
DefaultDependencies=false
[Service]
Type=simple
ExecStart=/home/pi/programs/startmod.sh
WorkingDirectory=/home/pi/programs/
[Install]
WantedBy=local-fs.target
少し這いますが、うまくいきます。