0

我有一个 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) 的一部分?

4

1 回答 1

1

不。/mnt/upgrade属于mtdblock03

/并且/mnt/upgrade都是虚拟文件系统中的虚拟点,它只是到底层物理媒体(在您的情况下为 NAND 闪存)的虚拟映射。

这样看:

1.系统启动时

最初使用内核 bootargs rootfs=
整个文件系统/被挂载。
此时,mtdblock03(由 指向的ubi0)已安装到/

安装的初始 rootfs

  • 任何写在下面的任何地方都/mtdblock03.

2. 稍后

手动或使用初始化脚本, mtdblock06(由 指向ubi1)安装
/mnt/upgrade.

安装了另一个块

  • 现在,在/ EXCEPT下编写的任何内容都/mnt/upgrademtdblock03.
    并且写在下面的任何内容都/mnt/upgrademtdblock06.

只要第二个mount没有卸载(使用umount),

所有 I/O 都/mnt/upgrade被重定向到mtdblock06

不是 mtdblock03


1. 上图中,红色虚线代表第一个挂载命令(rootfs),蓝色虚线代表第二个挂载命令(/mnt/update)。两者都与底层设备(即 NAND 闪存)建立文件系统映射。

2. 该mount命令基本上建立了一个虚拟映射,即您的文件系统,它代表系统上存在的物理设备的各个部分。

3. 该mount命令还将覆盖任何先前mount在文件系统上映射同一节点的命令。因此,文件系统上的任何节点都代表最后执行的命令所指向的物理设备,该mount命令引用该节点或其父节点。

4. 为了简单起见,这些数字显示了直接映射。实际上,涉及多个驱动程序;即位于文件系统和底层物理介质之间 的vfsubifsnand驱动程序。

于 2013-07-24T12:44:06.183 回答