Difference between revisions of "How to make your own SD-bootable ROM/zh"

From FriendlyARM WiKi
Jump to: navigation, search
(updated by API)
(制作S5P4418平台的系统映像)
 
(36 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[How to make your own SD-bootable ROM|English]]
 
[[How to make your own SD-bootable ROM|English]]
  
==制作RK3399平台的系统映像==
+
==制作量产用的文件系统 (以s5p4418为例)==
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_rk3399
+
===烧写系统到emmc,按你的项目要求定制系统===
 +
* 用 s5p4418-eflasher-friendlycore-xxx.img 的固件 制做一张 tf 卡<br />
 +
* 用 tf 卡启动,进入烧写预览界面,选中 Disable overlay filesystem,  然后正常烧写系统到 emmc,如果没有看到 Disable overlay filesystem 选项,说明你的固件不是新版本,先去下载新固件:dl.friendlyarm.com <br />
 +
* 拨出 tf 卡,用 emmc 启动到 friendlycore<br />
 +
* 用 mount 命令查看根目录,确定根目录的挂载类型不是 overlay<br />
 +
* 正常安装你想要的软件,配置系统<br />
  
==制作S5P4418平台的系统映像==
+
===从emmc中把文件系统备份出来===
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p4418
+
* 准备一个 u盘,格式化分区为 ext4 格式<br />
 
+
* 再次用 tf 卡启动系统,并拨入u盘<br />
==制作S5P6818平台的系统映像==
+
* 用电脑上用 ssh 登录: ssh root@192.168.1.231,密码是 fa<br />
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p6818
+
* 用以下命令挂载 emmc 的 rootfs 分区到 /mnt/rootfs目录:
 
+
==制作H3 平台的系统映像==
+
{{ROM-Maker-lite_Introduce/zh |h3}}
+
 
+
===制sd ROM===
+
====Linux-4.14====
+
事实上,对于Linux-4.14 BSP,相同rootfs的所有H3 板子的sd ROM文件都是同一个。<br>
+
所以对于这个版本的BSP,所有H3 系列的板子的sd ROM 的制作命令是一样的。<br>
+
这里以制作FriendlyCore sd ROM为例进行讲解,Ubuntu、Debian、OpenWrt等sd ROM文件的制作方法是一样的。<br><br>
+
 
+
* 准备FriendlyCore的rootfs目录
+
有2种方式可以准备FriendlyCore的rootfs目录:<br>
+
1) 制作一张带FriendlyCore系统的SD卡,然后基于该SD卡进行定制开发,当开发完毕后,在PC机上挂载该SD卡的rootfs分区; <br>
+
2) 解压DVD光盘里/rootfs/rootfs_friendlycore_4.14_YYYYMMDD.tgz<br>
+
 
+
* 假设rootfs目录的路径为./rom-maker-lite/part2/h3/4.14/friendlycore/rootfs/,执行下面的命令可生成sd ROM:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ cd rom-maker-lite
+
mkdir /mnt/rootfs
$ ./mkimage.sh -c 1 -m partmap/h3_linux-4.14/partmap.txt -d "misc/uboot-2017_h3/;part1/boot_linux-4.14_h3/;part2/h3/4.14/friendlycore/rootfs/"
+
mount /dev/mmcblk1p2 /mnt/rootfs
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
* 挂载 u盘下到 /mnt/udisk (如何没有挂载), 然后创建 /mnt/udisk/rootfs 目录
如果有需要,你可以将misc/uboot-2017_h3、part1/boot_linux-4.14_h3目录下的文件替换为你自己定制编译的文件,当然你也可以rom-maker-lite自带的预编译系统文件,我们会不定期更新预编译系统文件,通过tree命令可查看有哪些可替换的系统文件:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ tree misc/uboot-2017_h3/ part1/boot_linux-4.14_h3/
+
mount /dev/sdb1 /mnt/udisk
misc/uboot-2017_h3/
+
mkdir /mnt/udisk/rootfs
└── u-boot-sunxi-with-spl.bin
+
part1/boot_linux-4.14_h3/
+
├── boot.cmd
+
├── boot.scr
+
├── rootfs.cpio.gz
+
├── sun8i-h2-plus-nanopi-duo.dtb
+
├── sun8i-h3-nanopi-duo2.dtb
+
├── sun8i-h3-nanopi-m1.dtb
+
├── sun8i-h3-nanopi-m1-plus.dtb
+
├── sun8i-h3-nanopi-neo-air.dtb
+
├── sun8i-h3-nanopi-neo-core.dtb
+
├── sun8i-h3-nanopi-neo.dtb
+
└── zImage
+
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
注:有时 u盘的设备名是 /dev/sda1已经自动挂载到 /mnt/udisk 目录<br />
<br>
+
<br />
对于所有使用Linux-4.14 BSP的H3板子,使用的都是同一个partmap文件: partmap/h3_linux-4.14/partmap.txt。<br>
+
* 安装 rsync 工具
mkimage.sh执行成功后,会生成out/SD-bootable-1(这里的"1"对应参数“-c 1”)目录,,其内容如下:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ tree out/
+
wget http://112.124.9.243/cn-apt-source.sh
out/
+
chmod 755 cn-apt-source.sh
├── SD-bootable-1
+
./cn-apt-source.sh
│   └── your_company
+
apt-get update
│      ├── boot.img
+
apt-get -y install rsync
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      └── u-boot-sunxi-with-spl.bin
+
├── SD-bootable-1.img
+
 
