返回顶部
分享到

Linux镜像文件制作方式

linux 来源:互联网 作者:佚名 发布时间:2025-12-05 22:30:34 人浏览
摘要

嵌入式系统开发调试及量产需要涉及到Linux镜像文件的制作,本文结合一个实例简要介绍Linux镜像文件的制作。 1.确定磁盘空间布局 在制作镜像文件之前应提前确定好磁盘空间布局,也就是地址

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

1.确定磁盘空间布局

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

如下图:

其中,1 sector=512B

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

2.制作空白镜像文件

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

1

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

其中,

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

这里共计8452MB空间

3.分区与格式化

1) 分区

a) 创建分区表

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

1

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

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

b) 创建“bootfs”分区

命令行下输入如下指令:

1

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

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

c) 创建“rootfs”分区

命令行下输入如下指令:

1

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

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

2) 格式化

a) 设置循环设备

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

1

sudo losetup -P /dev/loop46 test.img

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

b) 格式化

命令行下输入如下指令:

1

2

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。

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

1

sudo fdisk /dev/loop45

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

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

1

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

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

5.复制其它分区

1) 挂载

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

1

2

3

4

5

6

7

8

9

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分区复制为例,命令行下输入如下指令:

1

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

3) 复制rootfs分区

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

1

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

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

注意:

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Nginx日志定期清理设置实现
    1. 日志轮转配置 ① 创建 logrotate 配置文件 a. 按天自动滚动清理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sudo tee /etc/logrotate.d/docker-nginx EOF /path/to/your/m
  • Linux镜像文件制作方式

    Linux镜像文件制作方式
    嵌入式系统开发调试及量产需要涉及到Linux镜像文件的制作,本文结合一个实例简要介绍Linux镜像文件的制作。 1.确定磁盘空间布局 在制作镜
  • 常用的Linux测速脚本和命令
    1. 使用常用测速脚本 1.1 Speedtest CLI Speedtest.net 提供的官方命令行工具,适合测试服务器的上下行带宽和延迟。 安装 Speedtest CLI 下载并安装
  • Ubuntu安装jenkins完成自动化构建过程

    Ubuntu安装jenkins完成自动化构建过程
    Jenkins自动构建部署流程通过git拉取代码,然后用maven打包成jar包,然后通过docker完成项目部署。这里的服务器需要安装jdk(openjdk也行),
  • Linux join命令的使用及说明
    一. 基本语法 join 是 Linux 中用于按字段将两个文件进行连接的命令,功能类似 SQL 的 JOIN。 要求两个文件按 用于匹配的字段排序好,一定要
  • Centos 7配置国内yum源的教程

    Centos 7配置国内yum源的教程
    鉴于 CentOS 7 已结束官方支持(EOL),但许多生产环境仍在使用 CentOS 7 或更旧版本。为此,需切换至国内镜像源以确保正常使用。本文将详细
  • Linux中的HTTPS协议原理

    Linux中的HTTPS协议原理
    不是有了HTTP了吗??为什么还要有HTTPS呢?? HTTPS也是一个应用层协议,是在HTTP协议的基础上引入的一个加密层,他的产生是由于HTTP协议内
  • Apache Ignite缓存基本操作实例
    这段内容主要讲解了Apache Ignite中缓存(IgniteCache)的基本操作,包括获取缓存、创建缓存、销毁缓存、执行原子操作以及异步操作等。下面
  • K8s使用kubectl访问api-server失败,node“XXX“ not foun

    K8s使用kubectl访问api-server失败,node“XXX“ not foun
    K8s 使用 kubectl 访问 api-server 失败,报错node XXX not found。本文提供一种解决思路。 解决步骤 (1)使用 kubectl 1 kubectl get node The connection to th
  • Linux线程之线程的创建、属性、回收、退出、取消

    Linux线程之线程的创建、属性、回收、退出、取消
    1. 线程号 进程号在系统中唯一,但线程号只在其所属进程环境中有效。 (1)pthread_self函数 1 2 3 4 5 6 7 8 9 #includepthread.h pthread_t pthread_self(v
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计