マウントされたデバイスを再度マウントできる(またはできない)のはなぜですか?何が起こっている?
例えば:
/tmp/test$ Sudo mount /dev/sda5 ./1;echo ${?}
0
/tmp/test$ Sudo mount /dev/sda5 ./2;echo ${?}
0
/tmp/test$ Sudo mount | grep test
/dev/sda5 on /tmp/test/1 type ext4 (rw,relatime,data=ordered)
/dev/sda5 on /tmp/test/2 type ext4 (rw,relatime,data=ordered)
/tmp/test$ Sudo umount ./1 ./2;echo ${?}
0
/tmp/test$ Sudo losetup
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
/dev/loop0 0 0 0 0 /tmp/test/grub.iso 0
/tmp/test$ Sudo mount /dev/loop0 ./1;echo ${?}
mount: /dev/loop0 is write-protected, mounting read-only
0
/tmp/test$ Sudo mount /dev/loop0 ./2;echo ${?}
mount: /dev/loop0 is already mounted or /tmp/test/2 busy
/dev/loop0 is already mounted on /tmp/test/1
32
/tmp/test$ Sudo mount | grep test
/dev/loop0 on /tmp/test/1 type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
/tmp/test$
この理由は、マウントが同じである必要がある複数の場所の-w
フラグと-r
フラグにあるようです。
例(/dev/sda5
はすでに-o rw
でマウントされています):
$ Sudo mount -r ./grub.iso ./1;echo $?
0
$ Sudo mount -r ./grub.iso ./2;echo $?
0
$ Sudo mount -r ./grub.iso ./3;echo $?
0
$ Sudo umount ./1 ./2 ./3;echo $?
0
$ Sudo mount -r /dev/sda5 /mnt;echo $?
mount: /dev/sda5 is already mounted or /mnt busy
/dev/sda5 is already mounted on /home/xx/yy
32
ストレッチ用のmanマウント :も参照してください。
-w, --rw, --read-write Mount the filesystem read/write. This is the default. A synonym is -o rw.
これが、デフォルトオプションを使用して複数の場所に/dev/sda5
をマウントできるが、複数の場所にデフォルトオプションを使用してgrub.iso
をマウントできない理由です。
証拠から判断すると、/dev/sda2
は元々/
(ファイルシステムルート)としてマウントされていました。ただし、fstabは完全に無効になっており、メインマウントはmy_init
スクリプトファイルで実行されます。最初のマウントでは、元のルートファイルシステムを含む完全な/dev/sda2
が追加され、次の行は同じ/home/
のみ/home/home/
に--bind
オプションでマウントされます。元のルートファイルシステムの残りの部分。 umount /home/
を1回実行すると、(私が書いたように)元のルートファイルシステム全体が/home/
フォルダーに表示されます。つまり、ls/home /は、次のようになります。bin boot dev etc home ...
なぜ誰かがそうしたのか、私に聞かないでください。