Difference between revisions of "Template:RK3399-BuildFromSource"
(→Make Your Own OS Image) |
(→Make Your Own OS Image) |
||
Line 98: | Line 98: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | After compilation is done a kernel.img and a resource.img will be generated. You can simply copy them to replace the existing files in your eflasher SD card. We assume your SD card's FRIENDLYARM partition is mounted at the FRIENDLYARM directory and you can run the following commands: | + | After compilation is done a kernel.img and a resource.img will be generated. You can simply copy them to replace the existing files in your eflasher SD card. We assume your SD card's FRIENDLYARM partition is mounted at the FRIENDLYARM directory and you can run the following commands to update system: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# for Lubuntu | # for Lubuntu | ||
Line 109: | Line 109: | ||
cp kernel.img resource.img /media/FRIENDLYARM/friendlydesktop-arm64/ | cp kernel.img resource.img /media/FRIENDLYARM/friendlydesktop-arm64/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Or you can use a USB Type-C cable and the Linux_Upgrade_Tool utility to update system. | |
− | === | + | ===Compile FriendlyCore/FriendlyDesktop/Lubuntu U-boot Source Code=== |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
git clone https://gitlab.com/friendlyelec/rk3399-nougat --depth 1 -b nanopc-t4-nougat | git clone https://gitlab.com/friendlyelec/rk3399-nougat --depth 1 -b nanopc-t4-nougat | ||
Line 120: | Line 120: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | After compilation is done a uboot.img, a trust.img and a rk3399_loader_v1.12.109.bin will be generated. You need to rename the rk3399_loader_v1.12.109.bin to "MiniLoaderAll.bin" and copy it to replace the existing file in your eflasher SD card. We assume your SD card's FRIENDLYARM partition is mounted at the FRIENDLYARM directory. You can run the following commands to update system: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# for Lubuntu | # for Lubuntu | ||
Line 134: | Line 134: | ||
cp rk3399_loader_v1.12.109.bin /media/FRIENDLYARM/friendlydesktop-arm64/MiniLoaderAll.bin | cp rk3399_loader_v1.12.109.bin /media/FRIENDLYARM/friendlydesktop-arm64/MiniLoaderAll.bin | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Or you can use a USB Type-C cable and the Linux_Upgrade_Tool utility to update system. | |
===制作用于量产的启动卡或者烧写文件=== | ===制作用于量产的启动卡或者烧写文件=== | ||
如果要自已做启动卡,或制作用于批量生产的img文件,可参考这个github仓库:[https://github.com/friendlyarm/sd-fuse_rk3399 sd-fuse_rk3399]<br /> | 如果要自已做启动卡,或制作用于批量生产的img文件,可参考这个github仓库:[https://github.com/friendlyarm/sd-fuse_rk3399 sd-fuse_rk3399]<br /> |
Revision as of 02:49, 16 November 2018
Contents
- 1 Make Your Own OS Image
1 Make Your Own OS Image
1.1 Setup Development Environment
In order to compile an Android image we suggest you do it on a 64 bit Ubuntu 16.04 system and install the following packages:
sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip sudo apt-get install flex curl libncurses5-dev libssl-dev zlib1g-dev gawk minicom sudo apt-get install openjdk-8-jdk sudo apt-get install exfat-fuse exfat-utils device-tree-compiler liblz4-tool
For more details refer to https://source.android.com/source/initializing.html;
Or you can do it in Docker: friendlyelec-android-docker
1.2 Install Cross Compiler
1.2.1 Install aarch64-linux-gcc 6.4
This compiler can be used to compile a Linux kernel and u-boot. You can do it by running the following commands:
git clone https://github.com/friendlyarm/prebuilts.git sudo mkdir -p /opt/FriendlyARM/toolchain sudo tar xf prebuilts/gcc-x64/aarch64-cortexa53-linux-gnu-6.4.tar.xz -C /opt/FriendlyARM/toolchain/
Add the compiler's directory to the PATH variable by appending the following lines to the ~/.bashrc file:
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin:$PATH export GCC_COLORS=auto
Run the ~/.bashrc script to make it effective in the current commandline. Note: there is a space after ".":
. ~/.bashrc
This is a 64 bit compiler and cannot work on a 32 bit Linux system. You can test if your compiler is installed correctly by running the following commands:
aarch64-linux-gcc -v Using built-in specs. COLLECT_GCC=aarch64-linux-gcc COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/6.4-aarch64/libexec/gcc/aarch64-cortexa53-linux-gnu/6.4.0/lto-wrapper Target: aarch64-cortexa53-linux-gnu Configured with: /work/toolchain/build/aarch64-cortexa53-linux-gnu/build/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=aarch64-cortexa53-linux-gnu --prefix=/opt/FriendlyARM/toolchain/6.4-aarch64 --with-sysroot=/opt/FriendlyARM/toolchain/6.4-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-languages=c,c++ --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --with-cpu=cortex-a53 ... Thread model: posix gcc version 6.4.0 (ctng-1.23.0-150g-FA)
1.3 Compile Android8.1 Source Code
1.3.1 Download Android8.1 Source Code
{{{1}}} source code is maintained in gitlab, You can download it by running the following command:
git clone https://gitlab.com/friendlyelec/rk3399-android-8.1 --depth 1 -b master
1.3.2 Generate Image File
You can compile an Android7 source code and generate an image file:
cd rk3399-android-8.1 ./build-nanopc-t4.sh -F -M
1.3.3 Update System with New Image
After compilation is done a new image file will be generated in the "rockdev/Image-nanopc_t4/" directory under Android 8.1's source code directory. You can follow the steps below to update the OS in {{{1}}}:
1) Insert an SD card which is processed with EFlasher to an SD card reader and insert this reader to a PC running Ubuntu. The SD card's partitions will be automatically mounted;
2) Copy all the files under the "rockdev/Image-nanopc_t4/" directory to the SD card's android8 directory in the "FRIENDLYARM" partition;
3) Insert this SD card to {{{1}}} and reflash Android
Here is an alternative guide to update OS: sd-fuse_rk3399
1.4 Compile Android7 Source Code
1.4.1 Download Android7 Source Code
{{{1}}} source code is maintained in gitlab. You can download it by running the following command:
git clone https://gitlab.com/friendlyelec/rk3399-nougat --depth 1 -b nanopc-t4-nougat
1.4.2 Generate Image File
You can compile an Android7 source code and generate an image file:
cd rk3399-nougat ./build-nanopc-t4.sh -F -M
1.4.3 Update System with New Image
After compilation is done a new image file will be generated in the "rockdev/Image-nanopc_t4/" directory under Android7's source code directory. You can follow the steps below to update the OS in {{{1}}}:
1) Insert an SD card which is processed with EFlasher to an SD card reader and insert this reader to a PC running Ubuntu. The SD card's partitions will be automatically mounted;
2) Copy all the files under the "rockdev/Image-nanopc_t4/" directory to the SD card's android8 directory in the "FRIENDLYARM" partition;
3) Insert this SD card to {{{1}}} and reflash Android
Here is an alternative guide to update OS: sd-fuse_rk3399
1.5 Compile FriendlyCore/FriendlyDesktop/Lubuntu's Kernel
git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi4-linux-v4.4.y kernel-rockchip cd kernel-rockchip make ARCH=arm64 nanopi4_linux_defconfig export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH make ARCH=arm64 nanopi4-images
After compilation is done a kernel.img and a resource.img will be generated. You can simply copy them to replace the existing files in your eflasher SD card. We assume your SD card's FRIENDLYARM partition is mounted at the FRIENDLYARM directory and you can run the following commands to update system:
# for Lubuntu cp kernel.img resource.img /media/FRIENDLYARM/lubuntu/ # for FriendlyCore cp kernel.img resource.img /media/FRIENDLYARM/friendlycore-arm64/ # for FriendlyDesktop cp kernel.img resource.img /media/FRIENDLYARM/friendlydesktop-arm64/
Or you can use a USB Type-C cable and the Linux_Upgrade_Tool utility to update system.
1.6 Compile FriendlyCore/FriendlyDesktop/Lubuntu U-boot Source Code
git clone https://gitlab.com/friendlyelec/rk3399-nougat --depth 1 -b nanopc-t4-nougat cd rk3399-nougat/u-boot make CROSS_COMPILE=aarch64-linux- rk3399_defconfig export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH make CROSS_COMPILE=aarch64-linux-
After compilation is done a uboot.img, a trust.img and a rk3399_loader_v1.12.109.bin will be generated. You need to rename the rk3399_loader_v1.12.109.bin to "MiniLoaderAll.bin" and copy it to replace the existing file in your eflasher SD card. We assume your SD card's FRIENDLYARM partition is mounted at the FRIENDLYARM directory. You can run the following commands to update system:
# for Lubuntu cp uboot.img trust.img /media/FRIENDLYARM/lubuntu cp rk3399_loader_v1.12.109.bin /media/FRIENDLYARM/lubuntu/MiniLoaderAll.bin # for FriendlyCore cp uboot.img trust.img /media/FRIENDLYARM/friendlycore-arm64 cp rk3399_loader_v1.12.109.bin /media/FRIENDLYARM/friendlycore-arm64/MiniLoaderAll.bin # for FriendlyDesktop cp uboot.img trust.img /media/FRIENDLYARM/friendlydesktop-arm64 cp rk3399_loader_v1.12.109.bin /media/FRIENDLYARM/friendlydesktop-arm64/MiniLoaderAll.bin
Or you can use a USB Type-C cable and the Linux_Upgrade_Tool utility to update system.
1.7 制作用于量产的启动卡或者烧写文件
如果要自已做启动卡,或制作用于批量生产的img文件,可参考这个github仓库:sd-fuse_rk3399