• 系统篇: squashfs 文件系统


    一、squashfs简介

    Squashfs是一套基于Linux内核使用的压缩只读文件系统。该文件系统能够压缩系统内的文档,inode以及目录,文件最大支持2^64字节

    特点:

    • 数据(data),节点(inode)和目录(directories)都被压缩
    • 保存了全部的32位uid/gids和文件的创建时间
    • 支持多达4G的文件系统
    • 节点和目录都是高度压缩, 所有压缩的节点长度平均在8个字节左右
    • squashfs可以有更大的块大小, 这样可以达到比4K块大小更大的压缩率
    • squashfs引进了碎片块(fragment blocks)的概念: 一种将许多比块小的文件存储在一个块中, 以达到更大的压缩率
    • 重复的文件会被检测并删除掉
    • 同时支持big和little endian架构

    编译使用SQ的基本步骤:

    • 重新打包和编译linux内核, 使之支持SQ
    • 编译mksquashfs工具
    • 使用mksquashf创建压缩文件系统
    • 挂载: mount suqash文件系统到一个临时目录
    • 如果需要自动挂载,更改/etc/fstab 或者起始脚本, 以使linux操作系统自动加载新的 squashfs 文件系统
    二、flash分区
    • fdisk是用来查看硬盘分区的,不能查看flash分区,因为flash是没有所谓的分区表
    • 查看flash分区使用命令cat /proc/partitions
    • 不像硬盘通过命令分区,flash分区是Linux内核中实现的
    • Uboot没有对Nandflash进行分区,通过bootargs参数将分区信息传递给内核
    setenv bootargs 'mem=64M console=ttyAMA0,115200 rw root=/dev/mtdblock2 rootfstype=squanshfs mtdparts=hi_sfc:1M(boot),4M(kernel),12M(rootfs)'
    
    • 1

    参考链接:https://blog.csdn.net/wesleyluo/article/details/8102361

    三、文件系统镜像制作

    mksquashfs source dest [options] [-e list of exclude dirs/files]:

    • eg:mksquashfs xxx.squashfs -b 64K -comp xz
    • -b :设置块大小,单位 Bytes,默认 131072 bytes (1MB)
    • -comp:指定压缩算法:gzip (default)/lzo/xz

    参考链接:https://blog.csdn.net/qq_40083589/article/details/82948536

    四、镜像使用

    提取镜像中的文件:

    unsquashfs xxx.squashfs
    
    • 1

    将镜像文件转换为一个块设备:

    sudo losetup /dev/myloop xxx.squashfs
    
    • 1

    将块设备挂载到主文件系统的目录:

    sudo mount /dev/myloop dirname
    
    • 1

    就可以进入dirname目录,对该虚拟磁盘进行操作了,就像使用真实磁盘一样

    卸载该镜像:

    sudo umount /dev/myloop
    sudo losetup -d /dev/myloop
    
    • 1
    • 2

    参考链接:https://blog.csdn.net/qq_40083589/article/details/82948536

  • 相关阅读:
    十三、【画笔工具组】
    【Netty 的优化和参数】
    自定义mvc增删改查
    基于51单片机NEC协议红外遥控发送接收仿真设计( proteus仿真+程序+原理图+报告+讲解视频)
    STP生成树协议基本配置示例---STP逻辑树产生和修改
    程序员是一个需要天赋的职业吗?
    商鼎云|为Chromium添加星际文件系统协议支持
    Python超入门(5)__迅速上手操作掌握Python
    js判断手机号是否为11位数
    微信小程序使用微信云托管添加自定义域名并转发到pexels.com
  • 原文地址:https://blog.csdn.net/GCQ19961204/article/details/126679813