Mix2S的内核编译以及添加驱动
引
前几天一直在用小米 usb type-c 带 rj45 网口的转换器,学校断网后,通过 jmusupplicant 实现不断网,无奈在我的 Mac 下安装不了 Ubuntu,虚拟机安装之后网卡桥接只有在 Ubuntu 下上网,而且在虚拟机下显存只有 128mb 超级卡,后来在 Mac 上编译 jmusupplicant 有些.h 库文件在 Mac 上无对应的,因此编译失败,于是突发奇想在 Mix2s 上将 jmusupplicant 编译成 elf 文件运行,然而在运行时 wifi0 无法发送心跳包导致依然无法上网,最后决定将转换器接上 mix2s 上网。
环境准备:
ubuntu 18.04.LTS
小米 mix2s 内核源码 :https://github.com/MiCode/Xiaomi_Kernel_OpenSource
交叉编译工具 toolchain:
git clone https://bitbucket.org/jonascardoso/toolchain_aarch64_travis
apt install gcc make g++
开始编译:
下载并解压 toolchain
下载下来后 toolchain_aarch64_travis 文件夹重命名为 Toolchain,放进小米 kernel 的目录下,终端输入 sh aptess.sh 选择编译的对象 这里选 7
原理其实是选择设备配置文件,arch/arm64/configs 这个文件夹里有设备文件夹。
当然可以直接通过 make menuconfig 用界面裁剪配置内核。(比较麻烦 23333)
打开终端, 输入 sudo gedit /etc/profile 在末尾添加环境变量
vim ~/.bash_profile
并将下面内容添入
export ANDROID_AARCH64=/home/ubuntu/桌面/Toolchain/google_gcc/aarch64-linux-android-4.9/bin/
export ARCH=arm64
export SUBARCH=arm64
export PATH=$PATH:$ANDROID_AARCH64
接下来
source /etc/profile && . /etc/profile
重新指定 O=输出目录才正常,否则编译过程中会报错,无法生成 image.gz.dtb 文件之类
指定 make 目录终端输入如下命令进行生成 .config 文件
cd Kernel
mkdir output
make O=output leo_user_defconfig
cd output
make O=output
在 /Kernel/arch/arm64/configs/
下, 里面可能有很多手机代号, 你可以查看你的手机的内核信息, 或者 手机的 system/build.prop 里有你的代号
leo_user_defconfig 其中的 leo 就是代表的 小米 NotePro
make O=output 代表重定向输出目录, 并且开始编译 , 也可以使用 make -j3 O=output, j3 代表 系统的 CPU 的线程数,比如我的 i7-8700k 是 12 线程,则为 make -j12
刷写 boot.img 并替换内核
在 win 下, 使用 Android Image Kitchen (软件请百度,注意分 6.x 7.x 8.x 可用版本)
先取出你的手机 ROM 中的 boot.img 拖到 unpackimg.bat 去解包, 然后把 image.gz-dtb 该文件替换掉原本的内核文件 split_img/boot.img-zImage
然后执行 repackimg.bat 得到 image-new.img
执行如下命令 刷入
adb reboot bootloader && fastboot flash boot C:\你的路径\image-new.img && fastboot reboot