先記錄下設(shè)備以及環(huán)境
目標(biāo)設(shè)備 紅米8A
編譯環(huán)境 vmware
ubuntu 18.04
內(nèi)核kernel:小米開源
1衔沼、vmware安裝ubuntu18.04,這個應(yīng)該簡單的,直接在阿里云的鏡像站點下載:
然后進入terminal 命令行模式,用root命令執(zhí)行
2畅买、修改ubuntu軟件源
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
dpkg --add-architecture i386
apt-get update
3、安裝一些必要的工具
apt-get install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev unzip openjdk-8-jdk language-pack-zh-hans python vim
4斋否、下載代碼
git clone --depth=1 https://github.com/MiCode/Xiaomi_Kernel_OpenSource.git -b olive-q-oss
如下載慢可以用鏡像地址:
git clone --depth=1 https://hub.fastgit.org/MiCode/Xiaomi_Kernel_OpenSource.git -b olive-q-oss
5枫耳、下載跨平臺編譯鏈工具
因為googlesource 最新master分之已經(jīng)刪除了gcc編譯器,所以我們需要切換到其他的分之,或者使用官方推薦的(看小米的教程,卡在這里很久,總是提示找不到gcc),因為紅米8A為arm架構(gòu)屋剑,所以編譯器與網(wǎng)上大部分教程里面不一致润匙,采用如下鏡像下載地址:
git clone --depth=1 http://mirrors.ustc.edu.cn/aosp/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9.git -b ndk-release-r21
6、編譯前的環(huán)境變量配置
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=/home/**(這個你的賬號)/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
這里有兩點要注意的:
CROSS_COMPILE 這里的路徑請記得修改為你自己的路徑
CROSS_COMPILE 的路徑最后有一個 - , 至于為什么, 看一下這個路徑下的二進制文件的名字規(guī)則, 和Makefile是怎么寫的就明白了
7唉匾、查找并確定 defconf 文件, 這個文件的路徑一般在內(nèi)核源碼的 arch/arm64/configs 目錄下, 會有一大堆的 defconf 文件, 找到最適配你的機型的 defconf 文件, 我這里是 nitrogen_user_defconfig
8孕讳、進入內(nèi)核源碼的根目錄并開始編譯
cd Xiaomi_Kernel_OpenSource
make O=out olivelite_defconfig
make O=out -j8
編譯 success 后, 會在 out/arch/arm64/boot 目錄下生成 Image.gz-dtb 文件, 這就是編譯出來的內(nèi)核文件
- 使用AnyKernel2 #https://github.com/osm0sis/AnyKernel2 , 按照說明替換你的
Image.gz-dtb
文件并編輯anykernel.sh
文件. 里面的參數(shù)非常非常非常簡單, 按照自己的實際需求編輯一下里面的參數(shù)并打包成zip文件. 或者更簡單的, 你找一個你的設(shè)備的第三方內(nèi)核zip包, 建議在不解壓的情況下直接刪除zip包里面的Image.gz-dtb
并替換成你的Image.gz-dtb
文件即可. - 進入twrp, 刷入這個zip文件, 開機. 如果出問題, anykernel.sh里面可以配置日志的路徑, 你可以查看日志相關(guān)的信息.
- 如果你想將其打包成 boot.img 文件, 上小米官網(wǎng)下載手機對應(yīng)的官方線刷包, 解壓出來在images目錄下有 boot.img, 使用 unpackbootimg 工具將這個img解開, 把你的Image.gz-dtb替換進去并用 mkbootimg 重新打包成 boot.img 即可.
- 注意, 刷入后你的 WIFI 可能不能正常工作, 原因和解決方案在這里: https://github.com/MiCode/Xiaomi_Kernel_OpenSource/wiki/FAQ