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

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
 
(45 intermediate revisions by 3 users not shown)
Line 5: Line 5:
  
 
==Make Image Files for S5P4418==
 
==Make Image Files for S5P4418==
Refer to this repo: https://github.com/friendlyarm/sd-fuse_s5p4418
+
Refer to this repo: https://github.com/friendlyarm/sd-fuse_s5p4418<br />
 +
<br />
 +
Example:  <br />
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
  
 
==Make Image Files for S5P6818==
 
==Make Image Files for S5P6818==
 
Refer to this repo: https://github.com/friendlyarm/sd-fuse_s5p6818
 
Refer to this repo: https://github.com/friendlyarm/sd-fuse_s5p6818
  
==Make Linux ROM for H3==
+
==Make Image Files for H3==
If you have compiled a U-boot, Linux kernel and a file system, and want to make a your own Linux image (ROM) with these files you can refer to the following steps:<br>
+
Refer to this repo: https://github.com/friendlyarm/sd-fuse_h3
Download a package "rom-maker-lite.tar.gz" : [https://pan.baidu.com/s/1DSd4XYXr1yGyQTdRNQNoOw download link], extract it in host PC running Ubuntu and you will get the following directorie:
+
<syntaxhighlight lang="bash">
+
rom-maker-lite
+
</syntaxhighlight>
+
The "rom-maker-lite" directory has the script utilities which can be used to make a ROM that boots from an SD card.<br><br>
+
 
+
Currently the script utilities under the "rom-maker-lite" directory can be only used to make Linux ROMs for H3/H5. You can check its usage by running the "./mkimage.sh" script:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh
+
Usage:
+
    $ apt-get install tree dosfstools
+
    $ ./mkimage.sh <prepare type> <partmap> <misc dir> <partition1 dir> <partition2 dir>
+
        prepare type:
+
            p1: prepare misc(bootloader) + partition1.img(fat32 boot) + partition2.img(ext4 rootfs)
+
            p2: prepare misc(bootloader) + partition1.img(fat32 boot) + partition2.img(ext4 rootfs) + partition3.img(fat32 eflashed material)
+
            p3: prepare misc(bootloader) + partition1.img(ext4 boot) + partition2.img(ext4 rootfs)
+
</syntaxhighlight>
+
 
+
::{| class="wikitable"
+
|-
+
|Parameter||Comment
+
|-
+
|<prepare type>  ||  specifies a ROM type. For H3/H5 p1 means to make a FriendlyCore/Ubuntu/Debian ROM and p2 means to make an Eflasher ROM.
+
|-
+
|<partmap>  ||  specifies a partmap that is needed for making a ROM. A partmap file specifies a ROM Image's partition and components. Different platforms or different BSPs for the same platform use different partmap files.
+
|-
+
|<misc dir>  ||  specifies a bootloader's path for H3/H5.
+
|-
+
|<partition1 dir>  ||  specifies the boot partition's path for H3/H5.
+
|-
+
|<partition2 dir>  ||  specifies the rootfs's path for H3/H5.
+
|-
+
|}
+
 
+
<br>
+
* <b>Make Uboot-2017 + Linux-4.14 ROM for H3</b>
+
All FriendlyElec's H3 boards work with a Uboot-2017 + Linux-4.14 ROM. So the steps to generate a ROM based on a BSP are the same for all FriendlyElec boards.<br>
+
If you have a bootable SD card with FriendlyCore the rootfs directory in the SD card should have all the files you need. Insert this SD card to a host PC, mount the SD card's rootfs directory (in our test it was mounted at /media/SD/rootfs) and make a ROM following the steps below:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh p1 partmap/h3_linux-4.14/partmap.txt misc/uboot-2017_h3/ part1/boot_linux-4.14_h3/ /media/SD/rootfs
+
</syntaxhighlight>
+
Replace the existing files under the directories (misc/uboot-2017_h3, part1/boot_linux-4.14_h3) with your new files. FriendlyElec will periodically update files. You can list all the files by commanding "tree":
+
<syntaxhighlight lang="bash">
+
$ tree misc/uboot-2017_h3/ part1/boot_linux-4.14_h3/
+
misc/uboot-2017_h3/
+
└── 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>
+
For all the FriendlyElec's H3 boards that works with Linux-4.14 BSP they use the same partmap file which is "partmap/h3_linux-4.14/partmap.txt".<br>
+
After running the mkimage.sh script a "out/SD-bootable-p1" directory will be generated and it will have the following files:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-p1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      └── u-boot-sunxi-with-spl.bin
+
├── SD-bootable-p1.img
+
 
+
</syntaxhighlight>
+
The "part1/boot_linux-4.14_h3/" directory will be made to a boot.img, the "part2/rootfs_demo/" directory will be made to a rootfs.img and the SD-bootable-p1.img will be the new ROM.
+
<!--
+
您可以通过如下命令迅速将其烧写到SD卡中以进行测试:
+
<syntaxhighlight lang="bash">
+
$ ./tools/sd_update -d /dev/SD -p ./out/SD-bootable-p1/your_company/partmap.txt
+
</syntaxhighlight>
+
注意: 请将/dev/sdX替换为实际的SD卡设备节点。
+
-->
+
You can use the win32diskimager utility under Windows or command "dd" under Linux to flash a SD-bootable-p1.img to an SD card.
+
 
+
<br>
+
* <b>Make Uboot-2011 + Linux-3.4 ROM for H3</b>
+
Let's take FriendlyElec's NanoPi M1 as an example, run the following command:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh p1 partmap/h3_linux-3.4/partmap.txt misc/uboot-2011_m1/ part1/boot_linux-3.4_m1/ part2/rootfs_demo/
+
</syntaxhighlight>
+
Replace the existing files under the directories with your new files.<br>
+
For all the FriendlyElec's H3 boards that works with Linux-3.4 BSP they use the same partmap file which is "partmap/h3_linux-3.4/partmap.txt".<br>
+
So if you want to make a ROM for a NanoPi M1 Plus you can run the following command:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh p1 partmap/h3_linux-3.4/partmap.txt misc/uboot-2011_m1-plus/ part1/boot_linux-3.4_m1-plus/ part2/rootfs_demo/
+
</syntaxhighlight>
+
This applies to the NanoPi NEO / NanoPi NEO Air too.
+
 
+
<br>
+
* <b>Make Uboot-2017 + Linux-4.14 Eflasher ROM for H3</b>
+
In order to make an Eflasher ROM you need to have an existing FriendlyCore ROM. A Uboot-2017 + Linux-4.14 FriendlyCore image has the following files:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-p1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      └── u-boot-sunxi-with-spl.bin
+
</syntaxhighlight>
+
 
+
If you have a bootable SD card with Eflasher, insert the SD card to a host PC, mount the SD card's rootfs directory(in our test it was mounted at the "/media/SD/rootfs-eflasher" directory) and run the following command to generate an Eflasher ROM:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh p2 partmap/h3_eflasher-4.14/partmap.txt misc/uboot-2017_h3/ part1/boot_linux-4.14_h3/ /media/SD/rootfs-eflasher out/SD-bootable-p1/
+
</syntaxhighlight>
+
After running the mkimage.sh script an "out/SD-bootable-p2" directory will be generated and it will have the following files:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-p1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      └── u-boot-sunxi-with-spl.bin
+
├── SD-bootable-p1.img
+
├── SD-bootable-p2
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── friendlyarm.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      └── u-boot-sunxi-with-spl.bin
+
└── SD-bootable-p2.img
+
</syntaxhighlight>
+
The SD-bootable-p2.img file will be the newly generated Eflasher ROM. What OS the "out/SD-bootable-p1/" contains will be the OS in this Eflasher ROM.
+
<!--
+
通过如下命令迅速将其烧写到SD卡中以进行测试:
+
<syntaxhighlight lang="bash">
+
$ ./tools/sd_update -d /dev/SD -p ./out/SD-bootable-p2/your_company/partmap.txt
+
</syntaxhighlight>
+
注意: 请将/dev/sdX替换为实际的SD卡设备节点。
+
-->
+
You can use the win32diskimager utility under Windows or command "dd" under Linux to flash a SD-bootable-p2.img to an SD card.
+
 
+
==Make Linux ROM for H5==
+
If you have compiled a U-boot, Linux kernel and a file system, and want to make a your own Linux image (ROM) with these files you can refer to the following steps:<br>
+
Download a package "rom-maker-lite.tar.gz" : [https://pan.baidu.com/s/1DSd4XYXr1yGyQTdRNQNoOw download link], extract it in host PC running Ubuntu and you will get the following directorie:
+
<syntaxhighlight lang="bash">
+
rom-maker-lite
+
</syntaxhighlight>
+
The "rom-maker-lite" directory has the script utilities which can be used to make a ROM that boots from an SD card.<br><br>
+
 
+
Currently the script utilities under the "rom-maker-lite" directory can be only used to make Linux ROMs for H3/H5. You can check its usage by running the "./mkimage.sh" script:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh
+
Usage:
+
    $ apt-get install tree dosfstools
+
    $ ./mkimage.sh <prepare type> <partmap> <misc dir> <partition1 dir> <partition2 dir>
+
        prepare type:
+
            p1: prepare misc(bootloader) + partition1.img(fat32 boot) + partition2.img(ext4 rootfs)
+
            p2: prepare misc(bootloader) + partition1.img(fat32 boot) + partition2.img(ext4 rootfs) + partition3.img(fat32 eflashed material)
+
            p3: prepare misc(bootloader) + partition1.img(ext4 boot) + partition2.img(ext4 rootfs)
+
</syntaxhighlight>
+
 
+
::{| class="wikitable"
+
|-
+
|Parameter||Comment
+
|-
+
|<prepare type>  ||  specifies a ROM type. For H3/H5 p1 means to make a FriendlyCore/Ubuntu/Debian ROM and p2 means to make an Eflasher ROM.
+
|-
+
|<partmap>  ||  specifies a partmap that is needed for making a ROM. A partmap file specifies a ROM Image's partition and components. Different platforms or different BSPs for the same platform use different partmap files.
+
|-
+
|<misc dir>  ||  specifies a bootloader's path for H3/H5.
+
|-
+
|<partition1 dir>  ||  specifies the boot partition's path for H3/H5.
+
|-
+
|<partition2 dir>  ||  specifies the rootfs's path for H3/H5.
+
|-
+
|}
+
 
+
<br>
+
* <b>Make Uboot-2017 + Linux-4.14 ROM for H5</b>
+
All FriendlyElec's H5 boards work with a Uboot-2017 + Linux-4.14 ROM. So the steps to generate a ROM based on a BSP are the same for all FriendlyElec boards.
+
If you have a bootable SD card with FriendlyCore the rootfs directory in the SD card should have all the files you need. Insert this SD card to a host PC, mount the SD card's rootfs directory (in our test it was mounted at /media/SD/rootfs) and make a ROM following the steps below
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh p1 partmap/h5_linux-4.14/partmap.txt misc/uboot-2017_h5/ part1/boot_linux-4.14_h5/ /media/SD/rootfs
+
</syntaxhighlight>
+
Replace the existing files under the directories (misc/uboot-2017_h5, part1/boot_linux-4.14_h5) with your new files. FriendlyElec will periodically update files. You can list all the files by commanding "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>
+
 
+
For all the FriendlyElec's H5 boards that works with Linux-4.14 BSP they use the same partmap file which is "partmap/h5_linux-4.14/partmap.txt".<br>
+
After running the mkimage.sh script a "out/SD-bootable-p1" directory will be generated and it will have the following files:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-p1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
├── SD-bootable-p1.img
+
 
+
</syntaxhighlight>
+
The "part1/boot_linux-4.14_h5/" directory will be made to a boot.img, the "part2/rootfs_demo/" directory will be made to a rootfs.img and the SD-bootable-p1.img will be the new ROM.
+
<!--
+
您可以通过如下命令迅速将其烧写到SD卡中以进行测试:
+
<syntaxhighlight lang="bash">
+
$ ./tools/sd_update -d /dev/SD -p ./out/SD-bootable-p1/your_company/partmap.txt
+
</syntaxhighlight>
+
注意: 请将/dev/sdX替换为实际的SD卡设备节点。
+
-->
+
You can use the win32diskimager utility under Windows or command "dd" under Linux to flash a SD-bootable-p2.img to an SD card.
+
 
+
<br>
+
* <b>Make Uboot-2014 + Linux-3.10 ROM for H5</b>
+
Let's take FriendlyElec's NanoPi NEO2 as an example, run the following command:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh p1 partmap/h5_linux-3.10/partmap.txt misc/uboot-2014_neo2/ part1/boot_linux-3.10_neo2/ part2/rootfs_demo/
+
</syntaxhighlight>
+
Replace the existing files under the directories with your new files.
+
For all the FriendlyElec's H5 boards that works with Linux-3.10 BSP they use the same partmap file which is "partmap/h5_linux-3.10/partmap.txt".
+
<br>
+
* <b>Make Uboot-2017 + Linux-4.14 Eflasher ROM for H5</b>
+
In order to make an Eflasher ROM you need to have an existing FriendlyCore ROM. A Uboot-2017 + Linux-4.14 FriendlyCore image has the following files:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-p1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
</syntaxhighlight>
+
 
+
If you have a bootable SD card with Eflasher, insert the SD card to a host PC, mount the SD card's rootfs directory(in our test it was mounted at the "/media/SD/rootfs-eflasher" directory) and run the following command to generate an Eflasher ROM:
+
<syntaxhighlight lang="bash">
+
$ ./mkimage.sh p2 partmap/h5_eflasher-4.14/partmap.txt misc/uboot-2017_h5/ part1/boot_linux-4.14_h5/ /media/SD/rootfs-eflasher out/SD-bootable-p1/
+
</syntaxhighlight>
+
After running the mkimage.sh script an "out/SD-bootable-p2" directory will be generated and it will have the following files:
+
<syntaxhighlight lang="bash">
+
$ tree out/
+
out/
+
├── SD-bootable-p1
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
├── SD-bootable-p1.img
+
├── SD-bootable-p2
+
│   └── your_company
+
│      ├── boot.img
+
│      ├── friendlyarm.img
+
│      ├── info.conf
+
│      ├── partmap.txt
+
│      ├── rootfs.img
+
│      ├── sunxi-spl.bin
+
│      └── u-boot.itb
+
└── SD-bootable-p2.img
+
</syntaxhighlight>
+
The SD-bootable-p2.img file will be the newly generated Eflasher ROM. What OS the "out/SD-bootable-p1/" contains will be the OS in this Eflasher ROM.
+
 
+
==Update Log==
+
===Sep-14-2017===
+
* Released English Version
+
  
===Jan-30-2018===
+
==Make Image File for H5==
* Updated Section 3
+
Refer to this repo: https://github.com/friendlyarm/sd-fuse_h5

Latest revision as of 11:03, 29 October 2019

查看中文

1 Make Image Files for RK3399

Refer to this repo: https://github.com/friendlyarm/sd-fuse_rk3399

2 Make Image Files for S5P4418

Refer to this repo: 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/rootfs.img 
./mk-emmc-image.sh friendlycore
dd if=out/s5p4418-eflasher-friendlycore-20190730.img of=/dev/sdX bs=32M

3 Make Image Files for S5P6818

Refer to this repo: https://github.com/friendlyarm/sd-fuse_s5p6818

4 Make Image Files for H3

Refer to this repo: https://github.com/friendlyarm/sd-fuse_h3

5 Make Image File for H5

Refer to this repo: https://github.com/friendlyarm/sd-fuse_h5