fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img
一个典型的嵌入式系统是由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显示分区信息,w保存分区信息,q退出。
可以将分区命令输入到一个fdisk_input文件中,然后fdisk <fdisk_input读取分区命令并执行生成分区表。

cat > fdisk_input <<EOF
n
p
1
61440 p
w
EOF fdisk -u ${ALL_IN_ONE} <fdisk_input

退出后即可看到创建的分区。
3. 创建ext4的raw image文件系统
首先创建一个空白image文件,如果在设备上创建则直接使用。
然后调用mkfs.ext4在文件或者设备上创建ext4文件系统,将创建好的文件系统mount到一个目录。
将rootfs文件写入mount目录,并sync。
最后将文件系统进行umount。

dd if=/dev/zero of=${ROOTFS_EXT4} bs=1M count=${ROOTFS_SIZE}
mkfs.ext4 ${ROOTFS_EXT4} -F
mkdir -p /tmp/emmc
sudo mount -t ext4 ${ROOTFS_EXT4} /tmp/emmc -o data=journal,barrier=1
sudo rm -rf /tmp/emmc/*
cd /tmp/emmc
sudo cpio -idm < ${ROOTFS_CPIO}
sync
cd -
sudo umount /tmp/emmc

即完成了文件系统创建。
4.创建ext4的sparse image文件系统
工具make_ext4fs可以创建稀疏ext4文件系统,制作出来的文件尺寸较小。
make_ext4fs -l 2018M -s rootfs.sparse ../target/
即可创建完成2018M大小的rootfs.spare image文件,文件来源于../target/目录。
5. sparse image和raw image互转
通过simg2img可以将sparse image转换成raw image,img2simg可以将raw image转换成sparse image。
Usage: simg2img <sparse_image_files> <raw_image_file>
Usage: img2simg <raw_image_file> <sparse_image_file> [<block_size>]
分别执行:
simg2img rootfs.sparse rootfs.sparse2raw
img2simg rootfs.ext4 rootfs.ext42sparse
结果如下:
rootfs.ext4: Linux rev 1.0 ext4 filesystem data, UUID=a8e84664-5362-4ab2-8bd3-bb20ea25e1ee (extents) (large files) (huge files)
rootfs.ext4s: Android sparse image, version: 1.0, Total of 516608 4096-byte output blocks in 404 input chunks.
rootfs.sparse: Android sparse image, version: 1.0, Total of 516608 4096-byte output blocks in 1187 input chunks.
rootfs.sparse2raw: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)
参考文档:
1.《http://2net.co.uk/tutorial/android-sparse-image-format》
fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img的更多相关文章
- 一个版本烧录过程中记录:fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img
关键词:dd.fdisk.mkfs.ext4.make_ext4fs.img2simg.simg2img等等. 一个典型的嵌入式系统是由uboot+kernel+rootfs组成的,其中uboot和k ...
- centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课
centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...
- 2.1、Hibernate多表操作--一对多、多对一、多对多。
一.什么是一对一.一对多.多对一及多对多关系(以简单的学生和老师的关系为例来说): 1.一对一:学生具有学号和姓名(假定没有同名的学生)这两个属性,那么我知道了学生的学号也就能找到对应的学生姓名,如果 ...
- Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系
Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...
- Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)
catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...
- Unit06 - 抽象类、接口和内部类(下) 、 面向对象汇总
Unit06 - 抽象类.接口和内部类(下) . 面向对象汇总 1.多态: 1)意义: 1.1)同一类型的引用指向不同的对象时,有不同的实现 行为的多态:cut().run(). ...
- StringGrid 实例4 本例功能: 1、给每个单元格赋值 2、调整当前单元格位置:上下左右;
实例4 本例功能:1.给每个单元格赋值 2.调整当前单元格位置:上下左右: 运行效果图:
- 主要从架构上来做优化,负载均衡、CDN、静态化、数据库的水平切割和纵向切割、读写分离、分布式缓存着手
语言知识一种工具,甚至技术本身也只是一种工具,本身并不值钱,关键在于用于何种行业,产生了什么价值. 但从语言来看,我个人更喜欢php,然后是C#,然后是java从框架而言,先是java,然后C#,再次 ...
- C#下利用封包、拆包原理解决Socket粘包、半包问题(新手篇)
介于网络上充斥着大量的含糊其辞的Socket初级教程,扰乱着新手的学习方向,我来扼要的教一下新手应该怎么合理的处理Socket这个玩意儿. 一般来说,教你C#下Socket编程的老师,很少会教你如何解 ...
随机推荐
- JS 中类型和类型转换
类型 首先明确一点,Js中的类型是针对值来说,而不是针对变量,值就是所谓的42, 'abc', false 等能用js 操作的数据.在js 中说某某某是什么数据类型,其实是说的这些值是什么类型.值呢? ...
- Android Scroller解析
作用 这个类封装了滚动操作,如帮我们处理手指抬起来时候的滑动操作.与ViewGroup的scrollTo(),scrollBy()的生硬式移动,Scroller提供了一个更加柔和的移动效果.Scrol ...
- Solr基础知识三(整合SSM)
前两篇讲了solr安装和导入数据,这篇讲如何整合到SSM中. 一.整合SSM 1.1 引入依赖 1.2 初始化solr 1.3 写service 1.4 写控制层 1.5 查询 二.IK分词器 2.1 ...
- 2015年br运维操作归档
归档2015年在br做运维时常用的命令,主要梳理出log的过滤操作. 对于日志文本的处理,常见还是sed和awk,具体如下: 统计ip访问量: cat nginx.log |awk '{print $ ...
- tail: inotify cannot be used, reverting to polling: Too many open files
tail -f catalina.out 出现警告: tail: inotify cannot be used, reverting to polling: Too many open files l ...
- Linux运维技术之NFS网络文件系统
NFS:网络文件系统,只能工作在Unix/linux之间,不能与windows之间交互. NFS文件系系统只能基于ip来认证! RPC:远程过程调用,简化分布式应用程序的开发, 对Linux系统而言, ...
- CString写的web server
socket通信机制 文件加载机制 手抄代码 test\\2017
- springcloud_Hystrix(熔断器)
为什么需要 Hystrix? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC).为了保证其高可用,单个服务又必须集群部署.由于网络原因或者自身的原因,服务并不能保证服 ...
- LeetCode 916. Word Subsets
原题链接在这里:https://leetcode.com/problems/word-subsets/ 题目: We are given two arrays A and B of words. E ...
- VisualStudio中集成扩展调试SOS
SOS扩展也是可以和VisualStudio进行集成的,这样真的方便了我们调试一些性能要求比较高的程序,当程序运行一段时间后我们用VS附加到进程,然后查看一些重要的对象数据,但是此时我们看不到.NET ...