为什么我可以(或不能)再次挂载已挂载的设备?怎么了?
例如:
/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$
答案1
看来这个原因是多个位置安装的标志-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
另请参阅男子坐骑伸展:
-w, --rw, --read-write Mount the filesystem read/write. This is the default. A synonym is -o rw.
这就是(似乎)为什么您可以/dev/sda5
使用默认选项安装在多个位置,但不能grub.iso
使用默认选项安装在多个位置
答案2
从证据来看:/dev/sda2
最初是作为/
(文件系统根目录)安装的。但 fstab 已完全禁用,主要挂载是在my_init
脚本文件中完成的。第一个挂载添加了原始根文件系统的完整/dev/sda2
内容,下一行/home/
仅/home/home/
通过--bind
选项挂载到相同内容,应该隐藏原始根文件系统的其余部分。如果你这样做umount /home/
一次,你应该在文件夹中看到(正如我所写的)整个原始根文件系统/home/
,即 ls /home/ 然后给出:bin boot dev etc home ...
不要问我为什么有人这样做。