📜  只需5个简单步骤即可编译我们自己的Android内核

📅  最后修改于: 2021-05-13 15:45:03             🧑  作者: Mango

Android内核可帮助应用程序与设备的硬件组件进行通信。

例如:

  1. 我们大多数人都熟悉游戏模式。它的作用是指示处理器和图形处理单元以其最大频率运行。
  2. 另一个例子是省电模式。它指示处理器和图形处理单元以其最小频率运行。

需要编译我们自己的内核:编译我们自己的内核可能非常有用,因为:

  • 使用我们自己的内核,可以根据需要进一步优化用户体验
  • 它还可以帮助开源开发。

编译我们自己的内核的步骤:

  1. 先决条件:以下是编译我们自己的Android内核所需的先决条件:
    • Ubuntu或任何其他基于Linux的操作系统
    • 熟悉基本的Linux命令
    • 熟悉Github
    • 设备源代码

    注意:本文适用于具有64位Snapdragon SOC的设备

  2. 安装依赖项打开终端并粘贴以下内容:
    sudo apt-get install
         git ccache automake flex lzop bison \
         gperf build-essential zip curl
             zlib1g-dev zlib1g-dev:i386 \
         g++-multilib python-networkx 
             libxml2-utils bzip2 libbz2-dev \
         libbz2-1.0 libghc-bzlib-dev 
             squashfs-tools pngcrush \
         schedtool dpkg-dev liblz4-tool 
             make optipng maven libssl-dev \
         pwgen libswitch-perl policycoreutils 
             minicom libxml-sax-base-perl \
         libxml-simple-perl bc
             libc6-dev-i386 lib32ncurses5-dev \
         x11proto-core-dev libx11-dev 
             lib32z-dev libgl1-mesa-dev xsltproc unzip
    
  3. 下载所需文件:
    • 在本地磁盘上克隆设备源:
      mkdir mykernel
        git clone {link to your device kernel source}
      
    • 下载兼容的GCC工具链。在本文中,使用了AOSP的GCC。
      cd mykernel
         git clone https://android.googlesource.com/platform/
                   prebuilts/gcc/linux-x86/aarch64/
                   aarch64-linux-android-4.9
         toolchain
      
    • 下载兼容的CLANG工具链。在本文中,将使用AOSP的CLANG。
    • 将下载的文件移到mykernel文件夹中,然后使用以下命令解压缩:
      tar vxzf linux-x86-android-9.0.0_r48-clang-4691093.tar.gz
      
  4. 编译内核:
    cd mykernel
    rm -rf out
    mkdir out
    export ARCH=arm64
    export SUBARCH=arm64
    export DTC_EXT=dtc
      
    make O=out ARCH=arm64 {device defconfig}
      
    PATH="${PWD}/bin:${PWD}/toolchain/bin:${PATH}" \
    make -j$(nproc --all) O=out \
                          ARCH=arm64 \
                          CC=clang \
                          CLANG_TRIPLE=aarch64-linux-gnu- \
                          CROSS_COMPILE=aarch64-linux-android-
                          | tee kernel.log
    

    在这里,将{device defconfig}替换为配置文件的名称。您可以在/ arch / arm64 / configs文件夹中找到它。

  5. 引导编译的内核:
    • 浏览到/ out / arch / arm64 / boot并找到Image-dtb文件(编译的zImage)并复制该文件。
    • 下载Android Image Kitchen并反编译您的启动映像。反编译后,您会在反编译的文件夹中找到原始的zImage。将其替换为先前复制的映像,然后重新编译启动映像。
    • 使用以下命令通过fastboot刷新:
      fastboot flash boot mykernel.img
      
  6. 处理遇到的错误: mykernel文件夹中将生成一个kernel.log文件。找到显示错误的行并搜索解决方案。另外,在论坛上发帖寻求帮助时,请不要忘记附加日志文件。

这将是基本内核,一旦成功启动,便可以添加更多功能。