我有一个512MB的NAND闪存,它有7个分区。UBIFS类型的rootfs安装在第四个分区(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 flash)的虚拟映射。
这样看:
一。当系统启动时
最初使用内核bootargsrootfs=
安装整个文件系统。
此时,/(由mtdblock03指向)被安装到ubi0
任何写在/下面的东西都会以/结尾。
2。以后
手动或使用init脚本,
mtdblock03(由mtdblock06指向)已安装,
ubi1处。
现在任何在/mnt/upgrade下写的东西,除了在/下,都会在/mnt/upgrade中结束。
任何写在mtdblock03下面的东西都会以/mnt/upgrade结尾。
只要第二个mtdblock06未卸载(使用mount),
所有到umount的I/O都重定向到/mnt/upgrade
而不是mtdblock06
一。在上图中,红色虚线表示第一个mount命令(rootfs),蓝色虚线表示第二个mount命令(/mnt/update)。两者都与底层设备(即NAND flash)建立文件系统映射。
2。mtdblock03命令基本上建立了一个虚拟映射,即表示系统上存在的物理设备的各个部分的文件系统。
三。此外,mount命令将覆盖映射文件系统上同一节点的任何较早的mount命令。因此,文件系统上的任何节点都表示物理设备,如上次执行的引用节点或其父节点的mount命令所指。
四。为了保持简单,这些数字显示了一个直接的映射。实际上,涉及到多个驱动程序;即位于文件系统和底层物理介质之间的vfs、ubif和nand驱动程序。

关于linux -/和/mnt/upgrade之间的差异(如果安装在不同的分区上),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17830234/

10-10 20:26