使用 mount 命令查看设备挂载情况
/# mount
/dev/root on / type ext4 (rw,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
bpffs on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)
输出信息含义为:某某设备 挂载在 某某目录
虽然不像下面这行这么容易理解(磁盘设备 sda1 挂载在根目录)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
但,上面几行信息也可以勉强理解
proc 是内核创造的虚拟设备,挂载在 /proc 目录
sysfs 是内核创造的虚拟设备,挂载在 /sys 目录
tmpfs 是内核创造的虚拟设备,挂载在 /tmp 目录
tmpfs 是内核创造的虚拟设备,挂载在 /dev 目录
debugfs 是内核创造的虚拟设备,挂载在 /sys/kernel/debug 目录
然而,/dev/root 是个什么设备?
心急的小伙伴可能要跳出来了,/dev/root 不比 proc 好理解的多啊,它不就和 /dev/sda1 一样是个真实设备嘛?
真的那么简单吗?
我们查看一下
# ls /dev/root
ls: /dev/root: No such file or directory
傻眼了吧,根本没有这个设备。
不禁后背发凉,心想,没有这个设备,那怎么挂载上的??
别急,待我给你慢慢道来
我们为磁盘设备 /dev/mmcblk0p2 创建一个软链接 pp2
# ln -s /dev/mmcblk0p2 pp2
然后将 pp2 挂载到 /mnt
# mount pp2 /mnt
查看挂载
# mount
/dev/root on / type ext4 (rw,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
bpffs on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)
pp2 on /mnt type ext4 (rw,relatime)
查看目录内容
# ls /mnt/
bin lib overlay rom sys var
dev lost+found pp2 root tmp www
etc mnt proc sbin usr
其实 mmcblk0p2 就是存放 rootfs 的
删除 pp2,再次查看挂载情况
# rm pp2
# mount
/dev/root on / type ext4 (rw,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
bpffs on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)
pp2 on /mnt type ext4 (rw,relatime)
神奇地发现,pp2 on /mnt type ext4 (rw,relatime)
这行还在,
查看目录内容
# ls /mnt/
bin lib overlay root tmp www
dev lost+found proc sbin usr
etc mnt rom sys var
而且目录内容仍然正常
如法炮制,再挂载个 pp3,也正常
# mkdir mnt3
# mount pp3 /mnt3
# rm pp3
# mount
/dev/root on / type ext4 (rw,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
bpffs on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)
pp2 on /mnt type ext4 (rw,relatime)
pp3 on /mnt3 type ext4 (rw,relatime)
# ls /mnt3
bin lib mnt3 rom sys var
dev lost+found overlay root tmp www
etc mnt proc sbin usr
并且,/、/mnt/、/mnt3/ 目录下都有同一个文件 aaa,说明它们三个目录挂载的是同一个设备,所以根目录 /
挂载的也是 /dev/mmcblk0p2 设备(像数学推理证明有木有)
root@OpenWrt:/# ls / | grep aaa
aaa
root@OpenWrt:/# ls /mnt | grep aaa
aaa
root@OpenWrt:/# ls /mnt3 | grep aaa
aaa
最后,得出一个结论:
/dev/root 曾经是 /dev/mmcblk0p2 的软链接,在使用这个软链接将该设备挂载到根目录后,又将该软链接删除了。