How to build megi's Pinehpone kernel
If you want to use my kernel branch, you'll need to build it first. By building it yourself, you'll be able to tune the kernel configuration, or add further patches.
My kernel's main integration branch is
orange-pi-$VERSION
. No other branch is supposed to work alone. My
defconfigs are tested and work on the boards I support. Read the README.md for more info.
Only my branches based on the current mainline kernel branch are maintained (those are usually the -rc# kernels!). You can find the current mainline version here https://www.kernel.org/ (mainline: …)
What you'll need
First make sure you have the basic dependencies needed to build the kernel:
- aarch64 gcc cross-compiler (eg.
aarch64-linux-gnu-gcc
package on Arch Linux) - basic
development utilities, like
make
(eg.base-devel
package group on Arch Linux)
Get the source code
First clone my kernel tree:
# create a workspace directory for all the build artifacts mkdir megi-kernel cd megi-kernel # clone my kernel's git repository (shallow clone) git clone --depth=1 -b orange-pi-5.16 https://github.com/megous/linux
Copy
the following code to a build.sh
file:
# Original pinephone CONFIG=pinephone_defconfig DTB=allwinner/sun50i-a64-pinephone-1.2.dtb # Pinephone Pro #CONFIG=pinephone_pro_defconfig #DTB=rockchip/rk3399-pinephone-pro.dtb SRC=linux CWD=`pwd` export KBUILD_OUTPUT="$CWD/build" export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- ${CROSS_COMPILE}gcc -v 2>/dev/null || { echo "Missing cross-compiler ${CROSS_COMPILE}gcc" exit 1 } set -e mkdir -p "$KBUILD_OUTPUT" "$CWD/out" test -f "$KBUILD_OUTPUT/.config" || make -C "$SRC" "$CONFIG" # Uncomment if you want to customize the configuration #make -C "$SRC" menuconfig make -C "$SRC" -j32 Image dtbs modules make -C "$SRC" modules_install INSTALL_MOD_PATH="$CWD/out/modules" cp -f "$KBUILD_OUTPUT/arch/arm64/boot/Image" "$CWD/out/Image" cp -f "$KBUILD_OUTPUT/arch/arm64/boot/dts/$DTB" "$CWD/out/board.dtb"
Build the kernel:
bash build.sh
Firmware files
You may need some firmware files that are available in https://megous.com/…ux-firmware/
git clone https://megous.com/git/linux-firmware/
They are probably already included in your Linux distribution, unless you're building a new one.
If you want to bundle the necessary firmware files into the
kernel build, search the defconfig files in
linux/arch/arm64/configs
for:
#CONFIG_EXTRA_FIRMWARE="..." #CONFIG_EXTRA_FIRMWARE_DIR="/path/to/linux-firmware"
Uncomment
the lines, fix the CONFIG_EXTRA_FIRMWARE_DIR
path, delete the build
directory and re-build the kernel.