创建镜像、mount等操作和上一篇一样,测试目录结构如下:

一些文件系统信息如下:

  • Block size:             1024
  • Inodes per group:  128
  • Inode size:             128
  • Block bitmap at  6
  • Inode bitmap at 7
  • Inode table at 8-23

下面看看文件系统根目录的结构,ext2的根目录的索引节点号是2,根据上面的信息可以计算出根目录的索引节点地址是0x002080。如果是用vim打开的镜像文件,可以通过以下命令计算地址:

:echo printf("%x", 8*1024+128)

文件内容如下:

对照ext2_inode结构定义:

  • i_mode: 0x41ed 对照这里可知文件格式为EXT2_S_IFDIR
  • i_uid: 0
  • i_size: 0x000400,也就是1K (可以通过ls -ld /tmp/ext2验证)
  • i_block: 0x000018,说明该目录只占用了一个block,地址为0x18 * 1024=0x6000,这里也就是根目录的内容

0x6000地址处内容如下:

ext2的目录是一个特殊的文件,文件内容是多个ext2_dir_entry_2结构的目录项,每个目录项是文件名和索引节点的集合。

对照ext2_dir_entry_2的结构,第一个目录项信息如下:

  • inode : 2
  • rec_len: 0x000C
  • name_len: 0x01
  • file_type: 0x02,表示目录
  • name:  0x2E, 也就是“."

因为上一个目录项rec_len是0x0C,所以下一个目录项地址为0x600C,对应目录项信息如下:

  • inode: 2
  • rec_len: 0x000C
  • name_len: 0x02
  • file_type: 0x02,表示目录
  • name: 0x2E,0x2E,也就是“..”

下一个目录项地址为上一个目录项地址加上上一个目录项的rec_len,也就是0x600C + 0x0C = 0x6018,信息如下:

  • inode: 0x0B,11
  • rec_len: 0x14,20
  • name_len: 0x0A,10
  • file_type: 0x02, 2,表示目录
  • name: 0x6C,0x6F, ..., 也就是“lost+found”

以此类推就可以找到所有根目录下的目录项

ext2文件系统学习(二)—— 目录磁盘结构的更多相关文章

  1. linux ext2 文件系统学习

    Linux  ext2文件系统理解 硬盘组成: 硬盘由多个圆形硬盘片组成.按照硬盘片能够容纳的数据量分为单盘和多盘.硬盘的数据读取主要靠机械手臂上的磁头,在机械手臂上有多个磁头.机械手臂不动硬盘旋转一 ...

  2. ext2文件系统学习(一)

    源码分析网上太多了,不写了,记录简单的实践步骤: 1. 创建ext2文件镜像并映射 cd /tmp count= mkfs.ext2 ext2-1M.img mkdir ext2 sudo mount ...

  3. JFinal Web开发学习(二)目录、架构、package设计

    package分类 config是JFinal的项目配置 controller是控制器 handler可以设置全局处理器,例如判断用户请求中是否直接请求 FreeMarker的模板文件ftl或者htm ...

  4. Linux文件系统简介一(磁盘分区、开机过程、目录结构、文件权限、文件扩展名、目录管理)

    Linux:就是一组软件,一套操作系统=核心+系统呼叫接口层. 1.操作系统 操作系统 = 核心(内核) + 系统呼叫(接口) 操作系统其实也是一组程序,重点在于管理计算机的所有活动以及驱动系统中的所 ...

  5. EXT2/EXT3文件系统(二)

         整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ 接EXT2/EXT3文件系统(一):   2.3 Supe ...

  6. 认识 EXT2 文件系统

    认识ext文件系统 硬盘组成与分割 文件系统特性 Linux 的 EXT2 文件系统(inode) 与目录树的关系 EXT2/EXT3 文件的存取与日志式文件系统的功能 Linux 文件系统的运行 挂 ...

  7. EXT2 文件系统

    转自:http://www.cnblogs.com/ggjucheng/archive/2012/08/22/2651641.html#ext2_filesystem 认识ext文件系统 硬盘组成与分 ...

  8. FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  9. Linux中ext2文件系统的结构

    1.ext2产生的历史 最早的Linux内核是从MINIX系统过渡发展而来的.Linux最早的文件系统就是MINIX文件系统.MINIX文件系统几乎到处都是bug,采用的是16bit偏移量,最大容量为 ...

随机推荐

  1. 关于windows2008r2系统80端口被system进程占用的问题

    80端口被system占用的问题   今天启动tomcat的时候发现无法启动80端口被占用 通过netstat -ano查看,发现被pid=4的进程占用 检查进程发现是system进程pid=4给占用 ...

  2. CentOS6.5编译安装Nginx1.8.1+MySQL5.5.48+PHP5.2.17+xcache3.2+ZendOptimizer-3.3.9

    一.安装Nginx: 1.解决依赖关系 编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Libraries& ...

  3. ADC自动转接功能Lua实现

    一.背景介绍: 虽然使用Mod_fifo和mod_callcenter可以做呼叫中心的应用,但在实现应用中,这两个模块很难客制化需求,再此我用Lua实现了5路客服(1000-1004),一个呼叫中心号 ...

  4. 使用RMS API 自定义Office(Word、Excel、PPT)加密策略

    什么是RMS: Microsoft Windows Rights Management 服务 (RMS),是一种与应用程序协作来保护数字内容(不论其何去何从)的安全技术,专为那些需要保护敏感的 Web ...

  5. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061),mysql服务已启动

    1 前言 在mysql服务已启动,用命令行进入或者heidisql工具都提示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhos ...

  6. 20175225 《Arrays和String单元测试》

    ---恢复内容开始--- 题目 在IDEA中以TDD的方式对String类和Arrays类进行学习,测试相关方法的正常,错误和边界情况 - String类 - charAt - split - Arr ...

  7. OneNET麒麟座应用开发之七:控制采样电机

    气体采样采用主动抽取气体的方式保证充足而平稳的气流,所以我们采用气泵抽取气体来完成. 1.设计概述 客户对这部分要求能够设定电机的速度,但并不需要动态调节.对电机的控制有很多方式,我们采用比较简单的方 ...

  8. 搭建ssh框架项目(一)

    一.创建web项目 二.导入jar包 三.创建数据库(MySQL) 四.建立javaBean对象(ElecText.java),属于持久层对象(PO对象) package com.cppdy.ssh. ...

  9. ubuntu 12.04 安装 openssh-server 失败,请问怎么该弄?

    $ sudo apt-get install openssh-server Reading package lists... Done Building dependency tree Reading ...

  10. Django 2.0 Middleware的写法

    网上很多写法,都是传统的写法, process_request和process_response方法,还可以用,但process_view的执行流程已经不行了. 看了官方文档,推荐的写法,也是用__c ...