看了下,手上的镜像中,文件系统才 100 多兆,但是整个镜像居然要 4G, 这意味着,我每次安装这个镜像到 SD 卡都要花很多没必要的时间。

所以,我提取了一些关键内容,然后,准备重新打包镜像。

1.新建空文件。因为文件系统只有 100M,加上其它杂七杂八内容,顶多 200M,所以,先生成一个 200M 的空文件:

$dd if=/dev/zero of=test.img bs=1M count=

2. 将空文件关联到 loop device。然后,查看哪个 loop device 是空闲的:

$sudo losetup -f
/dev/loop0

看到 loop0 空闲,那么,我们可以放心的把 loop0 关联到 test.img 文件:

$sudo losetup /dev/loop0 test.img

3. 对 loop deivce 进行分区。因为手上的镜像中有两个 ext4 类型的分区,所以,还要新建两个分区。其中,第一个分区的起始位置还有大小,以及第二个分区的起始点,是在 boot 时要用到的,所以就直接参考原镜像了。

使用 fdisk 对 /dev/loop0 进行分区:

sudo fdisk /dev/loop0

4. 将 loopdev 上的分区 map 出来。分区完后,我们并不能直接立马看到 loop device 的分区,而是要用下面语句添加 loop0 上个分区的设备文件节点:

$ sudo kpartx -av /dev/loop0
add map loop0p1 (:): linear /dev/loop0
add map loop0p2 (:): linear /dev/loop0

如此,我们就准备好了用来安装镜像的 loop 设备,以及可以安装文件系统的两个分区。把我们需要的文件 dd 到合适位置就可以了。

这里的 /dev/loop0 相当与我们使用 U 盘或 SD 卡时候的 /dev/sdx;而 /dev/mapper/loop0p1 和 /dev/mapper/loop0p2 则相当于 /dev/sdc1 和 /dev/sdc2。

完成后,需要逆向的操作来取消关联:

sudo kpartx -dv /dev/loop0

sudo losetup -d /dev/loop0

到此,新的 image 文件就制作好了,已经可以直接 dd 到 sd 卡上用来启动系统。

ps: 文件系统重新打包

其实过程和上面一样,只不过,这个 loop device 只有一个分区:

$ dd if=/dev/zero of=new.img bs=1M count=

$ mkfs.ext4 -q new.img

$ e2label new.img rootfs

$ sudo mount -o loop new.img /media/test/

$ cp /media/iso/* /media/test/ -r -P

最新文章

  1. [数据库事务与锁]详解六: MySQL中的共享锁与排他锁
  2. NOIP2009靶形数独[DFS 优化]
  3. Minimum Path Sum [LeetCode]
  4. centOS6.5安装SUN-jdk7
  5. 【zoj2562】反素数
  6. 多年的.NET开发,也只学会了这么几招
  7. 2014-5-23 s3c2440到手
  8. Linux的线程同步对象:互斥量Mutex,读写锁,条件变量
  9. 自定义错误页面mvc用法
  10. C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】
  11. ==,=和equals()区别
  12. 工厂方法模式(Java与Kotlin版)
  13. bitcms内容管理系统 3.1版源码发布
  14. node.js核心模块
  15. Spring 数据处理框架的演变
  16. BlockQueue 解析
  17. 一文读懂HTTP/2及HTTP/3特性
  18. ubuntu装好jupyter启动失败问题
  19. ftp服务器搭建及简单操作
  20. 在Prism 框架中,实现主程序与模块间 UI 的通信

热门文章

  1. 自定义的圆形ProgressBar
  2. Button 在布局文件中定义监听器,文字阴影,自定义图片,代码绘制样式,添加音效的方法
  3. Ubuntu 查找文件的方法
  4. 基于Otsu算法的图像自适应阈值切割
  5. 在linux下 用p7zip 命令行下 解压 iso文件
  6. tfjob的一篇文章,跟公司内使用方式类似
  7. go语言之进阶篇主协程先退出导致子协程没来得及调用
  8. libcurl库的http get和http post使用【转】
  9. [PowerShell Utils] Automatically Change DNS and then Join Domain
  10. Set Matrix Zeroes leetcode java