Difference between revisions of "Building U-boot and Linux for H5/H3/H2+"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
 
(84 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[H3 Mainline U-boot & Linux/zh|查看中文]]
+
[[Building U-boot and Linux for H5/H3/H2+/zh|查看中文]]
  
==Mainline 简介==
+
==Introduction to Linux Mainline==
Mainline即主线的意思,Linux内核的开发分为linus维护的主线、其他开发分支以及各种稳定版本。开发分支最终都会统一提交到linus维护的主线中。
+
Linux kernel distributions have several lines. The Mainline is maintained by Linus. Other variants and distributions are maintained by various groups and organizations. All the variants and distributions are submitted to Linux and will be merged to the Mainline.
最新版本的U-boot和主线Linux内核已经支持了全志的H3 CPU,我们在最新版本的的U-boot和主线Linux内核的基础上进行了定制开发,使其能支持上NanoPi H3系列的开发板。
+
The latest mainline of U-boot and Linux kernel already has support for H3/H5 SoC. FriendlyElec customized the latest mainline u-boot and Linux kernel and made that u-boot and kernel work for all FriendlyElec's H5/H3/H2+ boards.<br>
 +
Note: all the operations and instructions listed in this topic only apply to Linux-4.14.y. Don't apply them to H5-Linux-3.10/H3-Linux-3.4 .
  
