关于squashfs压缩挂载
嵌入式常用的一种压缩方式squashfs;
一、squashfs优缺点
(1)优点
高压缩率:SquashFS 使用 gzip、lzma、lz4、xz 等压缩算法,能够显著减少文件系统的大小,节省存储空间。
只读特性:适合用于需要保护数据完整性的环境,如嵌入式系统和操作系统的只读镜像。
高效的随机访问:SquashFS 支持高效的随机读取访问,适合读取频繁的场景。
碎片处理: 通过 Fragment Table,SquashFS 能有效处理小文件,减少存储碎片,提高存储效率。
存储和性能优化: 支持文件、目录和 inode 的压缩,减少了存储占用和 I/O 操作,提高了性能。
数据完整性:SquashFS 可以包含校验和,用于确保数据的完整性和防止数据损坏。
(2)缺点
只读特性:SquashFS 是只读的,不能直接修改文件系统中的文件或目录。这意味着需要更新或更改文件系统时,必须重新生成整个文件系统镜像。
压缩开销:虽然读取速度较快,但解压缩过程仍然需要一定的 CPU 资源。在低性能的嵌入式系统中,这可能会对系统性能产生一定影响。
内存消耗:在读取大文件时,解压缩过程可能会消耗大量内存,尤其是在资源受限的嵌入式系统中,这可能会成为一个瓶颈
(来源:https://blog.csdn.net/li_wen01/article/details/157354547)
二、挂载sqfs的方式方法
1、mount方式
挂载源(/dev/***),挂载点(/mnt/***):df -h 可查看 /dev/***/abc(实物磁盘名称)------/mnt/****/abc(相当于一个快捷方式)
将sqfs用fwrite写入挂载源(即下边函数的参数1)对应的具体实际磁盘位置,然后执行mount:mount(挂载源, 挂载点, squashfs, 0, NULL);
mount( "/opt/xxx.sqfs", // 1. __special_file 要挂载的文件/设备 "/custom/audio", // 2. __dir 挂载到哪个目录 "squashfs", // 3. __fstype 文件系统类型 MS_RDONLY | MS_LOOP,//4. __rwflag 只读+loop挂载 NULL // 5. __data 额外参数 );
2、ubi方式
通过df -h检查挂载,状况umount旧的挂载
然后将文件写入分区不再使用fwrite而是使用(ubiupdatevol);ubiupdatevol会自动获得文件的大小,再完成ioctl和写入;
然后继续执行挂载mount操作;
浙公网安备 33010602011771号