linux - 如果安装在不同的分区上,/和/mnt/upgrade 之间的区别

标签 linux linux-kernel filesystems embedded-linux mount

我有一个 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指向)挂载到/

initial rootfs mounted

  • / 下的任何地方编写的任何内容都将在 mtdblock03 中结束。

2。稍后

手动或使用初始化脚本, mtdblock06(由ubi1指向)已挂载,
/mnt/upgrade

another block mounted

  • 现在在 / EXCEPT 下编写的所有内容都在 /mnt/upgrade 下结束了 mtdblock03
    /mnt/upgrade 下编写的任何内容都将在 mtdblock06 中结束。

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

all I/O to /mnt/upgrade is redirected to mtdblock06

并且 mtdblock03


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

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

<子> 3. 此外,mount 命令将覆盖任何较早的在文件系统上映射相同节点的 mount 命令。因此,文件系统上的任何节点都代表上次执行的引用该节点或其父节点的 mount 命令所指向的物理设备。

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

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

相关文章:

linux - 用于验证Linux上make版本的Shell脚本

linux - 如何获取 linux 内核模块的选项列表?

linux - Linux 中的 fork() 后,父级和子级如何使用 Copy-On-Write 共享页面?

Linux内核:Register a handler for a specific UDP port traffic?

linux - 关于Linux内核的起点

c - 遍历文件系统时内存损坏

macos - FSEvents 和复制大文件

html - 使用 mailx 发送带有 HTML 正文和附件的电子邮件

ios - 如何将NSArray保存到文件并从文件中检索NSArray

linux - 收到错误 : No rule to make target while compiling linux Kernel