我有一个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/