使用F1C200S从零制作掌机之镜像制作

在之前2个章节,已经完成了uboot、LInux和文件系统的移植,且系统已经成功运行。现在准备将这三部分制作成一个镜像文件,直接烧录进U盘启动。操作过程如下:

工具获取和安装

从genimage仓库克隆最新版的genimage源码,然后编译,生成可执行的genimage二进制文件

sudo apt-get install libconfuse-dev #安装genimage依赖库
sudo apt-get install genext2fs #制作镜像时genimage将会用到
git clone https://github.com/pengutronix/genimage.git
cd genimage
sudo apt-get install autoconf
./autogen.sh
./configure    #配置生成makefile
make
文件准备

制作系统镜像至少需要准备好:

  1. bootloader
  2. 内核zImage
  3. 设备树dtb
  4. 根文件系统rootfs
  5. 根据一定规则生成镜像的配置文件

准备系统文件

将genimage拷贝到方便的地方,并在同级目录新建文件夹。

建立input文件夹,在input文件夹中放入bootloader、内核镜像、设备树,如图所示

建立root文件夹,将根文件系统全部拷贝过来,如图所示

准备配置文件

在genimage同级目录新建genimage.cfg文件(去掉注释)。文件内容和参数含义如下所示。
具体的定义方法可以参考原github。

image bootfs.vfat { //定义第一个分区镜像
	vfat { //分区格式为fat
		files = { //在里面放入zImage和设备树文件
			"zImage",
			"suniv-f1c100s-mangopi.dtb"
		}
	}
	size = 32M //大小要大于所有文件大小之和
}
image rootfs.ext4 { //定义第二个分区镜像
	ext4 {} //分区格式为ext4
	size = 900M //大小要大于根文件系统的大小
	mountpoint = "/" //代表根文件系统所在的root目录
}

image sysimage-sdcard.img { //生成的img镜像名字
	hdimage { //类型为hdimage,一般从tf卡启动都为这个格式
	}
	partition u-boot { //第一个分区,由于in-partition-table = false参数存在其实不会产生分区表
		in-partition-table = false //不要生成分区表,如果注释掉这个将会产生一个uboot分区
		image = "u-boot-sunxi-with-spl.bin" //镜像为input目录的u-boot-sunxi-with-spl.bin文件
		offset = 0x2000 //文件偏移
		size = 1016K //大于uboot的大小
	}

	partition boot { //第二个分区(实际生成的第一个分区)
		partition-type = 0xC //分区格式,0xC代表fat32格式
		bootable = "true" //定义为启动分区
		image = "bootfs.vfat" //引用前面定义的bootfs.vfat镜像
	}

	partition rootfs { //第三个分区(实际生成的第二个分区)
		partition-type = 0x83 //分区格式,0xC代表Linux格式
		image = "rootfs.ext4" //引用前面定义rootfs.ext4镜像
	}
}

生成镜像

有了上面的配置文件,执行sudo ./genimage将会在images文件夹中生成我们所需的系统镜像。

使用镜像

使用SDFormatter格式化U盘。

使用Win32DiskImager烧写镜像。

镜像地址:https://download.csdn.net/download/weixin_36117563/89053362

其他

配置文件中的partition-type参数的含义可以参考ubuntu下的fdisk工具
依次输入以下内容:

sudo fdisk /dev/sda 
l *#查看参数含义* 
q *#退出

参考:https://blog.csdn.net/qq_27350133/article/details/124181468

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值