美文网首页
红米8A内核编译过程记录

红米8A内核编译过程记录

作者: 一条咸鱼_9667 | 来源:发表于2021-11-27 16:46 被阅读0次

    先记录下设备以及环境
    目标设备 红米8A
    编译环境 vmware
    ubuntu 18.04
    内核kernel:小米开源

    1、vmware安装ubuntu18.04,这个应该简单的,直接在阿里云的镜像站点下载:

    http://mirrors.aliyun.com/ubuntu-releases/18.04/

    然后进入terminal 命令行模式,用root命令执行
    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分之已经删除了gcc编译器,所以我们需要切换到其他的分之,或者使用官方推荐的(看小米的教程,卡在这里很久,总是提示找不到gcc),因为红米8A为arm架构,所以编译器与网上大部分教程里面不一致,采用如下镜像下载地址:

    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、编译前的环境变量配置

    export ARCH=arm
    export SUBARCH=arm
    export CROSS_COMPILE=/home/**(这个你的账号)/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
    

    这里有两点要注意的:
    CROSS_COMPILE 这里的路径请记得修改为你自己的路径
    CROSS_COMPILE 的路径最后有一个 - , 至于为什么, 看一下这个路径下的二进制文件的名字规则, 和Makefile是怎么写的就明白了

    7、查找并确定 defconf 文件, 这个文件的路径一般在内核源码的 arch/arm64/configs 目录下, 会有一大堆的 defconf 文件, 找到最适配你的机型的 defconf 文件, 我这里是 nitrogen_user_defconfig

    8、进入内核源码的根目录并开始编译

    cd  Xiaomi_Kernel_OpenSource
    
    make O=out olivelite_defconfig
    make O=out -j8
    

    编译 success 后, 会在 out/arch/arm64/boot 目录下生成 Image.gz-dtb 文件, 这就是编译出来的内核文件

    • 使用AnyKernel2 #https://github.com/osm0sis/AnyKernel2 , 按照说明替换你的Image.gz-dtb 文件并编辑 anykernel.sh 文件. 里面的参数非常非常非常简单, 按照自己的实际需求编辑一下里面的参数并打包成zip文件. 或者更简单的, 你找一个你的设备的第三方内核zip包, 建议在不解压的情况下直接删除zip包里面的 Image.gz-dtb 并替换成你的 Image.gz-dtb 文件即可.
    • 进入twrp, 刷入这个zip文件, 开机. 如果出问题, anykernel.sh里面可以配置日志的路径, 你可以查看日志相关的信息.
    • 如果你想将其打包成 boot.img 文件, 上小米官网下载手机对应的官方线刷包, 解压出来在images目录下有 boot.img, 使用 unpackbootimg 工具将这个img解开, 把你的Image.gz-dtb替换进去并用 mkbootimg 重新打包成 boot.img 即可.
    • 注意, 刷入后你的 WIFI 可能不能正常工作, 原因和解决方案在这里: https://github.com/MiCode/Xiaomi_Kernel_OpenSource/wiki/FAQ

    相关文章

      网友评论

          本文标题:红米8A内核编译过程记录

          本文链接:https://www.haomeiwen.com/subject/adcqxrtx.html