</syntaxhighlight>
 
</syntaxhighlight>
part1/boot_linux-4.14_h3/目录被制作成了boot.img;<br>
+
* 将 emmc 的 rootfs 分区文件拷贝到 u盘,忽略掉特殊文件:
part2/h3/4.14/friendlycore/rootfs/目录被制作成了rootfs.img;<br>
+
SD-bootable-1.img则为最终的sd ROM文件,它是由SD-bootable-1目录下的所有文件组装而来的,等效于FriendlyElec 发布的nanopi-[h3]_sd_friendlycore-xenial_4.14_armhf_YYYYMMDD.img;
+
 
+
<!--
+
下面的命令可以快速地将系统烧写到SD卡中:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ ./tools/sd_update -d /dev/SD -p ./out/SD-bootable-1/your_company/partmap.txt
+
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/swapfile"} /mnt/rootfs/* /mnt/udisk/rootfs
 
</syntaxhighlight>
 
</syntaxhighlight>
注意: 请将/dev/sdX替换为实际的SD卡设备节点。
 
-->
 
  
 
+
===用备份出来的文件系统,重新制作用于量产的固件===
====Linux-3.4====
+
* 将 u盘拷到ubuntu电脑上,挂载u盘到 /media/udisk<br />
与Linux-4.14 sd ROM不同,不同的H3板子的Linux-3.4 sd ROM是不同的。<br>
+
* 用 sd-fuse_s5p4418 重新制作 rootfs.img:
这里以制作NanoPi M1的Linux-3.4 FriendlyCore sd ROM为例进行讲解,Ubuntu、Debian、OpenWrt等sd ROM的制作方法是一样的。<br><br>
+
 
+
* 准备FriendlyCore的rootfs目录
+
有1种方式可以准备FriendlyCore的rootfs目录:<br>
+
1) 制作一张带FriendlyCore系统的SD卡,然后基于该SD卡进行定制开发,当开发完毕后,在PC机上挂载该SD卡的rootfs分区; <br>
+
 
+
* 假设rootfs目录的路径为./rom-maker-lite/part2/m1/3.4/friendlycore/rootfs/,执行下面的命令可以生成sd ROM:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ cd rom-maker-lite
+
git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git
$ ./mkimage.sh -c 1 -m partmap/h3_linux-3.4/partmap.txt -d "misc/uboot-2011_m1/;part1/boot_linux-3.4_m1/;part2/m1/3.4/friendlycore/rootfs"
+
cd sd-fuse_s5p4418
 +
./build-rootfs-img.sh /media/udisk/rootfs friendlycore
 +
./mk-emmc-image.sh friendlycore
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
现在,你可以将生成的 out/s5p4418-eflasher-friendlycore-xenial-4.4-YYYYMMDD.img 固件用于量产了。
  
如果有需要,你可以将misc/uboot-2011_m1、part1/boot_linux-3.4_m1目录下的文件替换为你自己定制编译的文件,当然你也可以使用rom-maker-lite自带的预编译系统文件,我们会不定期更新预编译系统文件,通过tree命令可查看有哪些可替换的系统文件:
+
==制作RK3399平台的系统映像==
<syntaxhighlight lang="bash">
+
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_rk3399
$ tree misc/uboot-2011_m1 part1/boot_linux-3.4_m1
+
misc/uboot-2011_m1
+
├── boot0_sdcard.fex
+
└── u-boot.fex
+
part1/boot_linux-3.4_m1
+
├── boot.img
+
└── bootlogo.bmp
+
</syntaxhighlight>
+
  
