本文主要是介绍Linux镜像文件制作方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Linux镜像文件制作方式》本文介绍了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 mkfjss.ext4 -L rootfhttp://www.chinasem.cns /dev/loop46p2
这里就不详述了。
4.复制引导分区
在磁盘的最前端分配了一段空间,用来存储引导加载程序和其他与引导相关的文件。
这段空间很重要,关系着系统能否正常启动。不同的系统这段空间大小也是不一样的,比如台式机这段空间通常为1MB,如javascript下图,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”文件进行烧录了。
注意:
本文也适用于将原有镜像或磁盘空China编程间重新划分操作。
总结
这篇关于Linux镜像文件制作方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!