==制作一张带运行系统的SD卡==
+
==Features==
===下载系统固件===
+
* [http://wiki.friendlyelec.com/wiki/index.php/File:Sunxi-mainline-kernel-4.14-features.xlsx Sunxi-mainline-kernel-4.14-features]
首先访问[https://pan.baidu.com/s/1cAaWMi 下载地址]下载需要的固件文件(officail-ROMs目录)和烧写工具(tools目录):<br />
+
<!--
 +
* [http://wiki.friendlyelec.com/wiki/index.php/File:Sunxi-mainline-kernel-4.16-features.xlsx Sunxi-mainline-kernel-4.16-features]
 +
-->
  
 +
<!---
 +
==Mainline ROM Features==
 +
===FriendlyCore===
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|colspan=2|使用以下固件:
+
|Index|| NanoPi NEO     
 
|-
 
|-
|h3-mainline-ubuntu-core-qte-sd4g.img.zip      || Ubuntu-Core with Qt-Embedded系统固件,仅支持NanoPi NEO                 
+
|1  ||  U-boot-2017.03 and Linux-4.10.y
 
|-
 
|-
|colspan=2|烧写工具:  
+
|2 |Dynamic CPU frequency and voltage scaling         
 
|-
 
|-
|win32diskimager.rar || Windows平台下的系统烧写工具,Linux平台下可以用dd命令烧写系统
+
||| 100M Ethernet, Static MAC address   
 
|-  
 
|-  
|}
+
|||  1 x USB Host
 
+
===制作Ubuntu-Core with Qt-Embedded系统TF卡===
+
将固件 h3-mainline-ubuntu-core-qte-sd4g.img.zip 和烧写工具 win32diskimager.rar 分别解压,在 Windows 下插入TF卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具,
+
在 win32diskimager 工具的界面上,选择你的SD卡盘符,选择系统固件,点击 Write 按钮烧写即可。烧写完成后,将制作好SD卡插入 NanoPi H3 开发板,使用USB供电(5V/2A),看到板上的蓝色LED闪烁,这说明系统已经开始启动了。<br />
+
 
+
==Mainline ROM特性==
+
===Ubuntu-Core with Qt-Embedded===
+
::{| class="wikitable"
+
 
|-
 
|-
|序号|| NanoPi NEO     
+
||| Good support for various USB WiFi chips
 
|-
 
|-
|1 ||  使用U-boot-2017.03和Linux-4.10.y
+
|6 ||  Automatic resizing of file system on first boot
 
|-
 
|-
|2  ||  支持CPU频率和CPU电压动态调节         
+
|7  ||  File system check on system boot
|-
+
|3  ||  支持100M以太网,MAC地址固定   
+
|-
+
|4  ||  支持1路USB Host
+
|-
+
|5  ||  支持多款USB WiFi
+
|-
+
|6  ||  支持第一次开机自动扩展文件系统
+
|-
+
|7  ||  支持开机修复文件系统
+
 
|}
 
|}
 +
--->
  
==如何编译==
+
==How to Compile Linux-4.14 BSP==
===安装交叉编译器===
+
===How to Compile Linux-4.14 BSP for H3/H2+===
首先下载并解压编译器:
+
====Install Cross Compiler====
 +
Visit here [http://download.friendlyelec.com/nanopineo download link] and enter the toolchain directory to download the cross compiler:arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz and extract it:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/prebuilts.git
+
$ mkdir -p /opt/FriendlyARM/toolchain
sudo mkdir -p /opt/FriendlyARM/toolchain
+
$ tar xf arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/
sudo tar xf prebuilts/gcc-x64/arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/
+
 
</syntaxhighlight>
 
</syntaxhighlight>
  
然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:
+
Add the compiler's path to the "PATH" variable by appending the following lines in the ~/.bashrc file:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
+
$ export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
export GCC_COLORS=auto
+
$ export GCC_COLORS=auto
 
</syntaxhighlight>
 
</syntaxhighlight>
  
执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
+
Run the ~/.bashrc script to make the changes in effect immediately in your working shell. Attention: there is a space after ".":
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
. ~/.bashrc
+
$ . ~/.bashrc
 
</syntaxhighlight>
 
</syntaxhighlight>
  
这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:
+
This is a 64-bit compiler and it cannot run on a 32-bit Linux. You can check whether or not your compiler is setup correctly by running the following commands:
 +
<!---
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
arm-linux-gcc -v
+
$arm-linux-gcc -v
 
Using built-in specs.
 
Using built-in specs.
 
COLLECT_GCC=arm-linux-gcc
 
COLLECT_GCC=arm-linux-gcc
Line 79: Line 69:
 
...
 
...
 
Thread model: posix
 
Thread model: posix
 +
gcc version 4.9.3 (ctng-1.21.0-229g-FA)
 +
</syntaxhighlight>
 +
--->
 +
<syntaxhighlight lang="bash">
 +
$ arm-linux-gcc -v
 
gcc version 4.9.3 (ctng-1.21.0-229g-FA)
 
gcc version 4.9.3 (ctng-1.21.0-229g-FA)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===编译U-boot===
+
====Compile U-boot====
下载U-boot源码,切换到分支master-h3:
+
Download the U-boot source code and enter the master-h3 branch:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/uboot.git
+
$ git clone https://github.com/friendlyarm/u-boot.git -b sunxi-v2017.x --depth 1
cd u-boot
+
git checkout master-h3
+
 
</syntaxhighlight>
 
</syntaxhighlight>
  
编译U-boot:
+
Compile U-boot:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
make nanopi_h3_defconfig
+
$ apt-get install swig python-dev python3-dev
make
+
$ make nanopi_h3_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
 +
$ make ARCH=arm CROSS_COMPILE=arm-linux-
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
Although this configuration file was originally made for the NanoPi M1 Plus it works for other H3 based boards too.
 +
After compilation is done successfully a "u-boot-sunxi-with-spl.bin" file will be generated.
 +
<br>
 +
Update the u-boot in your installation SD card in a PC host:
 +
<syntaxhighlight lang="bash">
 +
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
 +
$ sync && eject /dev/sdX
 +
</syntaxhighlight>
 +
Please replace "/dev/sdx" with your TF card's device name recognized by your system.<br>
 +
The "sync" command writes data to your TF card. The "eject" command ejects your TF card safely.<br>
  
更新SD上的U-boot:
+
When your system boots from an SD card you can use the "scp" command to copy the "u-boot-sunxi-with-spl.bin" file to your board first and then use the "dd" command to update the U-boot in the SD card:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
+
$ scp u-boot-sunxi-with-spl.bin root@192.168.1.230:/root/
 +
$ dd if=/root/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
 
</syntaxhighlight>
 
</syntaxhighlight>
/dev/sdx请替换为实际的TF卡设备文件名。
+
<br>
  
===编译Linux内核===
+
If your board has eMMC flash and boots from eMMC you can use the "scp" command to copy the "u-boot-sunxi-with-spl.bin" file to your board first and then use the "dd" command to update the U-boot in eMMC:
下载Linux内核源码:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/linux.git
+
$ scp u-boot-sunxi-with-spl.bin root@192.168.1.230:/root/
cd linux
+
$ dd if=/root/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
git checkout h3-4.10.y
+
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
The boot device's name recognized by system under NanoPi H3/H2+ is always "/dev/mmcblk0".
  
编译Linux内核:
+
====Compile and Update Linux Kernel====
 +
Download Linux Kernel Source Code:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
touch .scmversion
+
$ git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1
make sunxi_defconfig
+
make zImage dtbs
+
 
</syntaxhighlight>
 
</syntaxhighlight>
编译完成后会在arch/arm/boot/目录下生成zImage,并且在arch/arm/boot/dts/目录下生成dtb文件。
 
  
假设SD卡的boot分区挂载在/media/SD/boot/,更新SD卡上的zImage和dtb文件:
+
Compile Linux Kernel:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
cp arch/arm/boot/zImage /media/SD/boot/
+
$ cd linux
cp arch/arm/boot/dts/sun8i-h3-nanopi*.dtb /media/SD/boot/
+
$ touch .scmversion
 +
$ make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
 +
$ make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux-
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
If your compilation is successful a zImage will be generated under "arch/arm/boot/" and a dtb file will be generated under "arch/arm/boot/dts/".
 +
 +
If your SD card's boot partition is mounted at "/media/SD/boot/" you can update its zImage and dtb files by running the following commands:
 +
<syntaxhighlight lang="bash">
 +
$ cp arch/arm/boot/zImage /media/SD/boot/
 +
$ cp arch/arm/boot/dts/sun8i-*-nanopi-*.dtb /media/SD/boot/
 +
</syntaxhighlight>
 +
 +
Compile and Update Modules:
 +
<syntaxhighlight lang="bash">
 +
$ cd linux
 +
$ make modules ARCH=arm CROSS_COMPILE=arm-linux-
 +
</syntaxhighlight>
 +
 +
If your SD card's rootfs partition is mounted at "/media/SD/rootfs/" you can update its modules by running the following commands:
 +
<syntaxhighlight lang="bash">
 +
$ cd linux
 +
$ make modules_install INSTALL_MOD_PATH=/media/SD/rootfs/ ARCH=arm CROSS_COMPILE=arm-linux-
 +
</syntaxhighlight>
 +
 +
===How to Compile Mainline BSP for H5===
 +
====Install Cross Compiler====
 +
Visit here [http://download.friendlyelec.com/nanopineo2 download link] and enter the toolchain directory to download the cross compiler gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz and extract it:
 +
<syntaxhighlight lang="bash">
 +
$ mkdir -p /opt/FriendlyARM/toolchain
 +
$ tar xf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt/FriendlyARM/toolchain/
 +
</syntaxhighlight>
 +
 +
Add the compiler's path to the "PATH" variable by appending the following lines in the ~/.bashrc file:
 +
<syntaxhighlight lang="bash">
 +
$ export PATH=/opt/FriendlyARM/toolchain/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin:$PATH
 +
$ export GCC_COLORS=auto
 +
</syntaxhighlight>
 +
 +
Run the ~/.bashrc script to make the changes in effect immediately in your working shell. Attention: there is a space after ".":
 +
<syntaxhighlight lang="bash">
 +
$ . ~/.bashrc
 +
</syntaxhighlight>
 +
 +
You can check whether or not your compiler is setup correctly by running the following commands:
 +
<syntaxhighlight lang="bash">
 +
$ aarch64-linux-gnu-gcc -v
 +
gcc version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)
 +
</syntaxhighlight>
 +
 +
====Compile U-boot====
 +
Download the U-boot source code and enter the master-h3 branch:
 +
<syntaxhighlight lang="bash">
 +
$ git clone https://github.com/friendlyarm/u-boot.git -b sunxi-v2017.x --depth 1
 +
</syntaxhighlight>
 +
 +
Compile U-boot:
 +
<syntaxhighlight lang="bash">
 +
$ apt-get install swig python-dev python3-dev
 +
$ make nanopi_h5_defconfig CROSS_COMPILE=aarch64-linux-gnu-
 +
$ make CROSS_COMPILE=aarch64-linux-gnu-
 +
</syntaxhighlight>
 +
The "nanopi_h5_defconfig" works for all existing FriendlyElec's H5 based boards.
 +
 +
Update U-boot on SD Card:
 +
<syntaxhighlight lang="bash">
 +
$ dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8
 +
$ dd if=u-boot.itb of=/dev/sdX bs=1024 seek=40
 +
</syntaxhighlight>
 +
Note: you need to replace "/dev/sdx" with the device name in your system.
 +
 +
====Compile Linux Kernel====
 +
Download Linux Kernel Source Code:
 +
<syntaxhighlight lang="bash">
 +
$ git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1
 +
</syntaxhighlight>
 +
 +
Compile and Update Linux Kernel:
 +
<syntaxhighlight lang="bash">
 +
$ cd linux
 +
$ touch .scmversion
 +
$ make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
 +
$ make Image dtbs ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
 +
</syntaxhighlight>
 +
If your compilation is successful an Image will be generated under "arch/arm64/boot/" and a dtb file will be generated under "arch/arm64/boot/dts/allwinner/".
 +
 +
If your SD card's boot partition is mounted at "/media/SD/boot/" you can update its Image and dtb files by running the following commands:
 +
<syntaxhighlight lang="bash">
 +
$ cp arch/arm64/boot/Image /media/SD/boot/
 +
$ cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /media/SD/boot/
 +
</syntaxhighlight>
 +
 +
Compile and Update Modules:
 +
<syntaxhighlight lang="bash">
 +
$ cd linux
 +
$ make modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
 +
</syntaxhighlight>
 +
 +
If your SD card's rootfs partition is mounted at "/media/SD/rootfs/" you can update its modules by running the following commands:
 +
<syntaxhighlight lang="bash">
 +
$ cd linux
 +
$ make modules_install INSTALL_MOD_PATH=/media/SD/rootfs/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
 +
</syntaxhighlight>
 +
 +
==Update Log==
 +
===March-05-2017===
 +
* Released English Version
 +
 +
===May-05-2017===
 +
* Added Section 3 by adding a mainline kernel development timetable
 +
* Added Section 4.4 by adding support for H5
 +
 +
===June-04-2017===
 +
* Updated section 2.1: updated image files' version numbers
 +
 +
===July-02-2017===
 +
* Updated section 1, 3.1.2 and 3.2.2
 +
 +
===Dec-12-2017===
 +
* Updated sections 3.1.2 and 3.2.2
 +
 +
===August-28-2019===
 +
* Updated sections 3.1.2 and 3.2.2

Latest revision as of 07:17, 21 February 2022

查看中文

1 Introduction to Linux Mainline

Linux kernel distributions have several lines. The Mainline is maintained by Linus. Other variants and distributions are maintained by various groups and organizations. All the variants and distributions are submitted to Linux and will be merged to the Mainline. The latest mainline of U-boot and Linux kernel already has support for H3/H5 SoC. FriendlyElec customized the latest mainline u-boot and Linux kernel and made that u-boot and kernel work for all FriendlyElec's H5/H3/H2+ boards.
Note: all the operations and instructions listed in this topic only apply to Linux-4.14.y. Don't apply them to H5-Linux-3.10/H3-Linux-3.4 .

2 Features


3 How to Compile Linux-4.14 BSP

3.1 How to Compile Linux-4.14 BSP for H3/H2+

3.1.1 Install Cross Compiler

Visit here download link and enter the toolchain directory to download the cross compiler:arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz and extract it:

$ mkdir -p /opt/FriendlyARM/toolchain
$ tar xf arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/

Add the compiler's path to the "PATH" variable by appending the following lines in the ~/.bashrc file:

$ export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
$ export GCC_COLORS=auto

Run the ~/.bashrc script to make the changes in effect immediately in your working shell. Attention: there is a space after ".":

$ . ~/.bashrc

This is a 64-bit compiler and it cannot run on a 32-bit Linux. You can check whether or not your compiler is setup correctly by running the following commands:

$ arm-linux-gcc -v
gcc version 4.9.3 (ctng-1.21.0-229g-FA)

3.1.2 Compile U-boot

Download the U-boot source code and enter the master-h3 branch:

$ git clone https://github.com/friendlyarm/u-boot.git -b sunxi-v2017.x --depth 1

Compile U-boot:

$ apt-get install swig python-dev python3-dev
$ make nanopi_h3_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
$ make ARCH=arm CROSS_COMPILE=arm-linux-

Although this configuration file was originally made for the NanoPi M1 Plus it works for other H3 based boards too. After compilation is done successfully a "u-boot-sunxi-with-spl.bin" file will be generated.
Update the u-boot in your installation SD card in a PC host:

$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
$ sync && eject /dev/sdX

Please replace "/dev/sdx" with your TF card's device name recognized by your system.
The "sync" command writes data to your TF card. The "eject" command ejects your TF card safely.

When your system boots from an SD card you can use the "scp" command to copy the "u-boot-sunxi-with-spl.bin" file to your board first and then use the "dd" command to update the U-boot in the SD card:

$ scp u-boot-sunxi-with-spl.bin root@192.168.1.230:/root/
$ dd if=/root/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8


If your board has eMMC flash and boots from eMMC you can use the "scp" command to copy the "u-boot-sunxi-with-spl.bin" file to your board first and then use the "dd" command to update the U-boot in eMMC:

$ scp u-boot-sunxi-with-spl.bin root@192.168.1.230:/root/
$ dd if=/root/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8

The boot device's name recognized by system under NanoPi H3/H2+ is always "/dev/mmcblk0".

3.1.3 Compile and Update Linux Kernel

Download Linux Kernel Source Code:

$ git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1

Compile Linux Kernel:

$ cd linux
$ touch .scmversion
$ make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
$ make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux-

If your compilation is successful a zImage will be generated under "arch/arm/boot/" and a dtb file will be generated under "arch/arm/boot/dts/".

If your SD card's boot partition is mounted at "/media/SD/boot/" you can update its zImage and dtb files by running the following commands:

$ cp arch/arm/boot/zImage /media/SD/boot/
$ cp arch/arm/boot/dts/sun8i-*-nanopi-*.dtb /media/SD/boot/

Compile and Update Modules:

$ cd linux
$ make modules ARCH=arm CROSS_COMPILE=arm-linux-

If your SD card's rootfs partition is mounted at "/media/SD/rootfs/" you can update its modules by running the following commands:

$ cd linux
$ make modules_install INSTALL_MOD_PATH=/media/SD/rootfs/ ARCH=arm CROSS_COMPILE=arm-linux-

3.2 How to Compile Mainline BSP for H5

3.2.1 Install Cross Compiler

Visit here download link and enter the toolchain directory to download the cross compiler gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz and extract it:

$ mkdir -p /opt/FriendlyARM/toolchain
$ tar xf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt/FriendlyARM/toolchain/

Add the compiler's path to the "PATH" variable by appending the following lines in the ~/.bashrc file:

$ export PATH=/opt/FriendlyARM/toolchain/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin:$PATH
$ export GCC_COLORS=auto

Run the ~/.bashrc script to make the changes in effect immediately in your working shell. Attention: there is a space after ".":

$ . ~/.bashrc

You can check whether or not your compiler is setup correctly by running the following commands:

$ aarch64-linux-gnu-gcc -v
gcc version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)

3.2.2 Compile U-boot

Download the U-boot source code and enter the master-h3 branch:

$ git clone https://github.com/friendlyarm/u-boot.git -b sunxi-v2017.x --depth 1

Compile U-boot:

$ apt-get install swig python-dev python3-dev
$ make nanopi_h5_defconfig CROSS_COMPILE=aarch64-linux-gnu-
$ make CROSS_COMPILE=aarch64-linux-gnu-

The "nanopi_h5_defconfig" works for all existing FriendlyElec's H5 based boards.

Update U-boot on SD Card:

$ dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8
$ dd if=u-boot.itb of=/dev/sdX bs=1024 seek=40

Note: you need to replace "/dev/sdx" with the device name in your system.

3.2.3 Compile Linux Kernel

Download Linux Kernel Source Code:

$ git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1

Compile and Update Linux Kernel:

$ cd linux
$ touch .scmversion
$ make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
$ make Image dtbs ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

If your compilation is successful an Image will be generated under "arch/arm64/boot/" and a dtb file will be generated under "arch/arm64/boot/dts/allwinner/".

If your SD card's boot partition is mounted at "/media/SD/boot/" you can update its Image and dtb files by running the following commands:

$ cp arch/arm64/boot/Image /media/SD/boot/
$ cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /media/SD/boot/

Compile and Update Modules:

$ cd linux
$ make modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

If your SD card's rootfs partition is mounted at "/media/SD/rootfs/" you can update its modules by running the following commands:

$ cd linux
$ make modules_install INSTALL_MOD_PATH=/media/SD/rootfs/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

4 Update Log

4.1 March-05-2017

  • Released English Version

4.2 May-05-2017

  • Added Section 3 by adding a mainline kernel development timetable
  • Added Section 4.4 by adding support for H5

4.3 June-04-2017

  • Updated section 2.1: updated image files' version numbers

4.4 July-02-2017

  • Updated section 1, 3.1.2 and 3.2.2

4.5 Dec-12-2017

  • Updated sections 3.1.2 and 3.2.2

4.6 August-28-2019

  • Updated sections 3.1.2 and 3.2.2