<br>
+
==制作S5P4418平台的系统映像==
对于所有使用Linux-3.4 BSP的H3板子,使用的都是同一个partmap文件: partmap/h3_linux-3.4/partmap.txt。<br>
+
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p4418<br />
mkimage.sh执行成功后,会生成out/SD-bootable-1(这里的"1"对应参数“-c 1”)目录,,其内容如下:
+
<br />
 +
Example: <br />
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ tree out/
+
mkdir test
out/
+
cd test
├── SD-bootable-1
+
git clone https://github.com/friendlyarm/sd-fuse_s5p4418
│   └── your_company
+
cd sd-fuse_s5p4418/
│      ├── boot0_sdcard.fex
+
tar xzf /mnt/dvd/S5P4418/images-for-eflasher/friendlycore-images.tgz
│      ├── boot.img
+
tar xzf  /mnt/dvd/S5P4418/images-for-eflasher/emmc-flasher-images.tgz
│      ├── info.conf
+
tar xzf /mnt/dvd/S5P4418/rootfs/rootfs-friendlycore-20190718.tgz
│      ├── partmap.txt
+
sed "s/\${BOARD}/XXYYZZ/g" friendlycore/rootfs/etc/rc.local -i
│      ├── rootfs.img
+
./build-rootfs-img.sh friendlycore/rootfs friendlycore
│      └── u-boot.fex
+
./mk-emmc-image.sh friendlycore
├── SD-bootable-1.img
+
dd if=out/s5p4418-eflasher-friendlycore-20190730.img of=/dev/sdX bs=32M
 
</syntaxhighlight>
 
</syntaxhighlight>
part1/boot_linux-3.4_m1目录被制作成了boot.img;<br>
+
<br />
part2/h3/3.14/friendlycore/rootfs/目录被制作成了rootfs.img;<br>
+
上例中两个关键的命令:<br />
SD-bootable-1.img则为最终的sd ROM文件,它是由SD-bootable-1目录下的所有文件组装而来的,等效于FriendlyElec 发布的nanopi-m1_sd_friendlycore-xenial_3.4_armhf_YYYYMMDD.img;
+
./build-rootfs-img.sh friendlycore/rootfs friendlycore<br />
 +
将 friendlycore/rootfs 目录制作成 rootfs.img <br />
 +
<br />
 +
./mk-emmc-image.sh friendlycore<br />
 +
将friendlycore目录下的系统制作为  eflaher固件,会生成 out/s5p4418-eflasher-friendlycore-20190730.img,直接 dd 到卡里即可<br />
  
* 以此类推,NanoPi M1 Plus 的sd ROM 制作命令如下:
+
==制作S5P6818平台的系统映像==
<syntaxhighlight lang="bash">
+
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p6818
$ ./mkimage.sh -c 1 -m partmap/h3_linux-3.4/partmap.txt -d "misc/uboot-2011_m1-plus/;part1/boot_linux-3.4_m1-plus/;part2/m1-plus/3.4/friendlycore/rootfs"
+
</syntaxhighlight>
+
生成的SD-bootable-1.img等效于FriendlyElec 发布的nanopi-m1-plus_sd_friendlycore-xenial_3.4_armhf_YYYYMMDD.img.zip。NanoPi NEO / NanoPi NEO Air也是同样的道理,这样不再赘述。
+
  
 
+
==制作H3 平台的系统映像==
===制作eflasher ROM===
+
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h3
制作eflasher ROM的前提条件是已经成功制作出了FriendlyCore/Debian/OpenWrt等sd ROM,即已经有待烧写到eMMC的原材料文件。<br>
+
例如想制作用于烧写“Linux-4.14的FriendlyCore”的eflasher ROM,先要有"Linux-4.14的FriendlyCore"的sd ROM原材料,即:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      └── u-boot-sunxi-with-spl.bin
+
</syntaxhighlight>
+
 
+
* 准备eflasher的rootfs目录
+
有2种方式可以准备eflasher的rootfs目录:<br>
+
1) 制作一张带eflasher 系统的SD卡,然后基于该SD卡进行定制开发,当开发完毕后,在PC机上挂载该SD卡的rootfs分区; <br>
+
2) 解压DVD光盘里/rootfs/rootfs_eflasher_4.14_YYYYMMDD.tgz<br>
+
 
