|
|
(23 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 /> |
− | ==制作S5P4418平台的系统映像== | + | * 用 tf 卡启动,进入烧写预览界面,选中 Disable overlay filesystem, 然后正常烧写系统到 emmc,如果没有看到 Disable overlay filesystem 选项,说明你的固件不是新版本,先去下载新固件:dl.friendlyelec.com <br /> |
− | 请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p4418
| + | * 拨出 tf 卡,用 emmc 启动到 friendlycore<br /> |
− | | + | * 用 mount 命令查看根目录,确定根目录的挂载类型不是 overlay<br /> |
− | ==制作S5P6818平台的系统映像==
| + | * 正常安装你想要的软件,配置系统<br /> |
− | 请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p6818
| + | |
− | | + | |
− | ==制作H3 平台的系统映像==
| + | |
− | {{ROM-Maker-lite_Introduce/zh |h3}}
| + | |
− | | + | |
− | ===制作sd ROM===
| + | |
− | ====Linux-4.14====
| + | |
− | 事实上,对于Linux-4.14 BSP,相同rootfs的所有H3 板子的sd ROM文件都是同一个。所以对于这个版本的BSP,所有H3 的板子的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> | + | ===从emmc中把文件系统备份出来=== |
− | * <b>假设rootfs目录的路径为./rom-maker-lite/part2/h3/4.14/friendlycore/rootfs/,执行下面的命令可生成sd ROM:</b> | + | * 准备一个 u盘,格式化分区为 ext4 格式<br /> |
| + | * 再次用 tf 卡启动系统,并拨入u盘<br /> |
| + | * 用电脑上用 ssh 登录: ssh root@192.168.1.231,密码是 fa<br /> |
| + | * 用以下命令挂载 emmc 的 rootfs 分区到 /mnt/rootfs目录: |
| <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> |
− | - 对于所有使用Linux-4.14 BSP的H3板子,使用的都是同一个partmap文件: partmap/h3_linux-4.14/partmap.txt。<br>
| + | * 挂载 u盘下到 /mnt/udisk (如何没有挂载), 然后创建 /mnt/udisk/rootfs 目录 |
− | - 如果有需要,你可以将misc/uboot-2017_h3、part1/boot_linux-4.14_h3目录下的文件替换为你自己定制编译的文件,通过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 /> |
− | mkimage.sh执行成功后,会生成out/SD-bootable-1目录(这里的"1"对应参数“-c 1”),,其内容如下:
| + | * 安装 rsync 工具 |
| <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不同,相同rootfs的不同的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>
| + | |
− | | + | |
− | * <b>准备FriendlyCore的rootfs目录</b> | + | |
− | 有1种方式可以准备FriendlyCore的rootfs目录:<br>
| + | |
− | 1) 制作一张带FriendlyCore系统的SD卡,然后基于该SD卡进行定制开发,当开发完毕后,在PC机上挂载该SD卡的rootfs分区; <br>
| + | |
− | | + | |
− | <br> | + | |
− | * <b>假设rootfs目录的路径为./rom-maker-lite/part2/m1/3.4/friendlycore/rootfs/,执行下面的命令可以生成sd ROM:</b> | + | |
− | <syntaxhighlight lang="bash">
| + | |
− | $ cd rom-maker-lite
| + | |
− | $ ./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"
| + | |
− | </syntaxhighlight>
| + | |
− | - 对于所有使用Linux-3.4 BSP的H3板子,使用的都是同一个partmap文件: partmap/h3_linux-3.4/partmap.txt。<br>
| + | |
− | - 如果有需要,你可以将misc/uboot-2011_m1、part1/boot_linux-3.4_m1目录下的文件替换为你自己定制编译的文件,通过tree命令可查看有哪些可替换的文件:
| + | |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
− | $ tree misc/uboot-2011_m1 part1/boot_linux-3.4_m1
| + | git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git |
− | misc/uboot-2011_m1
| + | cd sd-fuse_s5p4418 |
− | ├── boot0_sdcard.fex
| + | ./build-rootfs-img.sh /media/udisk/rootfs friendlycore |
− | └── u-boot.fex
| + | ./mk-emmc-image.sh friendlycore |
− | part1/boot_linux-3.4_m1
| + | |
− | ├── boot.img
| + | |
− | └── bootlogo.bmp
| + | |
| </syntaxhighlight> | | </syntaxhighlight> |
| + | 现在,你可以将生成的 out/s5p4418-eflasher-friendlycore-xenial-4.4-YYYYMMDD.img 固件用于量产了。 |
| | | |
− | <br>
| + | ==制作RK3399平台的系统映像== |
− | mkimage.sh执行成功后,会生成out/SD-bootable-1目录(这里的"1"对应参数“-c 1”),,其内容如下:
| + | 请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_rk3399 |
− | <syntaxhighlight lang="bash">
| + | |
− | $ tree out/
| + | |
− | out/
| + | |
− | ├── SD-bootable-1
| + | |
− | │ └── your_company
| + | |
− | │ ├── boot0_sdcard.fex
| + | |
− | │ ├── boot.img
| + | |
− | │ ├── info.conf
| + | |
− | │ ├── partmap.txt
| + | |
− | │ ├── rootfs.img
| + | |
− | │ └── u-boot.fex
| + | |
− | ├── SD-bootable-1.img
| + | |
− | </syntaxhighlight>
| + | |
− | - part1/boot_linux-3.4_m1目录被制作成了boot.img;<br>
| + | |
− | - part2/h3/3.14/friendlycore/rootfs/目录被制作成了rootfs.img;<br>
| + | |
− | - SD-bootable-1.img则为最终的sd ROM文件,它是由SD-bootable-1目录下的所有文件组装而来的,等效于FriendlyElec 发布的nanopi-m1_sd_friendlycore-xenial_3.4_armhf_YYYYMMDD.img;
| + | |
| | | |
− | <br> | + | ==制作S5P4418平台的系统映像== |
− | * <b>以此类推,NanoPi M1 Plus 的sd ROM 制作命令如下:</b>
| + | 请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p4418<br /> |
| + | <br /> |
| + | Example: <br /> |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
− | $ ./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"
| + | 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 |
| </syntaxhighlight> | | </syntaxhighlight> |
− | 生成的SD-bootable-1.img等效于FriendlyElec 发布的nanopi-m1-plus_sd_friendlycore-xenial_3.4_armhf_YYYYMMDD.img.zip。NanoPi NEO / NanoPi NEO Air也是同样的道理,这样不再赘述。
| + | <br /> |
| + | 上例中两个关键的命令:<br /> |
| + | ./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 /> |
| | | |
| + | ==制作S5P6818平台的系统映像== |
| + | 请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p6818 |
| | | |
− | ===制作eflasher ROM=== | + | ==制作H3 平台的系统映像== |
− | 制作eflasher ROM的前提条件是已经成功制作出了FriendlyCore/Debian/OpenWrt等sd ROM,即已经有待烧写到eMMC的原材料文件。<br>
| + | 请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h3 |
− | 例如想制作用于烧写“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>
| + | |
− | | + | |
− | <br>
| + | |
− | * <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>
| + | |
− | | + | |
− | <br>
| + | |
− | * <b>假设eflasher rootfs目录的路径为./rom-maker-lite/part2/h3/4.14/eflasher/rootfs/,执行下面的命令可生成eflasher ROM:</b>
| + | |
− | <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===
| + | |
− | rom-maker-lite是通过./tools/mk_fsimg.sh脚本来生成分区文件(boot.img、rootfs.img)的,其用法如下:
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |参数||说明
| + | |
− | |-
| + | |
− | | 参数1 ||
| + | |
− | 指定分区格式,支持vfat/ext4/exfat
| + | |
− | |-
| + | |
− | | 参数2 ||
| + | |
− | 指定输出文件;
| + | |
− | |-
| + | |
− | | 参数3 ||
| + | |
− | 指定输入目录;
| + | |
− | |-
| + | |
− | | 参数4 ||
| + | |
− | 指定输出文件的大小,单位是MByte,必须大于输入目录。<br>
| + | |
− | 可根据输入目录实际情况填写,通常情况下由于需要保存文件系统的信息,需要比输入目录大一点,如果提示空间不足,则需要增大该参数。
| + | |
− | |-
| + | |
− | | 参数5 ||
| + | |
− | 指定分区的标签;
| + | |
− | |}
| + | |
− | | + | |
− | ====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_h3/ 40 boot
| + | |
− | $ ./tools/mk_fsimg.sh ext4 rootfs.img ./part2/h3/4.14/friendlycore/rootfs/ 4096 rootfs
| + | |
− | </syntaxhighlight>
| + | |
− | 上述命令适用于所有H3的板子。
| + | |
− | | + | |
− | ====Linux-3.4====
| + | |
− | 为NanoPi M1 Linux-3.14 sd ROM生成boot.img和rootfs.img的命令如下:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | $ cd rom-maker-lite
| + | |
− | $ ./tools/mk_fsimg.sh vfat boot.img ./part1/boot_linux-3.4_m1/ 40 boot
| + | |
− | $ ./tools/mk_fsimg.sh ext4 rootfs.img ./part2/h3/3.4/friendlycore/rootfs/ 4096 rootfs
| + | |
− | </syntaxhighlight>
| + | |
− | 上述命令仅适用于NanoPi M1,其他H3的板子的命令也是类似的.
| + | |
− | | + | |
| | | |
| ==制作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_armhf_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/h3/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/
| + | |
− | out/
| + | |
− | ├── 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_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===
| + | |
− | rom-maker-lite是通过./tools/mk_fsimg.sh脚本来生成分区文件(boot.img、rootfs.img)的,其用法如下:
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |参数||说明
| + | |
− | |-
| + | |
− | | 参数1 ||
| + | |
− | 指定分区格式,支持vfat/ext4/exfat
| + | |
− | |-
| + | |
− | | 参数2 ||
| + | |
− | 指定输出文件;
| + | |
− | |-
| + | |
− | | 参数3 ||
| + | |
− | 指定输入目录;
| + | |
− | |-
| + | |
− | | 参数4 ||
| + | |
− | 指定输出文件的大小,单位是MByte,必须大于输入目录。<br>
| + | |
− | 可根据输入目录实际情况填写,通常情况下由于需要保存文件系统的信息,需要比输入目录大一点,如果提示空间不足,则需要增大该参数。
| + | |
− | |-
| + | |
− | | 参数5 ||
| + | |
− | 指定分区的标签;
| + | |
− | |}
| + | |
− | | + | |
− | ====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_h3/ 40 boot
| + | |
− | $ ./tools/mk_fsimg.sh ext4 rootfs.img ./part2/h3/4.14/friendlycore/rootfs/ 4096 rootfs
| + | |
− | </syntaxhighlight>
| + | |
− | 上述命令适用于所有H3的板子。
| + | |
− | | + | |
− | ====Linux-3.4====
| + | |
− | 为NanoPi M1 Linux-3.14 sd ROM生成boot.img和rootfs.img的命令如下:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | $ cd rom-maker-lite
| + | |
− | $ ./tools/mk_fsimg.sh vfat boot.img ./part1/boot_linux-3.4_m1/ 40 boot
| + | |
− | $ ./tools/mk_fsimg.sh ext4 rootfs.img ./part2/h3/3.4/friendlycore/rootfs/ 4096 rootfs
| + | |
− | </syntaxhighlight>
| + | |
− | 上述命令仅适用于NanoPi M1,其他H3的板子的命令也是类似的.
| + | |