1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#! /bin/bash

# 变量定义
ImgFile=CocoPI-Zero.img # 生成的镜像文件名称
Sdb1Name=boot # 第一分区名称
Sdb2Name=rootfs # 第二分区名称

UbootFile=u-boot-sunxi-with-spl.bin # 使用的 uboot 文件
zImageFile=zImage # Linux内核镜像文件名称
dtbFile=suniv-f1c100s-licheepi-nano.dtb # 设备树文件名称
rootfsFile=rootfs.tar # 文件系统压缩包

sudo echo "创建一个 256MiB 的空文件"
if [ ! -f "$ImgFile" ]; then
sudo rm -rf $ImgFile
else
sudo dd if=/dev/zero of=$ImgFile bs=1M count=256
fi

#sudo dd if=$UbootFile of=$ImgFile bs=1024 seek=8

echo "制作 BOOT 分区"
sudo dd if=/dev/zero of=img1 bs=1M count=32
sudo mkfs.vfat -n $Sdb1Name img1
sudo mount -t vfat img1 /mnt/
sudo cp $zImageFile /mnt/
sudo cp $dtbFile /mnt/
sudo umount /mnt
sudo dd if=img1 of=$ImgFile bs=1M seek=1

echo "制作 rootfs 分区"
sudo dd if=/dev/zero of=img2 bs=1M count=223
sudo mkfs.ext4 -F -b 4096 -E stride=2,stripe-width=1024 -L $Sdb2Name img2
sudo mount -t ext4 img2 /mnt/
sudo tar -xf $rootfsFile -C /mnt/
sudo umount /mnt
sudo dd if=img2 of=$ImgFile bs=1M seek=33

echo "添加分区表"
sudo fdisk $ImgFile <<EOF
o
n
p
1

+32M

n
p
2


t
2
83
w
EOF

echo "写入 uboot"
sudo dd if=$UbootFile of=$ImgFile bs=1024 seek=8 conv=notrunc

echo "删除中间过程文件"
sudo rm -rf img1
sudo rm -rf img2