系统分区格式
查看我们系统的分区格式
# cat /proc/partitions
major minor #blocks name
1 0 16384 ram0
1 1 16384 ram1
1 2 16384 ram2
1 3 16384 ram3
1 4 16384 ram4
1 5 16384 ram5
1 6 16384 ram6
1 7 16384 ram7
1 8 16384 ram8
1 9 16384 ram9
1 10 16384 ram10
1 11 16384 ram11
1 12 16384 ram12
1 13 16384 ram13
1 14 16384 ram14
1 15 16384 ram15
179 0 7806976 mmcblk0
179 1 14336 mmcblk0p1
179 2 143360 mmcblk0p2
179 3 143360 mmcblk0p3
179 4 524288 mmcblk0p4
其中mmcblk0p1-4对应上图的分区
下面我们要了解文件系统与上面分区的关系,系统有一个mmcblk0p4分区为f2fs文件系统格式,是可写的分区,而squashfs是只读的分区。
1.首先,引导程序启动内核完成之后,由内核加载rootfs A或者rootfs B只读分区部分来完成系统的初步启动
2.rootFS A或者B采用的linux内核支持的squashfs文件系统(一种只读文件系统),加载完毕后将其挂在到/rom目录(同时也挂载为/根目录)
3.系统将用f2fs文件系统格式化p3 Application分区并且将这部分挂在到/overlay目录
4.系统再将/overlay透明挂载为/根目录
5.最后将一部分内存挂载为/tmp目录
6.挂载命令:
mkdir /tmp/overlay
chmod 755 /tmp/overlay
mount -o noatime -t f2fs /dev/mmcblk0p4 /tmp/overlay
mount -o noatime,move /tmp/overlay /overlay
mkdir /overlay/upper
mkdir /overlay/work
chmod 0755 /overlay/upper
chmod 0755 /overlay/work
mount -o noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work -t overlay "overlay:/overlay" /mnt
pivot_root /mnt /mnt/rom
mount -o noatime,move /rom/dev /dev
mount -o noatime,move /rom/tmp /tmp
mount -o noatime,move /rom/sys /sys
mount -o noatime,move /rom/overlay /overlay
mount -o noatime,move /rom/proc /proc
7.挂载情况
# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 26.4M 26.4M 0 100% /rom
tmpfs 512.0K 0 512.0K 0% /dev
tmpfs 115.9M 0 115.9M 0% /tmp
/dev/mmcblk0p4 510.0M 114.1M 395.9M 22% /overlay
overlay:/overlay 510.0M 114.1M 395.9M 22% /
8.透明挂载根目录
系统先将rootfsA或者B 挂载为根目录,这样具备了一个完整的系统,然后再将application以透明方式挂载在根目录上。
①我们 所看到的根文件系统是由rootfs A/B 和 application 两个分区组合在一起的。
②当我们修改一个任何位置的文件的时候,所做的修改在application里会有记录。
③当我们删除一个文件的时候,所做的修改在application里面会有记录。
④当我们增减一个文件的时候,所做的修改在application里面会有记录。
⑤当我们读取文件的时候,首先检测application里面的状态,再检测rootfs A/B的内容,一直到最后给我们一个结果。
好处和坏处:
坏处:当对文件进行操作的时候,比如我们修改了一个名字为abc的文件,那么同时存在/rom里面还有修改之前的abc,同时在/overlay里面修改之后的abc,所占用的空间是倍增的。
好处:系统不论任何时候,只要通过简单的删除掉/overlay里面的所有文件,就能达到复原的效果。