首先先编译内核的时候,应该要知道内核的编译对编译器有要求,主要有两大编译器和Clang和GCC,根据相应的平台下载,内核所对应相应版本的clang下载:
首先的配置所编译所需要的环境依赖在终端中直接运行注意切换到root用户。本文为内核编译的重点过程,请耐心观看下去
介绍一下自己的编译环境
1.设备是小米mix2s ,6+1218g,系统MIUI12.5.1
2.Linux环境 termux chroot ubutun 22.0.4 LTS
3.clang编译器版本 14.0.0-ubutun1
第一步.安装所需要的依赖软件包。
apt install git libssl-dev gcc-arm-linux-gnueabi clang build-essential libncurses5-dev bzip2 make python gcc g++ grep bc curl bison flex openssl g++-arm-linux-gnueabi lzop ccache unzip
然后进一步就是
cd
然后就是克隆相应设备的内核源代码到本地
本次以crd为的例
git clone -b 12.1-silver https://github.com/crdroidandroid/android_kernel_xiaomi_sdm845.git
这里需要特殊网络环境自行百度,克隆完成后。
打开到内核目录
cd android_kernel_xiaomi_sdm845
查看一下内核目录下,有些什么文件?ls 查看一下内核版本,等一下打补丁的时候要用到
make kernelversion
比如生成4.19,4.09这样的类型。
这里显示当前内核的版本为4.09。
然后执行一下清理命令,
make clean && rm -rf out
2.设置环境变量
个人的理解。。不知道对不对,,,进行编译 机器本身是用到相应的工具的,但是呢他又找不到,所以得有人来帮他找到指定。格式都是固定的,直接抄就行。”/usr/bin/可能要变一下,可以用find命令找一下,包括aarch64-linux-gnu-,arm-linux-gnueabi- 条目,找到后pwd查看一下路径,注意了在arm-linux-gnueabi- 的尾巴 “-“不能掉了,这是就像通配符一样,表示这以arm-linux-gnueabi的一类工具。
比如可以用命令clang –version 和gcc –version
查看对应的编译器版本或路径
mkdir -p out && export ARCH=arm64 && export SUBARCH=arm64 && export CC=clang && export CLANG_PATH="/usr/bin" && export CLANG_TRIPLE="/usr/bin/aarch64-linux-gnu-" && export CROSS_COMLILE="/usr/bin/aarch64-linux-gnu-" && export CROSS_COMPILE_ARM32="/usr/bin/arm-linux-gnueabi-"
3.打补丁。对于网络好的同学直接克隆即可。对于不好的呢,可以使用我离线下载好d的kali-nethunter-kernel.tar.gz,
复制到相应的内核目录下,然后解压
然后是patch -p1 补丁所在路径
不同内核打的补丁不一样。在内核源码目录下
用make kernel version,查看内核版本,然后打相应的补丁。
对于4.9内核的补丁 一般为安卓10的
大布丁如何打呢?
git clone https://gitlab.com/kalilinux/nethunter/build-scripts/kali-nethunter-kernel.git && patch -p1 < kali-nethunter-kernel/patches/4.09/add-wifi-injection-4.14.patch && patch -p1 < kali-nethunter-kernel/patches/4.09/fix-ath9k-naming-conflict.patch && patch -p1 < kali-nethunter-kernel/patches/4.09/add-rtl88xxau-5.6.4.2-drivers.patch
4,make deconfig
各个机型的情况可能不一样。一般格式为。make CC=clang O=out xxx_defconfig
xxx代表机型的代号,刷机的都懂,直接百度,或者直接到lineage os 查看链接里按照机型找即可。比如小米mix2S的为polaris。有的是几个机子共同用一套内核代码,比如一加8系列
就为make CC=clang O=out op8-perf_defconfig
xxx_defconfig一般在内核目录下的arch/arm64/configs文件夹内, Make的时候,改好就行。
make CC=clang O=out polaris_defconfig
5,make menuconfig
配置内核,启用一些内核的特性
注意这点,在执行这条以下这条命令的时候将终端界面收缩到最小。一定要这么做。然后进行启用相应的内核特性 用终端上的方向键,进行切换,y启用特性
n取消特性。按两次esc退回到上一目录 回车键的作用是确定,也是进入到下一目。
make CC=clang O=out menuconfig
没有回复内容