ext4 文件格式 和android ota 流程

原创 2016年08月31日 12:09:39
一 基本概念
inode:            索引节点
superblock:       超级块
block:            文件系统块
block group:      文件系统块组
disk block:       磁盘块(512字节)
block device:     块设备

二 工具
  block块位图
     这个就是一个块使用情况记录表。记录哪些块使用,哪些块未使用。
     它的原理就是对整个块组中0-32767这总共32768个块中作一个映射。
     根据一个bytes有8个位00000000,一个块有4096bytes也就是有4096*8=32768个位,
     这32768个位刚好对应了块组中32768的块。如果第N个块被使用了则标记第N位为1,否则为0。
     推算出一个块组 32768*blockszie(4k) = 128M
  inode位图
     和上面的块位图一样,这个是inode的使用情况记录表。由超级块基本信息可以看到每个块组有8128个inode,
     这里对inode的映射原理和块位图也是一样,只不过没有用满一个块。
  inode表
     inode表就是具体存放inode信息的地方。在ext4中,inode的大小为256字节(ext2/3中仅有它的一半,128字节),
     一个块可以存放16个inode,由于一个块组有8128 个inode,总共需要8128/16=508个块存放inode表。这个值可以在超级块基本信息中的Inode blocks per group中看到。


dumpe2fs /tmp/unsparse_system-SpgENC.img
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:  
Last mounted on:          
Filesystem UUID:          57f8f4bc-abf4-655f-bf67-946fc0f9f25b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode filetype extent sparse_super large_file uninit_bg
Filesystem flags:         unsigned_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Remount read-only
Filesystem OS type:       Linux
Inode count:              98304
Block count:              393216
Reserved block count:     0
Free blocks:              379875
Free inodes:              97907
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      95
Blocks per group:         32768                              (4096*8)
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Last mount time:          n/a
Last write time:          Thu Jan  1 08:00:00 1970
Mount count:              0
Maximum mount count:      -1
Last checked:             Thu Jan  1 08:00:00 1970
Check interval:           0 ()
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   tea
Journal backup:           inode blocks
Journal features:         (none)
Journal size:             24M
Journal length:           6144
Journal sequence:         0x00000001
Journal start:            0

Group 0: (Blocks 0-32767)
  Checksum 0x2f75, unused inodes 0
  Primary superblock at 0, Group descriptors at 1-1
  Reserved GDT blocks at 2-96
  Block bitmap at 97 (+97), Inode bitmap at 98 (+98)
  Inode table at 99-610 (+99)
  25566 free blocks, 7795 free inodes, 65 directories
  Free blocks: 7202-32767
  Free inodes: 398-8192
Group 1: (Blocks 32768-65535) [INODE_UNINIT]
  Checksum 0xb1af, unused inodes 0
  Backup superblock at 32768, Group descriptors at 32769-32769
  Reserved GDT blocks at 32770-32864
  Block bitmap at 32865 (+97), Inode bitmap at 32866 (+98)
  Inode table at 32867-33378 (+99)
  32157 free blocks, 8192 free inodes, 0 directories
  Free blocks: 33379-65535
  Free inodes: 8193-16384



三 python 流程
1.add_img_to_target_files.py               build_image.py    
  |1. main                                 |
  |2. AddImagesToTargetFiles               |
  |3. AddSystem                            |
  |4. BuildSystem                          |
  |5. CreateImage------------------------->|6.BuildImage
  |                                        |  mkuserimg.sh 生成spare.img
  |                                        |  UnsparseImage 生成 unspare.img  Running simg2img 
  |                                        |  e2fsck 检查unspare.img 的完成性
  |                                        |  Running:  e2fsck -f -n /tmp/unsparse_system-SpgENC.img
  |                                        |  OK 删除 unsparse_sysstem.img
  |      return spare.img(fn)<------------ |                      
  |                                        |
  |7. zip to targetfile              
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(104) | 评论(0) | 转发(0) |
0

上一篇:字符编码

下一篇:Makefile 总结

相关热门文章
给主人留下些什么吧!~~
评论热议
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

如何制作Ext4文件系统镜像

如何制作Ext4文件系统镜像将来有一天,在一个目录上右击,会有一个选项是「生成Ext4镜像」。但是目前还没有,记录一下步骤。...
  • kangear
  • kangear
  • 2015年10月24日 17:54
  • 5877

EXT4 之 Android 文件系统剖析

文件系统的结构剖析。 inode和dentry之间的关系 superblock数据结构解析

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

嵌入式开发中格式化usb设备为ext3/4文件格式及文件系统掉电修复

1. 首先移植e2fsprogs1.41.4源码,new一个文件夹build或者release,在该目录下进行交叉编译。 2.在misc目录下会生成可执行文件blkid, fsck, mke2fs,t...
  • wuruixn
  • wuruixn
  • 2013年08月15日 19:00
  • 2960

Nutch爬虫工作流程及文件格式详细分析

Nutch主要分为两个部分:爬虫crawler和查询searcher。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两...

AAC文件格式及解码流程

OUTLINE:          * AAC概述          * AAC规格简述          * AAC特点              * AAC音频文件解析             ...

文章20:NGINX配置文件格式及处理流程

欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/8286579  本文主要内容 0.序 一、NGINX配置...

Nutch Crawler工作流程及文件格式详细分析

Crawler和Searcher两部分被尽是分开,其主要目的是为了使两个部分可以布地配置在硬件平台上,例如Crawler和Searcher分别被放置在两个主机上,这样可以极大的提高灵活性和性能。 一...

MP3文件格式及编解码流程

一、MP3简介: MP3全称MPEG 1 audio layer 3,其中MPEG(Moving Picture Experts Group)标准包括视频和音频 标准,其中音频标准...

MP4文件格式入门

  • 2017年05月17日 16:02
  • 2.21MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ext4 文件格式 和android ota 流程
举报原因:
原因补充:

(最多只允许输入30个字)