从官方未修改的源代码编译 android 内核会导致损坏的结果

Posted

技术标签:

【中文标题】从官方未修改的源代码编译 android 内核会导致损坏的结果【英文标题】:Compiling android kernel from official unmodified source gives corrupted result 【发布时间】:2021-03-20 05:20:14 【问题描述】:

我已经从三星开源网站下载了我的三星 Galaxy Tab A 2018 (SM-T590) 的内核源代码。

我正在尝试使用存档中内核给出的指令编译未修改的源代码,但是生成的内核文件约为 28MB,而可以从库存 ROM 的 boot.img 中提取的内核文件约为 13MB .

当然,28MB大的编译内核不会启动系统,当我在recovery中选择reboot to system时,它会回到下载模式。

我遵循的步骤:

1. How to Build
        - get Toolchain
                From android git serveru, codesourcery and etc ..
                - gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-

        - make output folder 
                EX) OUTPUT_DIR=out
                $ mkdir out

        - edit Makefile
                edit "CROSS_COMPILE" to right toolchain path(You downloaded).
                        EX)  CROSS_COMPILE=<android platform directory you download>/android/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
                        Ex)  CROSS_COMPILE=/usr/local/toolchain/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android- // check the location of toolchain
        - to Build
                $ export ARCH=arm64
                $ make -C $(pwd) O=$(pwd)/out KCFLAGS=-mno-android gta2xlwifi_eur_open_defconfig
                $ make -C $(pwd) O=$(pwd)/out KCFLAGS=-mno-android

2. Output files
        - Kernel : arch/arm64/boot/Image
        - module : drivers/*/*.ko

来自编译器的日志: https://pastebin.com/Fv96iAmP

【问题讨论】:

【参考方案1】:

已解决。

基本上,boot.img 中的备用内核是一个包含内核本身的压缩存档,这就是它大小不同的原因。

【讨论】:

想详细说明一下,以便未来的读者可以将其转化为可以应用于自己构建的解决方案?

以上是关于从官方未修改的源代码编译 android 内核会导致损坏的结果的主要内容,如果未能解决你的问题,请参考以下文章

android 修改代码怎样编译

Ahjesus - Android Studio 最新版集成腾讯X5内核 TBS 必定成功

android编译的时候 是如何配置默认显示横竖屏

用 KASAN 编译 AOSP 内核

S5PV210-kernel-从三星官方的内核开始移植

如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核