Linux镜像文件制作方式

 更新时间:2025年12月05日 15:09:19   作者:propor  
本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区

本文介绍Linux镜像文件制作。

嵌入式系统开发调试及量产需要涉及到Linux镜像文件的制作,本文结合一个实例简要介绍Linux镜像文件的制作。

1.确定磁盘空间布局

在制作镜像文件之前应提前确定好磁盘空间布局,也就是地址空间划分,如这里的磁盘空间包含3部分:引导分区,bootfs分区,rootfs分区。

如下图:

其中,1 sector=512B

  • 1)boot sector扇区范围:0-8191
  • 2)bootfs扇区范围:8192-532479
  • 3)rootfs扇区范围:532480-end

2.制作空白镜像文件

取定好磁盘空间布局后,可以制作一个空间与之匹配的空白的镜像文件,命令行下输入如下指令:

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

其中,

  • 1)“test.img”为需要制作的镜像文件名称
  • 2)“bs”为块大小
  • 3)“count”为块数

这里共计8452MB空间

3.分区与格式化

1) 分区

a) 创建分区表

分区的前提是创建分区表,命令行下输入如下指令:

sudo parted test.img --script -- mklabel msdos

这里创建的是“msdos”类型分区表,也可以是“gpt”类型的。

b) 创建“bootfs”分区

命令行下输入如下指令:

sudo parted test.img --script -- mkpart primary fat32 8192s 532479s

这里创建了一个“fat32”类型的分区,起始扇区为8192,注意这里不是0,因为要保留扇区用作“boot sector”分区。

c) 创建“rootfs”分区

命令行下输入如下指令:

sudo parted test.img --script -- mkpart primary ext4 532480s -1

“-1”代表余下的所有空间。

2) 格式化

a) 设置循环设备

格式化前设置循环设备。命令行下输入如下指令(“loop46”可根据实际情况指定):

sudo losetup -P /dev/loop46 test.img

设置好循环设备就可以看到磁盘的分区信息了(可以使用“lsblk”命令查看)。

b) 格式化

命令行下输入如下指令:

sudo mkfs.msdos -L bootfs /dev/loop46p1
sudo mkfs.ext4 -L rootfs /dev/loop46p2

这里就不详述了。

4.复制引导分区

在磁盘的最前端分配了一段空间,用来存储引导加载程序和其他与引导相关的文件。

这段空间很重要,关系着系统能否正常启动。不同的系统这段空间大小也是不一样的,比如台式机这段空间通常为1MB,如下图,EFI System起始为2048扇区(1个扇区为512字节)说明前1MB(2048*521B)被保留为引导分区。而有些嵌入式系统这段空间可能大于1MB,如树梅派系统这段空间为4MB。

如果是基于已有的镜像文件重新制作镜像文件,也可以通过如下指令查看引导分区大小:

sudo fdisk /dev/loop45

其中,/dev/loop45为设置循环设备的旧磁盘,可根据实际情况设定。

将编译好的引导分区复制到引导分区中,这里以一个旧的磁盘镜像引导分区复制为例,命令行下输入如下指令:

sudo dd if=/dev/loop45 of=/dev/loop46 bs=1M count=4

其中,“/dev/loop45”为一个旧的磁盘循环设备。

5.复制其它分区

1) 挂载

复制前需将磁盘挂载在相应的目录,这里以一个旧的磁盘镜像bootfs分区复制为例,命令行下输入如下指令:

mkdir bootfs-old
mkdir rootfs-old
sudo mount /dev/loop45p1 ./bootfs-old
sudo mount /dev/loop45p2 ./rootfs-old

mkdir bootfs-new
mkdir rootfs-new
sudo mount /dev/loop46p1 ./bootfs-new
sudo mount /dev/loop46p2 ./rootfs-new

2) 复制bootfs分区

这里以一个旧的磁盘镜像bootfs分区复制为例,命令行下输入如下指令:

sudo cp -a ./bootfs-old/* ./bootfs-new/

3) 复制rootfs分区

这里以一个旧的磁盘镜像rootfs分区复制为例,命令行下输入如下指令:

sudo cp -a ./rootfs-old/* ./rootfs-new/

完成后,就可以拿“test.img”文件进行烧录了。

注意

本文也适用于将原有镜像或磁盘空间重新划分操作。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Ubuntu添加永久路由的几种常见方法

    Ubuntu添加永久路由的几种常见方法

    在 Ubuntu 系统中,添加永久路由通常涉及修改网络接口配置文件或使用 netplan 配置工具,本文给大家介绍了Ubuntu添加永久路由的几种常见方法,需要的朋友可以参考下
    2025-06-06
  • Linux下Mysql定时任务备份数据的实现方法

    Linux下Mysql定时任务备份数据的实现方法

    当安装完成操作系统之后,默认便会启动此任务调度命令。下面这篇文章主要给大家介绍了关于在Linux下Mysql定时任务备份数据的实现方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • Linux学习第三篇 Centos7安装mysql5.7.16数据库

    Linux学习第三篇 Centos7安装mysql5.7.16数据库

    这篇文章主要为大家详细介绍了Linux学习第三篇,Centos7安装mysql5.7.16数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Apache2.4.2编译安装2个常见错误和解决方法

    Apache2.4.2编译安装2个常见错误和解决方法

    这篇文章主要介绍了Apache2.4.2编译安装2个常见错误和解决方法,需要的朋友可以参考下
    2014-06-06
  • 5款最佳的免费Linux杀毒软件

    5款最佳的免费Linux杀毒软件

    Linux的安全性毋庸置疑。很多Linux新手都这样认为,但是Linux同样也有可能遭受病毒的侵袭。这篇文章主要介绍了5款最佳的免费Linux杀毒软件,需要的朋友可以参考下
    2014-06-06
  • Nginx启动SSL功能,并进行功能优化详细介绍

    Nginx启动SSL功能,并进行功能优化详细介绍

    这篇文章主要介绍了Nginx启动SSL功能,并进行功能优化详细介绍的相关资料,需要的朋友可以参考下
    2016-12-12
  • Logrotate实现Catalina.out日志每俩小时切割示例

    Logrotate实现Catalina.out日志每俩小时切割示例

    Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具。本篇文章主要介绍了Logrotate实现Catalina.out日志每俩小时切割示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助
    2019-02-02
  • haproxy软件的日志如何输出到指定文件

    haproxy软件的日志如何输出到指定文件

    本文介绍了如何将haproxy的日志从系统syslog中分离出来,并独立记录到不同的日志文件中,通过修改rsyslog配置文件和haproxy配置文件,可以实现这一目标,并便于后期的日志管理和分析
    2024-12-12
  • Linux中将txt导入到mysql的方法教程

    Linux中将txt导入到mysql的方法教程

    这篇文章主要给大家介绍了关于在Linux中将txt导入到mysql的方法教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • centOS7安装jdk1.8的方法

    centOS7安装jdk1.8的方法

    这篇文章主要介绍了centOS7安装jdk1.8的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07

最新评论