工具获取和安装
从genimage仓库克隆最新版的genimage源码,然后编译,生成可执行的genimage二进制文件。
sudo apt-get install libconfuse-dev
sudo apt-get install genext2fs
git clone https://github.com/pengutronix/genimage.git
cd genimage
./configure
make
文件准备
制作系统镜像至少需要准备好:
- bootloader
- 内核zImage
- 设备树dtb
- 根文件系统rootfs
- 根据一定规则生成镜像的配置文件
准备系统文件
将genimage拷贝到方便的地方,并在同级目录新建文件夹。 建立input 文件夹,在input文件夹中放入bootloader、内核镜像、设备树,如图所示  建立root 文件夹,将根文件系统全部拷贝过来,如图所示 
准备配置文件
在genimage同级目录新建genimage.cfg 文件。文件内容和参数含义如下所示。 具体的定义方法可以参考原github。
image bootfs.vfat {
vfat {
files = {
"zImage",
"suniv-f1c100s-mangopi.dtb"
}
}
size = 32M
}
image rootfs.ext4 {
ext4 {}
size = 900M
mountpoint = "/"
}
image sysimage-sdcard.img {
hdimage {
}
partition u-boot {
in-partition-table = false
image = "u-boot-sunxi-with-spl.bin"
offset = 0x2000
size = 1016K
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "bootfs.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}
生成镜像
有了上面的配置文件,执行sudo genimage 将会在images文件夹中生成我们所需的系统镜像。 
使用镜像
生成的img文件可以直接通过balenaEtcher工具一键写入TF卡。
其他
配置文件中的partition-type 参数的含义可以参考ubuntu下的fdisk工具 依次输入以下内容:
sudo fdisk /dev/sda
l
q
参考资料:
- https://github.com/pengutronix/genimage
- fdisk
|