背景:我正在使用 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