我有一个 512 MB 的 NAND 闪存,它有 7 个分区。 UBIFS 类型的 rootfs 挂载在第 4 个分区 (mtdblock03)。它还有一个 UBIFS 类型的升级分区,挂载在第 6 个分区(mtdblock06)上。 mount
命令后显示的信息是:
root@freescale ~$ mount
rootfs on / type rootfs (rw)
ubi0:gpmi-nfc-general-use on / type ubifs (rw,relatime)
proc on /proc type proc (rw,relatime)
sys on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620)
shm on /dev/shm type tmpfs (rw,relatime)
rwfs on /mnt/rwfs type tmpfs (rw,relatime,size=512k)
ubi1:upgrade on /mnt/upgrade type ubifs (rw,relatime)
我的问题是,当升级在 /mnt/upgrade
时,它不会成为 /
的一部分。
由于整个 /
都在 (mtdblock03) 中,所以/mnt/upgrade 应该是 (mtdblock03) 的一部分而不是 (mtdblock06)?
最佳答案
没有。 /mnt/upgrade
不是 mtdblock03
的一部分。
/
和 /mnt/upgrade
都是虚拟文件系统中的虚拟点,它只是底层物理介质的虚拟映射(在您的情况下为 NAND 闪存).
这样看:
1。系统启动时
最初使用内核bootargs rootfs=
,
整个文件系统 /
被挂载。
此时,mtdblock03
(ubi0
指向)挂载到/
。
- 在
/
下的任何地方编写的任何内容都将在mtdblock03
中结束。
2。稍后
手动或使用初始化脚本,
mtdblock06
(由ubi1
指向)已挂载,
在 /mnt/upgrade
。
- 现在在
/
EXCEPT 下编写的所有内容都在/mnt/upgrade
下结束了mtdblock03
。
在/mnt/upgrade
下编写的任何内容都将在mtdblock06
中结束。
只要第二个mount
没有卸载(使用umount
),
all I/O to
/mnt/upgrade
is redirected tomtdblock06
并且不 mtdblock03
。
<子> 1. 上图中,红色虚线代表第一个挂载命令(rootfs),蓝色虚线代表第二个挂载命令(/mnt/update) ).两者都建立了与底层设备(即 NAND 闪存)的文件系统映射。
<子>
2. mount
命令基本上建立了一个虚拟映射,即您的文件系统代表系统上存在的物理设备的各个部分。
<子>
3. 此外,mount
命令将覆盖任何较早的在文件系统上映射相同节点的 mount
命令。因此,文件系统上的任何节点都代表上次执行的引用该节点或其父节点的 mount
命令所指向的物理设备。
<子> 4. 为了简单起见,图中显示了直接映射。实际上,涉及多个驱动程序;即位于文件系统和底层物理介质之间的 vfs、ubifs 和 nand 驱动程序。
关于linux - 如果安装在不同的分区上,/和/mnt/upgrade 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17830234/