通过squashfs配合overlayfs增强RK3288文件系统的可靠性

本文介绍了如何在嵌入式Linux系统中应对意外断电导致的文件系统损坏问题,通过硬件备用电源和系统软件设计来规避风险。系统采用squashfs只读文件系统作为根文件系统,overlayfs为用户提供可写权限,其他分区如system、root、resource则采用只读挂载。此外,详细阐述了内核配置、开机挂载以及overlay挂载的实现方法,确保系统的稳定性和数据安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前言

在使用嵌入式 Linux 系统的时,会出现由于设备意外断电引起文件系统损坏而最终使该设备无法启动的现象。为了应对这种情况,通常会从硬件设计如采用备用电源,无论是锂电池还是超级电容等,或者从系统软件设上加以规避。

2. 系统分区规划

秉承数据隔离的原则以及为方便进行权限控制,本系统设计将系统、板级、应用、资源、数据进行分离。
本系统设计采用 squashfs 只读文件系统作为嵌入式设备 Linux 根文件系统,文件系统只读;采用 overlayfs 为用户目录增加可写权限,相关分区可读可写主要用来进行日志以及一些用户数据的记录,是整个系统最繁忙的分区;另外,板级/应用/资源可能由不同的角色负责,因此进行拆分,为保证分区可靠性,并考虑到分区在需要时可能会进行数据写入,因此分区采用只读挂载。相关分区采用ext4文件系统格式。
图示为在 EMMC 上基本规划的分区形式,实际产品的分区在此基础上需要继续进行拓展:
在这里插入图片描述

  • rootfs: 根文件系统分区,squash格式
  • system: system分区,用于存放系统运行监控程序以及相关系统脚本。挂载点/system,正常运行时只读挂载,需要升级时,remount,rw。
  • root: root分区,用于存放产品功能程序以及配置文件,php目录等。挂载点/root,正常运行时只读挂载,需要升级应用时,remount,rw。
  • resource: 资源分区,用于存放本地媒体资源。挂载点/resource,正常运行时只读挂载,需要升级媒体资源时,remount,rw。
  • userdata/userdata_a: 用户数据分区,用于存放程序与系统运行产生的日志/数据/媒体等,双备份,overlay挂载。

3. 使能kernel对squashfs以及overlay的支持

# 进入内核目录
$ cd $SDK/kernel/
# menuconfig配置
$ make ARCH=arm menuconfig
# 配置squashfs: File systems  ---> [*] Miscellaneous filesystems  ---> 
<*>   SquashFS 4.0 - Squashed file system support
# 配置overlay: File systems  --->
<*> Overlay filesystem support
# 退出并保存默认配置,会生成一个defconfig文件,替换当前板卡默认defconfig配置文件即可
$ make ARCH=arm savedefconfig

4. 修改开机挂载

4.1 分区挂载

通过overlay机制修改目标文件系统中/etc/fstab文件,添加条目将userdata分区挂载到/media/userdata路径下。

/dev/block/by-name/system       /system             ext4        ro,noauto,exec,             0       1
/dev/block/by-name/root         /root               ext4        ro,noauto,exec,             0       1
/dev/block/by-name/resource     /resource           ext4        ro,noauto                   0       2
/dev/block/by-name/userdata     /userdata           ext4        defaults,sync,noauto        0       2 
/dev/block/by-name/userdata_a   /media/userdata     ext4        defaults,sync,noauto        0       2

4.2 overlay挂载

修改开机自启脚本,将/media/userdata(即userdata分区)通过overlay指令挂载到/xxx目标目录

/bin/mount -t overlay  overlay -o lowerdir=/userdata,upperdir=/media/userdata/userdata,workdir=/media/userdata/worker /userdata
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值