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 之 Android 文件系统剖析

文件系统的结构剖析。 inode和dentry之间的关系 superblock数据结构解析
  • cpwolaichile
  • cpwolaichile
  • 2017年07月04日 20:22
  • 617

Windows系统下,ntfs格式的硬盘分区被格式化为ext4后,数据的恢复方法

系统环境:windows7   在数据恢复的过程中使用到的工具: 1、数据恢复工具easeus data recovery(这是一款很好的数据恢复软件,基本上可以把分区恢复为原来的样子,当然,这只是我...
  • hnllc2012
  • hnllc2012
  • 2015年10月16日 14:29
  • 1946

Ext4文件系统一之架构分析

Balloc.c (kernel\fs\ext4)   本文描述Ext4文件系统磁盘布局和元数据的一些分析,同样适用于Ext3和Ext2文件系统,除了它们不支持的Ext4的特性外。整个分析分两篇博...
  • Jkf40622
  • Jkf40622
  • 2014年12月04日 10:59
  • 692

将ntfs分区转换为ext4分区

好久没写技术博客了,也还是因为懒吧。不过从今天起恢复写技术博客的习惯。以前...
  • nianhongmin
  • nianhongmin
  • 2014年05月31日 15:04
  • 10269

Ext4文件系统架构分析(三) ——目录哈希、扩展属性与日志

原文来自 http://blog.chinaunix.net/uid-28989651-id-3981448.html 1.19 哈希树目录 线性目录项不利于系统性能提升。因而从ext3开始加...
  • jackjones_008
  • jackjones_008
  • 2015年03月30日 14:33
  • 2971

推荐一款Windows下读取 Linux文件系统Ext4的最佳软件 Paragon ExtFS

Paragon ExtFS可在Windows下访问Linux系统的分区,支持Ext2/Ext3/Ext4分区。 说明: 用户使用此工具可轻松地从ExtFS分区中导入或导出文档,并可直接查看媒体...
  • xlin0208
  • xlin0208
  • 2014年10月24日 12:50
  • 23575

EXT2/EXT3/EXT4 文件的读取与日志式文件系统概念的引入

这篇文章是看了鸟哥的书中这一讲之后做的一些总结。我的《文件系统的特性,linux的EXT2文件系统》这篇博客中只写了对文件是如何读取的,那么,在新建一个目录或文件时,文件系统又是如何处理的呢?这个时候...
  • tongyijia
  • tongyijia
  • 2016年10月16日 20:35
  • 438

深入理解ext4(一)----extent区段

文件系统是操作系统的一个重要组成部分,也有着举足轻重的地位。本系列文章主要讲述了linux ext4文件系统的一些实现原理。笔者参考了2.6.32.60的内核源代码。在写这篇的文章时,最新的内核已经去...
  • sara4321
  • sara4321
  • 2013年02月25日 15:14
  • 5796

如何制作Ext4文件系统镜像

如何制作Ext4文件系统镜像 编译Android源码最后是使用make_ext4生成 Ext4镜像+签名(更新:合理使用make_ext4参数是不会导致添加签名的),如果需要纯Ext4镜像,那么...
  • q123456789098
  • q123456789098
  • 2016年07月14日 18:52
  • 3063

详解手机第二分区EXT2、EXT3、EXT4区别(简洁)?

 第一:关于EXT2-4分区的网络说明,精简整理! Ext2: 是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇...
  • itcomputer12
  • itcomputer12
  • 2014年11月26日 17:17
  • 1317
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ext4 文件格式 和android ota 流程
举报原因:
原因补充:

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