Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "Zero/dev/kernel"

< Zero‎ | dev
 
(One intermediate revision by the same user not shown)
Line 5: Line 5:
 
=== Build, pack and install Radxa Zero Kernel ===
 
=== Build, pack and install Radxa Zero Kernel ===
  
Below is the instructions of how to build and pack Radxa Zero kernel on a Ubuntu 20.04 HOST PC.
+
Below we will show you how to build, pack, and install Radxa Zero kernel with a Ubuntu 20.04 HOST PC.
And install kernel packages on Radxa Zero.
+
  
 
==== Hardware Required ====
 
==== Hardware Required ====
Line 12: Line 11:
 
* Radxa Zero
 
* Radxa Zero
 
* USB A to C cable
 
* USB A to C cable
* A PC/laptop running Linux(Ubuntu 18.04 or higher)
+
* A PC/laptop running Ubuntu 18.04 or higher
  
==== Install necessary tools ====
+
==== Set up build environment ====
 
+
$ sudo apt-get install -y gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev
+
$ sudo apt-get install -y bc python dosfstools flex build-essential libssl-dev mtools bison flex bison git wget
+
 
+
Get the toolchain
+
  
 +
$ sudo apt update
 +
$ sudo apt install gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev bc python dosfstools flex build-essential libssl-dev mtools bison flex bison git wget
 
  $ wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
 
  $ wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
 
  $ sudo tar xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz -C /opt
 
  $ sudo tar xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz -C /opt
  
==== Get Kernel Source ====
+
==== Get kernel source code ====
  
 
  $ mkdir ~/radxa-zero-sdk
 
  $ mkdir ~/radxa-zero-sdk
Line 30: Line 26:
 
  $ git clone https://github.com/radxa/kernel.git -b linux-5.10.y-radxa-zero
 
  $ git clone https://github.com/radxa/kernel.git -b linux-5.10.y-radxa-zero
  
==== Build Kernel ====
+
==== Build kernel ====
  
 
  $ cd kernel
 
  $ cd kernel
Line 37: Line 33:
 
  $ make radxa_zero_defconfig
 
  $ make radxa_zero_defconfig
 
  $ make -j8
 
  $ make -j8
 
And we will get kernel image
 
 
 
  $ ls arch/arm64/boot/Image
 
  $ ls arch/arm64/boot/Image
  arch/arm64/boot/Image
+
  arch/arm64/boot/Image                                                         # this is the kernel image
 
+
and Radxa Zero device tree.
+
 
+
 
  $ ls arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dtb
 
  $ ls arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dtb
  arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dtb
+
  arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dtb                         # this is the device tree blob
  
 
==== Pack Kernel ====
 
==== Pack Kernel ====
Line 53: Line 43:
 
  $ export CROSS_COMPILE=/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
 
  $ export CROSS_COMPILE=/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
 
  $ make radxa_zero_defconfig
 
  $ make radxa_zero_defconfig
  $ export build_id="999" # make sure it's big enough so that our kernel is the newest.
+
  $ export build_id="999"                                                       # make sure it's big enough so that our kernel is newer than package from apt repository
 
  $ export lv="-$build_id-amlogic"
 
  $ export lv="-$build_id-amlogic"
 
  $ export kv=$(make kernelversion)
 
  $ export kv=$(make kernelversion)
 
  $ export debv="$kv$lv"
 
  $ export debv="$kv$lv"
  $ make bindeb-pkg -j8   LOCALVERSION=$lv   KDEB_PKGVERSION=$debv
+
  $ make bindeb-pkg -j8 LOCALVERSION=$lv KDEB_PKGVERSION=$debv # for packing on non Debian system you may need `DPKG_FLAGS=-d` to skip dependency check
  
The generated packages are(the kernel revision name maybe different):  
+
The generated packages are (the kernel revision name might be different, in our case it is 5.10.69):  
  
 
  $ ls  ../*.deb
 
  $ ls  ../*.deb
Line 68: Line 58:
 
==== Install Kernel on Radxa Zero ====
 
==== Install Kernel on Radxa Zero ====
  
Copy linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb and linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb to your Radxa Zero.
+
Copy '''linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb''' and '''linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb''' to your Radxa Zero. Then install with following commands:
Install it on Radxa Zero.
+
  
 
  rock@zero:~$ sudo dpkg -i linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb
 
  rock@zero:~$ sudo dpkg -i linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb
 
  rock@zero:~$ sudo dpkg -i linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb
 
  rock@zero:~$ sudo dpkg -i linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb
  
Reboot you will have the new kernel booting.
+
Reboot into your new kernel.
 
+
==== FAQs ====
+
 
+
 
+
==== Troubleshooting ====
+
 
+
If you have an issue, start a new post on the forum https://forum.radxa.com/c/zero.
+

Latest revision as of 01:59, 11 January 2022

    Radxa Zero >  Development >  Kernel

Build, pack and install Radxa Zero Kernel

Below we will show you how to build, pack, and install Radxa Zero kernel with a Ubuntu 20.04 HOST PC.

Hardware Required

  • Radxa Zero
  • USB A to C cable
  • A PC/laptop running Ubuntu 18.04 or higher

Set up build environment

$ sudo apt update 
$ sudo apt install gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev bc python dosfstools flex build-essential libssl-dev mtools bison flex bison git wget
$ wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
$ sudo tar xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz -C /opt

Get kernel source code

$ mkdir ~/radxa-zero-sdk
$ cd ~/radxa-zero-sdk
$ git clone https://github.com/radxa/kernel.git -b linux-5.10.y-radxa-zero

Build kernel

$ cd kernel
$ export ARCH=arm64
$ export CROSS_COMPILE=/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
$ make radxa_zero_defconfig
$ make -j8
$ ls arch/arm64/boot/Image
arch/arm64/boot/Image                                                          # this is the kernel image
$ ls arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dtb
arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dtb                          # this is the device tree blob

Pack Kernel

$ export ARCH=arm64
$ export CROSS_COMPILE=/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
$ make radxa_zero_defconfig
$ export build_id="999"                                                        # make sure it's big enough so that our kernel is newer than package from apt repository
$ export lv="-$build_id-amlogic"
$ export kv=$(make kernelversion)
$ export debv="$kv$lv"
$ make bindeb-pkg -j8 LOCALVERSION=$lv KDEB_PKGVERSION=$debv # for packing on non Debian system you may need `DPKG_FLAGS=-d` to skip dependency check

The generated packages are (the kernel revision name might be different, in our case it is 5.10.69):

$ ls  ../*.deb
../linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb
../linux-libc-dev_5.10.69-999-amlogic_arm64.deb
../linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb

Install Kernel on Radxa Zero

Copy linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb and linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb to your Radxa Zero. Then install with following commands:

rock@zero:~$ sudo dpkg -i linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb
rock@zero:~$ sudo dpkg -i linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb

Reboot into your new kernel.