我正在尝试构建 android-x86https://www.android-x86.org/source.html使用 ubuntu 20 的分支 q-x86。我按照说明安装了页面上提到的所有依赖项。但我遇到了以下错误。我不知道如何处理它。谷歌搜索对我一点帮助都没有。
DEPMOD 4.19.175-android-x86-gad005d7cff5c
"depmod" is not allowed to be used. See https://android.googlesource.com/platform/build/+/master/Changes.md#PATH_Tools for more information.
make[1]: *** [/home/nadir/androidx86/kernel/Makefile:1404: _modinst_post] Error 1
make[1]: Leaving directory '/home/nadir/androidx86/out/target/product/x86/obj/kernel'
make: *** [Makefile:146: sub-make] Error 2
make: Leaving directory '/home/nadir/androidx86/kernel'
FAILED: [W][2021-05-16T08:15:17-0400][535663] void cmdline::logParams(nsjconf_t *)():250 Process will be UID/EUID=0 in the global user namespace, and will have user root-level access to files
[W][2021-05-16T08:15:17-0400][535663] void cmdline::logParams(nsjconf_t *)():260 Process will be GID/EGID=0 in the global user namespace, and will have group root-level access to files
08:41:17 ninja failed with: exit status 1
如何处理这个问题,因为错误中提到的 URL 在这种情况下没有帮助。在该页面上甚至没有提到任何时间 depmode 或与之相关的任何内容。
答案1
在我遇到同样的问题后,我弄清楚了发生了什么。正如我所看到的,答案在技术上可以在错误提供的链接中找到,但是错误和修复并没有太大的关联。我试图通过授予我的非 root 用户无需密码即可执行的权限来解决此问题depmod
。sudo
经过反复试验,我发现调用 depmod 的行位于 的第 20 行和第 48 行kernel/scripts/depmod.sh
,我通过在前面添加 sudo 修改了这两行并重新启动了构建。但是,我收到了另一个错误,“不允许使用 sudo”。这真的引起了我的思考。
所以我查看了他们提供的 AOSP 源代码链接。在“PATH 工具”部分,它指出:
该构建已开始限制外部主机工具可在构建中使用。...
这让我想到了两种解决问题的方法。第一种可能是最简单的方法,就是TEMPORARY_DISABLE_PATH_RESTRICTIONS=true
在构建内核的命令后添加。您可能猜到了,这将禁用不允许 depmod 命令的限制。另一种方法是打开文件并添加如下build/soong/ui/build/paths/config.go
行:"depmod": Allowed,
“date”: Allowed,
“dd”: Allowed,
“depmod”: Allowed,
“diff”: Allowed,
“egrep”: Allowed,
这两种方法都让我能够按预期构建内核。但是,这只是一种解决方法,我无法确定这是 Ubuntu 问题还是 Android x86 开发人员的疏忽。可能需要提出补丁,但由于我对 Android 内核生态系统了解不多,因此我无法知道是否只需将命令添加到允许的配置中即可解决问题。