记录

  1. 设置交叉编译工具链和环境

下载工具链并解压到/usr/local/

wget https://dl.radxa.com/tools/linux/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz
sudo tar zxvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz -C /usr/local/

~/.bashrc末尾添加下面的内容:

export PATH="/usr/local/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH"

使环境生效:

    source ~/.bashrc
  1. 同步源代码
    mkdir ~/rk3588-sdk && cd ~/rk3588-sdk
    git clone -b linux-5.10-gen-rkr3.4 https://github.com/radxa/kernel.git --depth=1
    git clone -b master https://github.com/radxa/rkbin.git --depth=1
    git clone -b debian https://github.com/radxa/build.git --depth=1
  1. 修改build/kernel-package.mk

CROSS_COMPILE这一行改成这个:

    CROSS_COMPILE="/usr/local/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-"
  1. 编译 && 打包
    cd ~/rk3588-sdk
    cd kernel
    export ARCH=arm64
    export CROSS_COMPILE=aarch64-none-linux-gnu-
    make rockchip_linux_defconfig
    make menuconfig
    make savedefconfig
    cp defconfig arch/arm64/configs/rockchip_linux_defconfig
    cd ..
    ./build/mk-kernel.sh rk3588-rock-5b
    ./build/pack-kernel.sh -d rockchip_linux_defconfig -r 17

make menuconfig这一步增加开启的内核选项如下(UPROBES默认开着的),前三个是malior要用的,后面是eBPF要用的:

    CONFIG_PSI
    CONFIG_ASHMEM
    CONFIG_ANDROID_BINDERFS
    CONFIG_KPROBES
    CONFIG_KRETPROBES
    CONFIG_IKHEADERS
    CONFIG_FTRACE_SYSCALLS
    CONFIG_FUNCTION_TRACER

如果要另外生成btf文件用来eBPF程序使用,那么还要开启CONFIG_DEBUG_INFO_BTF,主要是Android Docker里面跑eBPF程序

不过在生成的时候可能有些坑,具体可以看看这篇文章:

安卓通用内核编译零碎记录

主要是给./kernel/scripts/link-vmlinux.sh里面的gen_btf添加下面的设置

--skip_encoding_btf_vars --skip_encoding_btf_enum64

    • *

其他:最开始我在rock5b上配置好了defconfig,后面在x86主机上交叉编译直接拿来用,弹出下面的提示,所以还是手动配一遍吧:)

2023-05-17T08:04:22.png

Ref

文章目录

接单JS逆向/安卓逆向/小程序逆向 微信:cjh-18888