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
|