+
* 假设eflasher rootfs目录的路径为./rom-maker-lite/part2/h3/4.14/eflasher/rootfs/,执行下面的命令可生成eflasher ROM:
+
<syntaxhighlight lang="bash">
+
$ cd rom-maker-lite
+
$ ./mkimage.sh -c 2 -m partmap/h3_eflasher-4.14/partmap.txt -d "misc/uboot-2017_h3/;part1/boot_linux-4.14_h3/;part2/h3/4.14/eflasher/rootfs;out/SD-bootable-1/"
+
</syntaxhighlight>
+
mkimage.sh执行成功后,会生成out/SD-bootable-2目录,其内容如下:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-2
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── friendlyarm.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      └── u-boot-sunxi-with-spl.bin
+
└── SD-bootable-2.img
+
</syntaxhighlight>
+
part1/boot_linux-4.14_h3/目录被制作成了boot.img;<br>
+
part2/h3/4.14/eflasher/rootfs/目录被制作成了rootfs.img;<br>
+
out/SD-bootable-1/目录被制作成了friendlyarm.img;<br>
+
SD-bootable-2.img则为最终的eflasher ROM文件,它是由SD-bootable-2目录下的所有文件组装而来的,等效于FriendlyElec 发布的nanopi-[h3]_eflasher_friendlycore-xenial_4.14_armhf_YYYYMMDD.img;<br>
+
事实下,FriendlyElec发布的所有H3板子的nanopi-[h3]_eflasher_friendlycore-xenial_4.14_armhf_YYYYMMDD.img.zip都是同一个文件。
+
 
+
<!--
+
下面的命令可以快速地将eflasher系统烧写到SD卡中以进行测试:
+
<syntaxhighlight lang="bash">
+
$ ./tools/sd_update -d /dev/SD -p ./out/SD-bootable-2/your_company/partmap.txt
+
</syntaxhighlight>
+
注意: 请将/dev/sdX替换为实际的SD卡设备节点。
+
-->
+
 
+
===单独制作boot.img===
+
===单独制作rootfs.img===
+
  
 
==制作H5 平台的系统映像==
 
==制作H5 平台的系统映像==
{{ROM-Maker-lite_Introduce/zh |h5}}
+
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h5
 
+
* <b>为H5 系列的板子制作基于Uboot-2017 + Linux-4.14 的sd ROM(例如FriendlyCore/Debian/OpenWrt...)</b>
+
事实上,对于Uboot-2017 + Linux-4.14版本的BSP,所有H5 系列的板子的sd ROM文件都是同一个。所以对于这个版本的BSP,所有H3 系列的板子的sd ROM 的制作命令是一样的。
+
这里以制作FriendlyCore sd ROM为例进行讲解,Debian、OpenWrt等sd ROM文件的制作方法是类似的。<br><br>
+
假设你已经有一张带有FriendlyCore系统的SD卡,并且该SD卡的rootfs目录下已经包含了你自己的应用程序和设置。请将该SD卡插入PC机中,然后挂载SD卡的rootfs分区(假设挂载路径为rom-maker-lite/part2/h3/4.14/friendlycore/rootfs/, 请注意使用真实路径),使用下面的命令可以生成你自己定制的ROM文件:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh -c 1 -m partmap/h5_linux-4.14/partmap.txt -d "misc/uboot-2017_h5/;part1/boot_linux-4.14_h5/;part2/h5/4.14/friendlycore/rootfs/"
+
</syntaxhighlight>
+
如果有需要,可以将misc/uboot-2017_h5、part1/boot_linux-4.14_h5目录下的文件替换为你自己的定制文件,当然你也可以使用目录里自带的预编译系统文件,我们会不定期更新预编译系统文件,通过tree命令可查看有哪些可替换的系统文件:
+
<syntaxhighlight lang="bash">
+
$ tree misc/uboot-2017_h5/ part1/boot_linux-4.14_h5/
+
misc/uboot-2017_h5/
+
├── sunxi-spl.bin
+
└── u-boot.itb
+
part1/boot_linux-4.14_h5/
+
├── boot.cmd
+
├── boot.scr
+
├── Image
+
├── overlays
+
│   └── sun50i-h5-gpio-dvfs-overlay.dtb
+
├── rootfs.cpio.gz
+
├── sun50i-h5-nanopi-k1-plus.dtb
+
├── sun50i-h5-nanopi-neo2.dtb
+
├── sun50i-h5-nanopi-neo-core2.dtb
+
└── sun50i-h5-nanopi-neo-plus2.dtb
+
</syntaxhighlight>
+
 
