Difference between revisions of "Linux kernel on Orange Pi 4"
| (10 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
'''Prerequisite:''' [[U-Boot on Orange Pi 4]] | '''Prerequisite:''' [[U-Boot on Orange Pi 4]] | ||
| − | '''Next steps:''' [[ | + | '''Next steps:''' [[Linux rootfs on Orange Pi 4]] |
{{Todo|THIS!}} | {{Todo|THIS!}} | ||
| + | |||
| + | == Overview == | ||
| + | In order to build a [[Linux kernel]] you'll need: | ||
| + | # Linux kernel source | ||
| + | # (optional) Patches to add support for the specific hardware | ||
| + | # Cross-compilation toolchain if building on a different device than [[Orange Pi 4]] | ||
| + | |||
| + | == Setup == | ||
| + | === Linux kernel === | ||
| + | {{Todo|Git clone}} | ||
| + | |||
| + | === Kernel patches === | ||
| + | {{Todo|Switch to a [[Mainline Linux]]. Right now we're using a [[BSP Linux kernel]] which already supports [[Orange Pi 4]].}} | ||
| + | |||
| + | {{Todo|...orangepi-4.dtb was not added to the ...arch/arm64/boot/dts/rockchip/Makefile}} | ||
| + | |||
| + | === Cross-compilation === | ||
| + | This is needed only if you're building on a different architecture, e.g. on an x86_64 computer. | ||
| + | |||
| + | {{Todo|Linaro + instructions?}} | ||
| + | |||
| + | <pre>CROSS_COMPILE=/path/to/toolchain/bin/aarch64-linux-gnu-</pre> | ||
== Compiling == | == Compiling == | ||
| − | ... | + | {{Todo|compilation}} |
| + | |||
| + | Generate .config file | ||
| + | <pre>cd linux | ||
| + | make ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE rk3399_linux_defconfig</pre> | ||
| + | |||
| + | Compile the kernel | ||
| + | <pre>CORES=4 # number of CPU cores | ||
| + | make ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE -j${CORES} rk3399-orangepi.img</pre> | ||
| + | |||
| + | To compile DTBs, most notably {{code|rk3399-orangepi-4.dtb}}: | ||
| + | {{code-block|1= | ||
| + | make ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE dtbs | ||
| + | }} | ||
| + | |||
| + | You should see something like this at the end of the compilation: | ||
| + | <pre>Pack to resource.img successed! | ||
| + | Image: resource.img (with rk3399-orangepi.dtb logo.bmp logo_kernel.bmp) is ready | ||
| + | Image: boot.img (with Image resource.img) is ready | ||
| + | Image: zboot.img (with Image.lz4 resource.img) is ready</pre> | ||
| + | |||
| + | {{Todo|Customize boot logo.}} | ||
| + | |||
| + | {{Todo|Modules? Img to flash? boot.img}} | ||
== Flashing == | == Flashing == | ||
| + | {{Todo|Building an SD Card image file would be better}} | ||
| + | {{Todo|Don't flash the kernel. Ignore this for now}} | ||
<pre>dd if=boot.img of=sdb seek=32768</pre> | <pre>dd if=boot.img of=sdb seek=32768</pre> | ||
| Line 19: | Line 66: | ||
== External Links == | == External Links == | ||
| − | * Mainline Linux kernel [https://www.kernel.org/] | + | * [[Mainline Linux]] kernel [https://www.kernel.org/] |
** Github mirror [https://github.com/torvalds/linux] | ** Github mirror [https://github.com/torvalds/linux] | ||
| − | * Rockchip Kernel [opensource.rock-chips.com/wiki_Rockchip_Kernel] | + | * [[Rockchip]] Kernel [http://opensource.rock-chips.com/wiki_Rockchip_Kernel] |
| − | * Xunlong BSP kernel [https://github.com/orangepi-xunlong/OrangePiRK3399_kernel] | + | * [[Xunlong]] [[BSP kernel]] [https://github.com/orangepi-xunlong/OrangePiRK3399_kernel] |
| − | ** instructions [http://www.orangepi.org/Docs/Building.html] | + | ** instructions for older [[Orange Pi|Orange Pis]] [http://www.orangepi.org/Docs/Building.html] |
| + | ** compilation script [https://github.com/orangepi-xunlong/OrangePiRK3399_scripts/blob/master/kernel_compile.sh] | ||
* [[Armbian]] kernel patches [https://github.com/armbian/build/tree/master/patch/kernel] | * [[Armbian]] kernel patches [https://github.com/armbian/build/tree/master/patch/kernel] | ||
Latest revision as of 00:03, 29 March 2020
Using Linux kernel on an Orange Pi 4.
This page is focused just on building a kernel. For the related required components, see Linux on Orange Pi 4.
Prerequisite: U-Boot on Orange Pi 4
Next steps: Linux rootfs on Orange Pi 4
TODO: THIS!
Contents
Overview
In order to build a Linux kernel you'll need:
- Linux kernel source
- (optional) Patches to add support for the specific hardware
- Cross-compilation toolchain if building on a different device than Orange Pi 4
Setup
Linux kernel
TODO: Git clone
Kernel patches
TODO: Switch to a Mainline Linux. Right now we're using a BSP Linux kernel which already supports Orange Pi 4.
TODO: ...orangepi-4.dtb was not added to the ...arch/arm64/boot/dts/rockchip/Makefile
Cross-compilation
This is needed only if you're building on a different architecture, e.g. on an x86_64 computer.
TODO: Linaro + instructions?
CROSS_COMPILE=/path/to/toolchain/bin/aarch64-linux-gnu-
Compiling
TODO: compilation
Generate .config file
cd linux make ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE rk3399_linux_defconfig
Compile the kernel
CORES=4 # number of CPU cores
make ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE -j${CORES} rk3399-orangepi.img
To compile DTBs, most notably rk3399-orangepi-4.dtb:
make ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE dtbs
You should see something like this at the end of the compilation:
Pack to resource.img successed! Image: resource.img (with rk3399-orangepi.dtb logo.bmp logo_kernel.bmp) is ready Image: boot.img (with Image resource.img) is ready Image: zboot.img (with Image.lz4 resource.img) is ready
TODO: Customize boot logo.
TODO: Modules? Img to flash? boot.img
Flashing
TODO: Building an SD Card image file would be better TODO: Don't flash the kernel. Ignore this for now
dd if=boot.img of=sdb seek=32768
Related
External Links
- Mainline Linux kernel [1]
- Github mirror [2]
- Rockchip Kernel [3]
- Xunlong BSP kernel [4]
- instructions for older Orange Pis [5]
- compilation script [6]
- Armbian kernel patches [7]