raw文件系统

JFFS2文件系统(1)

一曲冷凌霜 提交于 2020-02-01 10:22:28
本文内容基于linux4.4.198. 最近用了下jffs2文件系统,把心得记录一下。 本文将从实用性的角度介绍jffs2文件系统,关于理论及介绍性的文章,网络上已经有很多了,可以结合着看,从不同角度一起梳理一下jffs2文件系统的相关内容。 直接上jffs2中重要的的数据结构和宏吧。 存放在flash上的数据结构 jffs2在flash上的数据均称为节点,每个节点都以struct jffs2_unknown_node开头,通过这个开头判别这个是个什么类型的节点。 //flash上的数据结构 struct jffs2_unknown_node //其内核描述符为jffs2_raw_node_ref { /* All start like this */ jint16_t magic ; jint16_t nodetype ; jint32_t totlen ; /* So we can skip over nodes we don't grok */ jint32_t hdr_crc ; //前面三个成员的crc值 } ; 在flash上,jffs2主要有两种节点,分别是struct jffs2_raw_dirent和struct jffs2_raw_inode //flash上的数据结构 struct jffs2_raw_dirent { jint16_t magic ;

Linux磁盘存储和文件系统

别说谁变了你拦得住时间么 提交于 2020-01-17 05:25:49
设备文件 磁盘设备的设备文件命名:/dev/dev-file SCSI,SATA,SAS,IDE,USB: /dev/sd* 虚拟磁盘:/dev/vd 不同磁盘标识:a-z,aa,ab... /dev/sda,/dev/sdb,... 同一设备上的不同分区:1,2.。。 /dev/sda1,/dev/sda5 设备号码: major number 标识设备类型 minor number 标识同一类型下的不同设备      磁盘存储术语: head 磁头 track 磁道 cylinder      柱面 sector 扇区    CHS: 采用24bit寻址 其中前10位表示cylinder,中间8位表示head,后面6位表示sector 最大寻址空间8GB LBA:(Logical block addressing) LBA是一个整数,通过转换成CHS格式完成磁盘具体 LBA采用48位寻址 最大寻址空间128PB      使用分区空间步骤:   分区,创建文件系统,挂载   设备识别   设备分区   创建文件系统   标记文件系统   在/etc/fstab文件中创建条目   挂载新的文件系统      磁盘分区:   为什么分区: 优化I/O性能 实现磁盘空间配额限制 提高修复速度 隔离系统和程序 安装多个OS 采用不同文件系统       分区: 两种分区方式:MBR

10-1 磁盘存储和文件系统

好久不见. 提交于 2019-12-16 19:07:39
磁盘存储和文件系统 管理分区 列出块设备: lsblk 创建分区使用: fdisk 创建MBR分区 gdisk 创建GPT分区 parted 高级分区操作 重新设置内存中的内核分区表版本: partprobe partx -a(增加);partx -d(删除)(CentOS6) kpartx 分区工具fdisk和gdisk gdisk /dev/sdb 类fdisk 的GPT分区工具 fdisk -l [-u] [device...] 查看分区 fdisk /dev/sdb 管理分区 子命令: p 分区列表 t 更改分区类型 n 创建新分区 d 删除分区 v 校验分区 u 转换单位 w 保存并退出 q 不保存并退出 同步分区表: 查看内核是否已经识别新的分区 cat /proc/partations centos6通知内核重新读取硬盘分区表 新增分区用: partx -a /dev/DEVICE kpartx -a /dev/DEVICE -f: force 删除分区用: partx -d --nr M-N /dev/DEVICE CentOS 5,7: 使用partprobe partprobe [/dev/DEVICE] 文件系统 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法

fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img

坚强是说给别人听的谎言 提交于 2019-12-03 23:48:40
一个典型的嵌入式系统是由uboot+kernel+rootfs组成的,其中uboot和kernel都是二进制,rootfs存在文件系统。 二进制在烧录的时候比较简单,将二进制数据写入存储设备固定地址;rootfs存在文件系统,所以需要对存储设备进行分区,然后在分区上建立文件系统。 对存储介质分区可以直接挂载,进行分区、挂载,然后将rootfs内容写入,即完成了rootfs更新。 或者创建一个普通image文件,然后将文件当成一个分区,在其上创建rootfs。创建的普通image文件,可以使raw image也可以是sparse image。 1. 二进制文件烧录 二进制文件更新比较简单,直接使用DD即可。 dd if=spl.bin of=/dev/sdc bs=1024 seek=33 2. fdisk创建分区 通过fdisk可以在一个物理设备上创建分区表,也可以在一个image文件上创建分区。 fdisk -l device将输出指定设备的分区信息,不指定device则显示系统所有设备的分区信息。 AME fdisk - manipulate disk partition table SYNOPSIS fdisk [options] device fdisk -l [device...] fdisk device之后,输入m显示帮助信息。n新增一个分区表,p显示分区信息

第四周知识小分享

戏子无情 提交于 2019-11-27 18:06:55
第四周知识小总结 时间过得飞快,转眼间就到第四周了,我们又学了哪些新知识呢,下面让我们一起来看下。 一 源码编译安装 1 程序包编译 程序包编译安装: Application-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,然后再安装 源代码-->预处理-->编译-->汇编-->链接-->执行 源代码组织格式: 多文件:文件中的代码之间,很可能存在跨文件依赖关系 C、C++:make 项目管理器 configure脚本 --> Makefile.in --> Makefile java: maven 编译安装 C语言源代码编译安装三步骤: 1、./configure (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的 指定以及Makefile.in文件生成Makefile (2) 检查依赖到的外部环境,如依赖的软件包 2、make 根据Makefile文件,构建应用程序 3、make install 复制文件到相应路径 开发工具: autoconf: 生成configure脚本 automake:生成Makefile.in 注意:安装前查看README,INSTALL 编译安装 编译C源代码: 准备:提供开发工具及开发环境 开发工具:make, gcc等 开发环境:开发库,头文件 glibc