+
对于所有使用Linux-4.14 BSP的H5板子,使用的都是同一个partmap文件partmap/h5_linux-4.14/partmap.txt。<br>
+
mkimage.sh执行成功后,会生成out/SD-bootable-1目录,其内容如下:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
├── SD-bootable-1.img
+
 
+
</syntaxhighlight>
+
part1/boot_linux-4.14_h5/目录被制作成了boot.img,part2/h5/4.14/friendlycore/rootfs/被制作成了rootfs.img,SD-bootable-1.img则为最终的sd ROM文件,SD-bootable-1.img则为最终的sd ROM文件,它等效于FriendlyElec 发布的nanopi-[h5]_sd_friendlycore-xenial_4.14_arm64_YYYYMMDD.img.zip,你可以用win32diskimager或者dd命令将SD-bootable-1.img烧写到SD卡中。
+
<!--
+
另外,你可以通过如下命令快速地将系统烧写到SD卡中以进行测试:
+
<syntaxhighlight lang="bash">
+
$ ./tools/sd_update -d /dev/SD -p ./out/SD-bootable-1/your_company/partmap.txt
+
</syntaxhighlight>
+
注意: 请将/dev/sdX替换为实际的SD卡设备节点。
+
-->
+
 
+
<br>
+
* <b>为H5 系列的板子制作基于Uboot-2014 + Linux-3.10 的sd ROM(例如FriendlyCore/Debian/OpenWrt...) </b>
+
无论是基于什么版本的BSP,做rom的原理都是一样的,这里不再赘述。这里以制作NanoPi NEO2的FriendlyCore sd ROM为例进行讲解,Debian、OpenWrt等sd ROM的制作方法是类似的。<br><br>
+
执行命令:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh -c 1 -m partmap/h5_linux-3.10/partmap.txt -d "misc/uboot-2014_neo2/;part1/boot_linux-3.10_neo2/;part2/neo2/3.10/friendlycore/rootfs"
+
</syntaxhighlight>
+
生成的SD-bootable-1.img等效于FriendlyElec 发布的nanopi-neo2_sd_friendlycore-xenial_3.10_arm64_YYYYMMDD.img.zip,如果有需要,可以将对应目录下的文件替换为你自己的定制文件。对于所有使用Linux-3.10 BSP的H5板子,使用的都是同一个partmap文件partmap/h5_linux-3.10/partmap.txt。<br>
+
以此类推,NanoPi NEO Plus2 的sd ROM 制作命令如下:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh -c 1 -m partmap/h5_linux-3.10/partmap.txt -d "misc/uboot-2014_neo-plus2/;part1/boot_linux-3.10_neo-plus2/;part2/neo-plus2/3.10/friendlycore/rootfs"
+
</syntaxhighlight>
+
生成的SD-bootable-1.img等效于FriendlyElec 发布的nanopi-neo-plus2_sd_friendlycore-xenial_3.10_arm64_YYYYMMDD.img.zip
+
 
+
<br>
+
* <b>为H5 系列的板子制作基于Uboot-2017 + Linux-4.14 的eflasher ROM</b>
+
制作eflasher ROM的前提条件是已经成功制作出了FriendlyCore/Debian/OpenWrt等sd ROM,即已经有待烧写到eMMC的原材料文件,例如基于Uboot-2017 + Linux-4.14的FriendlyCore系统:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
</syntaxhighlight>
+
 
+
假设你有一张带有eflasher 系统的SD卡,请将该SD卡插入PC机中,然后挂载SD卡的rootfs分区(假设挂载路径为part2/h5/4.14/eflasher/rootfs, 请注意使用真实路径),然后通过以下命令就可以生成eflasher ROM:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh -c 2 -m partmap/h5_eflasher-4.14/partmap.txt -d "misc/uboot-2017_h5/;part1/boot_linux-4.14_h5/;part2/h5/4.14/eflasher/rootfs;out/SD-bootable-1"
+
</syntaxhighlight>
+
mkimage.sh执行成功后,会生成out/SD-bootable-2目录,其内容如下:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
├── SD-bootable-1.img
+
├── SD-bootable-2
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── friendlyarm.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
└── SD-bootable-2.img
+
</syntaxhighlight>
+
SD-bootable-2.img即为最终的eflasher ROM文件,它等效于FriendlyElec 发布的nanopi-[h5]_eflasher_friendlycore-xenial_4.14_arm64_YYYYMMDD.img.zip。eflasher ROM能烧写什么系统到eMMC完全取决于out/SD-bootable-1/里包含了什么系统,你可以用win32diskimager或者dd命令将SD-bootable-2.img烧写到SD卡中。
+
<!--
+
另外,通过如下命令快速地将eflasher系统烧写到SD卡中以进行测试:
+
<syntaxhighlight lang="bash">
+
$ ./tools/sd_update -d /dev/SD -p ./out/SD-bootable-2/your_company/partmap.txt
+
</syntaxhighlight>
+
注意: 请将/dev/sdX替换为实际的SD卡设备节点。
+
-->
+

