web-dev-qa-db-ja.com

R / Wとしてサブディレクトリ(/ mnt / rootfs)の読み取り専用として/に同じデバイスをマウントする

UBIFSデバイス/ dev/ubi0_1を持っています。デバイスはLinuxrootfsのルートであり、読み取り専用としてカーネルブートにマウントされます。

だから私は/ dev/ubi0_1をROとして/にマウントしています。

後で、コマンドによって/ dev/ubi0_1を/ mnt/rootfsにR/Wとしてマウントしたいと思います。

mount -t ubifs -o rw /dev/ubi0_1 /mnt/rootfs

しかし、EBUSYでは失敗します。

このコマンド:

mount -t ubifs -o ro /dev/ubi0_1 /mnt/rootfs

成功しています。

したがって、両方のマウントポイントに同じ権限が必要であるように見えます。

再マウントを試みましたが、常に権限(ROまたはRW)が別々のマウントポイント間で自動的に伝播されます。

私の質問は、/ as ROおよび/ mnt/rootfsをR/Wとしてマウントする可能性があるかどうかです。

1
sibislaw

再マウントを試みましたが、常に権限(ROまたはRW)が別々のマウントポイント間で自動的に伝播されます。

man mountの非常に長いドキュメントを読んだ場合(または「読み取り専用」を検索し続ける場合)、バインドマウントを使用する場合はこれが当てはまらないことがわかります。

「元のファイルシステムスーパーブロック」ではなく、個々のマウントポイント「(VFSエントリ)」のステータスを変更するには、bindオプションを含めてマウントを再マウントする必要があります。

これがうまくいったことを報告できてとてもうれしく思います元のマウントポイントがbindを使用して作成されたかどうかに関係なく

次のシーケンスをお勧めします。

mount -oremount,bind,ro /
mount -oremount,rw /

mount -o bind,rw / /mnt/rootfs

# OR - this should have the same effect as the last command
mount -t ubifs -o rw /dev/ubi0_1 /mnt/rootfs

findmntは、各マウントポイントの全体的な有効ステータス(roまたはrw)を個別に表示します。

2
sourcejedi

以下に示す形式で機能しました(起動後、/はrwであり、2番目のマウントポイントをマウントしたディレクトリは/ layers/rootfsです)。

mount -o remount,ro /
mount --bind / /layers/rootfs
mount -o remount,rw /layers/rootfs

男性からの引用:

      Note that the filesystem mount options will remain the same as those  on  the  original
      mount  point, and cannot be changed by passing the -o option along with --bind/--rbind.
      The mount options can be changed by a separate remount command, for example:

             mount --bind olddir newdir
             mount -o remount,ro newdir
0
sibislaw