为什么我可以(或不能)再次挂载已挂载的设备?怎么了?
例如:
/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
and-r
标志需要相同。例如(
/dev/sda5
已安装-o rw
):另请参阅man mount 以进行拉伸:
这就是(似乎)为什么您可以使用默认选项安装
/dev/sda5
在多个位置,但不能在多个位置使用默认选项grub.iso
安装根据证据判断:
/dev/sda2
最初是作为/
(文件系统根目录)安装的。但是 fstab 被完全禁用,主要挂载在您的my_init
脚本文件中完成。第一次挂载添加了/dev/sda2
原始根文件系统的完整内容,下一行/home/
只能/home/home/
通过--bind
选项安装到相同的位置,应该隐藏原始根文件系统的其余部分。如果你这样做umount /home/
一次,你应该看到(正如我写的)文件夹中的整个原始根文件系统/home/
,即 ls /home/ 然后给出:bin boot dev etc home ...
不要问我,为什么有人这样做。