gpt4 book ai didi

安卓10 : Update kernel modules

转载 作者:行者123 更新时间:2023-12-04 04:00:08 25 4
gpt4 key购买 nike

背景:我正在使用 Pixel 4,构建 QQ2A.200501.001.B2 ,即Android 10。当我从官方来源构建内核并刷新它时,触摸屏,wlan和其他功能不起作用。我追查到 /vendor/lib/modules 中的内核模块。不要更新,因此新内核无法加载其中任何一个。我试过只刷两个boot.img和整个 AOSP,同样的问题,它们没有得到更新。我可以通过手动将我构建的内核模块推送到设备并手动 insmod 来解决此问题。以正确的顺序排列它们。
所以我的问题是:

  • 为什么他们不首先更新?
  • 闪存时如何将它们与内核一起更新?
  • 或者,如何在刷新后永久更新它们?

  • 当然必须有一个“官方”的方式来做到这一点?内核模块通常是如何部署的?

    一些注意事项:
    我无法将它们推送到 /vendor/lib/modules因为我无法重新挂载 /vendor可写:
    flame:/ # mount -o rw,remount /vendor                                                                                                                                                   
    '/dev/block/dm-5' is read-only
    禁用 dm-verity似乎没有帮助。
    我注意到 AOSP 源包含 /vendor/lib/modules 中的所有模块,在它采用内核镜像形式的同一个地方(在我的例子中是 device/google/coral-kernel )。所以很自然,我尝试用我构建的模块替换那里的模块,但是在构建和闪烁之后,我看到 /vendor/lib/modules仍然包含旧模块。
    The AOSP docs sayboot.img不再包含 ramdisk,它现在位于 system分区。另外, OverlayFS如果我没看错的话,应该使用“供应商覆盖”来更新那里的文件。但是,在我的设备上,没有 product/vendor_overlay像文档说的目录,只有 product/overlay/ .我也不确定这是否是解决这个问题的正确方法,或者我将如何在我的情况下创建这样的叠加层。
    谢谢

    最佳答案

    好的。几个问题,几个答案:

  • 为什么他们不首先更新?
  • 因为它们应该在/vendor/lib/modules 中,并且当您重新编译内核时,您只是创建了进入 boot.img 的内核二进制文件。
  • 闪存时如何将它们与内核一起更新?

  • 您可以将模块编译到内核中。这会使您的内核更大一些,但您无需插入这些模块。
  • 或者,如何在刷新后永久更新它们?

  • 您确实可以像尝试过的那样修改/vendor - 但不能修改 DM-verity block 设备(在您的情况下为/dev/block/dm-5) - 底层分区(/dev/block/sd?#,某事,哪个您可以查看是否查看来自/dev/block/by-name/vendor 的链接)。
    警告:这将导致 dm-verity 挂载/vendor 失败,除非您正确禁用 dm-verity!
    另一个尝试测试的途径:Linux 内核模块有严格的 vermagic 要求(简单来说,模块字符串必须匹配内核的 'uname -r',以确保关键的内核结构没有被修改)。如果您不更改内核魔法(来自 Makefile 的 VERSION、PATCHLEVEL、SUBLEVEL 和 EXTRAVERSION)(或将它们“伪造”为设备随附的原始内核版本),则模块应该加载。

    关于安卓10 : Update kernel modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63174162/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com