|
|
Line 36: |
Line 36: |
| | | |
| ==制作H5 平台的系统映像== | | ==制作H5 平台的系统映像== |
− | {{ROM-Maker-lite_Introduce/zh |h5}}
| + | 请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h5 |
− | | + | |
− | ===制作sd ROM===
| + | |
− | ====Linux-4.14====
| + | |
− | 事实上,对于Linux-4.14 BSP,相同rootfs的所有H5 板子的sd ROM文件都是同一个,所以对于这个版本的BSP,所有H5 的板子的sd ROM 的制作命令是一样的。<br>
| + | |
− | 这里以制作FriendlyCore sd ROM为例进行讲解,Ubuntu、Debian、OpenWrt等sd ROM文件的制作方法是一样的。<br>
| + | |
− | | + | |
− | * <b>准备FriendlyCore的rootfs目录</b>
| + | |
− | 有2种方式可以准备FriendlyCore的rootfs目录:<br>
| + | |
− | 1) 制作一张带FriendlyCore系统的SD卡,然后基于该SD卡进行定制开发,当开发完毕后,在PC机上挂载该SD卡的rootfs分区; <br>
| + | |
− | 2) 解压网盘里的/rootfs/rootfs_friendlycore_4.14_YYYYMMDD.tgz<br>
| + | |
− | | + | |
− | <br>
| + | |
− | * <b>假设rootfs目录的路径为./rom-maker-lite/part2/h5/4.14/friendlycore/rootfs/,执行下面的命令可生成sd ROM:</b>
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | $ cd rom-maker-lite
| + | |
− | $ ./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>
| + | |
− | - 对于所有使用Linux-4.14 BSP的H5板子,使用的都是同一个partmap文件: partmap/h5_linux-4.14/partmap.txt。<br>
| + | |
− | - 如果有需要,你可以将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>
| + | |
− | | + | |
− | <br>
| + | |
− | mkimage.sh执行成功后,会生成out/SD-bootable-1目录("1"对应参数“-c 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;<br>
| + | |
− | - part2/h5/4.14/friendlycore/rootfs/目录被制作成了rootfs.img;<br>
| + | |
− | - SD-bootable-1.img则为最终的sd ROM文件,它是由SD-bootable-1目录下的所有文件组装而来的,等效于FriendlyElec 发布的nanopi-[h5]_sd_friendlycore-xenial_4.14_arm64_YYYYMMDD.img;
| + | |
− | | + | |
− | | + | |
− | | + | |
− | ===制作eflasher ROM===
| + | |
− | 制作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
| + | |
− | │ ├── sunxi-spl.bin
| + | |
− | │ └── u-boot.itb
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | * <b>准备eflasher的rootfs目录</b>
| + | |
− | 有2种方式可以准备eflasher的rootfs目录:<br>
| + | |
− | 1) 制作一张带eflasher 系统的SD卡,然后基于该SD卡进行定制开发,当开发完毕后,在PC机上挂载该SD卡的rootfs分区; <br>
| + | |
− | 2) 解压网盘里的/rootfs/rootfs_eflasher_4.14_YYYYMMDD.tgz<br>
| + | |
− | | + | |
− | * <b>假设eflasher rootfs目录的路径为./rom-maker-lite/part2/h5/4.14/eflasher/rootfs/,执行下面的命令可生成eflasher ROM:</b>
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | $ cd rom-maker-lite
| + | |
− | $ ./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/SD-bootable-2
| + | |
− | out/SD-bootable-2
| + | |
− | ├── 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>
| + | |
− | - part1/boot_linux-4.14_h5/目录被制作成了boot.img;<br>
| + | |
− | - part2/h5/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-[h5]_eflasher_friendlycore-xenial_4.14_arm64_YYYYMMDD.img;<br>
| + | |
− | 事实上,FriendlyElec发布的所有H5板子的nanopi-[h5]_eflasher_friendlycore-xenial_4.14_arm64_YYYYMMDD.img都是同一个文件。
| + | |
− | | + | |
− | | + | |
− | ===仅制作boot.img/rootfs.img===
| + | |
− | {{ROM-Maker-lite_mk-fsimg/zh |h5}}
| + | |
− | | + | |
− | ====Linux-4.14====
| + | |
− | 为Linux-4.14 sd ROM生成boot.img和rootfs.img的命令如下:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | $ cd rom-maker-lite
| + | |
− | $ ./tools/mk_fsimg.sh vfat boot.img ./part1/boot_linux-4.14_h5/ 40 boot
| + | |
− | $ ./tools/mk_fsimg.sh ext4 rootfs.img ./part2/h5/4.14/friendlycore/rootfs/ 2048 rootfs
| + | |
− | </syntaxhighlight>
| + | |
− | 上述命令适用于所有H5的板子。
| + | |
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/rootfs.img
./mk-emmc-image.sh friendlycore
dd if=out/s5p4418-eflasher-friendlycore-20190730.img of=/dev/sdX bs=32M