Latest revision as of 01:50, 29 December 2019

English

1 制作量产用的文件系统 (以s5p4418为例)

1.1 烧写系统到emmc,按你的项目要求定制系统

  • 用 s5p4418-eflasher-friendlycore-xxx.img 的固件 制做一张 tf 卡
  • 用 tf 卡启动,进入烧写预览界面,选中 Disable overlay filesystem, 然后正常烧写系统到 emmc,如果没有看到 Disable overlay filesystem 选项,说明你的固件不是新版本,先去下载新固件:dl.friendlyarm.com
  • 拨出 tf 卡,用 emmc 启动到 friendlycore
  • 用 mount 命令查看根目录,确定根目录的挂载类型不是 overlay
  • 正常安装你想要的软件,配置系统

1.2 从emmc中把文件系统备份出来

  • 准备一个 u盘,格式化分区为 ext4 格式
  • 再次用 tf 卡启动系统,并拨入u盘
  • 用电脑上用 ssh 登录: ssh root@192.168.1.231,密码是 fa
  • 用以下命令挂载 emmc 的 rootfs 分区到 /mnt/rootfs目录:
mkdir /mnt/rootfs
mount /dev/mmcblk1p2 /mnt/rootfs
  • 挂载 u盘下到 /mnt/udisk (如何没有挂载), 然后创建 /mnt/udisk/rootfs 目录
mount /dev/sdb1 /mnt/udisk
mkdir /mnt/udisk/rootfs

注:有时 u盘的设备名是 /dev/sda1已经自动挂载到 /mnt/udisk 目录

  • 安装 rsync 工具
wget http://112.124.9.243/cn-apt-source.sh
chmod 755 cn-apt-source.sh
./cn-apt-source.sh
apt-get update
apt-get -y install rsync
  • 将 emmc 的 rootfs 分区文件拷贝到 u盘,忽略掉特殊文件:
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/swapfile"} /mnt/rootfs/* /mnt/udisk/rootfs

1.3 用备份出来的文件系统,重新制作用于量产的固件

  • 将 u盘拷到ubuntu电脑上,挂载u盘到 /media/udisk
  • 用 sd-fuse_s5p4418 重新制作 rootfs.img:
git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git
cd sd-fuse_s5p4418
./build-rootfs-img.sh /media/udisk/rootfs friendlycore
./mk-emmc-image.sh friendlycore

现在,你可以将生成的 out/s5p4418-eflasher-friendlycore-xenial-4.4-YYYYMMDD.img 固件用于量产了。

2 制作RK3399平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_rk3399

3 制作S5P4418平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p4418

Example:

mkdir test
cd test
git clone https://github.com/friendlyarm/sd-fuse_s5p4418
cd sd-fuse_s5p4418/
tar xzf /mnt/dvd/S5P4418/images-for-eflasher/friendlycore-images.tgz
tar xzf  /mnt/dvd/S5P4418/images-for-eflasher/emmc-flasher-images.tgz
tar xzf /mnt/dvd/S5P4418/rootfs/rootfs-friendlycore-20190718.tgz 
sed "s/\${BOARD}/XXYYZZ/g" friendlycore/rootfs/etc/rc.local -i
./build-rootfs-img.sh friendlycore/rootfs friendlycore
./mk-emmc-image.sh friendlycore
dd if=out/s5p4418-eflasher-friendlycore-20190730.img of=/dev/sdX bs=32M


上例中两个关键的命令:
./build-rootfs-img.sh friendlycore/rootfs friendlycore
将 friendlycore/rootfs 目录制作成 rootfs.img

./mk-emmc-image.sh friendlycore
将friendlycore目录下的系统制作为 eflaher固件,会生成 out/s5p4418-eflasher-friendlycore-20190730.img,直接 dd 到卡里即可

4 制作S5P6818平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p6818

5 制作H3 平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h3

6 制作H5 平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h5