ls -1 /dev/{ashmem,binder} 为 /dev/ashmem 产生预期结果,但为 /dev/binder 产生错误

Giz*_*ken 3 kernel modprobe secure-boot anbox

背景

在另一篇文章中,我报告说:

我在UEFI 系统上运行带有默认内核 5.4.0-42-generic(从 Main 安装)的Ubuntu 20.04.1。我想在启用安全启动的情况下加载两个内核模块(“ ashmem ”和“ binder ”)。至少对我来说,“binder”在启用安全启动的情况下加载良好,但在启用安全启动的情况下无法加载“ashmem” 。两个模块都在禁用安全启动的情况下加载。

对于上述内容,我将补充说我在Ubuntu 20.04的初始干净安装期间启用了安全启动(并注册了 MOK)。即便如此,按照Rinzwind提供的优秀建议,我在初始安装运行了以下内容:

sudo kmodsign sha512 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der /lib/modules/`uname -r`/kernel/drivers/staging/android/ashmem_linux.ko
Run Code Online (Sandbox Code Playgroud)

运行上述命令后,我重新运行:

sudo modprobe ashmem_linux

sudo modprobe binder_linux

lsmod | grep -e ashmem_linux -e binder_linux
Run Code Online (Sandbox Code Playgroud)

成功!“ashmem”和“binder”都加载了!由于Rinzwind

更重要的是,Anbox现在开始为我启用安全启动,这是我的最终目标。:)

错误信息

尽管“ashmem”和“binder”现在都加载了,并且Anbox现在在启用安全启动的情况下为我启动(并且似乎可以正常工作),但我仍然运行以下命令:

ls -1 /dev/{ashmem,binder}
Run Code Online (Sandbox Code Playgroud)

我获得了以下信息:

ls: cannot access '/dev/binder': No such file or directory
/dev/ashmem
Run Code Online (Sandbox Code Playgroud)

现在,我仍然很好奇为什么我会收到关于“binder”模块的上述错误(“无法访问'/dev/binder':没有这样的文件或目录”),以及我是否应该担心。

问题

  1. 加载“binder”模块时应该创建 /dev/binder 吗?(错误应该与我有关吗?)
  2. 如果在加载“binder”模块时应该创建/dev/binder,我如何强制创建/dev/binder?
  3. 如果 /dev/binder 应该在加载“binder”模块时创建(也就是说,如果我发现了一个错误),我应该在 Launchpad 上的哪个位置报告错误?

重申一下,根据 lsmod,“ashmem”和“binder”都会加载。此外,在启用安全启动的情况下,Anbox 现在似乎对我来说正常工作。我在这里发帖是为了 (a) 满足我自己的好奇心,(b) 为其他人记录这一点,以及 (c) 确定是否应该提交关于活页夹的错误报告(以及在何处提交,如果有必要)。

Giz*_*ken 5

更仔细地查看Anbox安装页面,我注意到以下内容:

在 Ubuntu 19.10 中,binder 驱动程序在加载时不会创建 /dev/binder。那是故意的。相反,它提供了对 binderfs 的支持(参见 https://brauner.github.io/2019/01/09/android-binderfs.html),这是因为 PR anbox/anbox#1309

虽然上面没有特别提到 Ubuntu 20.04 的情况,但我这同样适用于它。考虑到这一点,以下是我自己问题的建议答案:

  1. 不,/dev/binder 不应在加载“binder”模块时创建。(并且错误消息不应该与我有关。)
  2. 没有必要(也可能没有办法)强制创建 /dev/binder。
  3. 无需在 Launchpad(或其他地方)上报告此错误。

如果有人想提供替代(更好)的答案,请随时提供。我会将这个问题保留几天,但如果在接下来的几天内没有看到任何其他答案/评论,我会将其标记为已回答。:)