小编one*_*one的帖子

Android 10:更新内核模块

背景:我正在使用 Pixel 4,build 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
Run Code Online (Sandbox Code Playgroud)

禁用dm-verity似乎没有帮助。

我注意到 AOSP 源包含 中的所有模块/vendor/lib/modules,位于它采用内核映像形式的同一位置(在我的例子中是device/google/coral-kernel)。因此,很自然地,我尝试用我构建的模块替换那里的模块,但是在构建和刷新之后,我发现其中/vendor/lib/modules仍然包含旧模块。

AOSP 文档说不再boot.img包含 ramdisk,它现在位于system分区中。另外,OverlayFS如果我没读错的话,应该使用“供应商覆盖”来更新那里的文件。但是,在我的设备上,没有product/vendor_overlay像文档所说的那样的目录,只有product/overlay/. 我也不确定这是否是解决这个问题的正确方法,或者我将如何在我的情况下创建这样的覆盖。

谢谢

android kernel-module linux-kernel android-source android-kernel

5
推荐指数
1
解决办法
2555
查看次数