概括
我在跑Ubuntu 20.04.1使用默认内核 5.4.0-42-通用(从 Main 安装)在 UEFI 系统上。我想加载两个内核模块(“阿什门“ 和 ”粘合剂”)。至少对我来说,“binder”在启用安全启动的情况下加载得很好,但“ashmem”加载得不好不是在启用安全启动的情况下加载。 两个都在禁用安全启动的情况下加载模块。
细节
内核软件包(从主程序安装)
Linux 标头-5.4.0-42
Linux 标头-5.4.0-42-通用
Linux-映像-5.4.0-42-通用
Linux 模块-5.4.0-42-通用
Linux 模块-额外-5.4.0-42-通用
安全启动已禁用
在禁用安全启动的情况下,我能使用以下命令加载模块“ashmem”:
sudo modprobe ashmem_linux
此外,在禁用安全启动的情况下,我能使用以下命令加载模块“binder”:
sudo modprobe binder_linux
安全启动一切顺利已禁用。
安全启动已启用
启用安全启动后,我可以不是使用以下命令加载模块“ashmem”:
sudo modprobe ashmem_linux
尝试这样做后,我得到以下信息:
modprobe: ERROR: could not insert 'ashmem_linux': Operation not permitted
然而,即使启用了安全启动,我能使用以下命令仍可毫无问题地加载模块“binder”:
sudo modprobe binder_linux
所以,我很困惑为什么“binder”在启用安全启动的情况下加载,而“ashmem”却加载不是在启用安全启动的情况下加载。
值得一提的是,我在使用安全启动时没有遇到任何其他问题。
问题
有没有办法在启用安全启动的情况下强制加载“ashmem”?
在启用安全启动的情况下无法加载“ashmem”是一个功能还是一个错误?
如果这是一个错误,那么在 Launchpad 上哪里是报告该错误的最佳地点?
附录
针对上述内容,我要补充一点,我在最初的Ubuntu 20.04 的全新安装。即便如此,遵循出色的建议由林兹温德,我运行了以下命令后初始安装:
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
运行上述程序后,我重新运行:
sudo modprobe ashmem_linux
sudo modprobe binder_linux
lsmod | grep -e ashmem_linux -e binder_linux
成功!“ashmem”和“binder”均已加载!谢谢林兹温德!!
更重要的是,Anbox现在就开始启用安全启动,这是我的最终目标。:)
鉴于“ashmem”和“binder”现在都可以在启用安全启动的情况下加载,我将这个问题标记为已回答。但是,我注意到有关“binder”模块的另一个错误。对于那些感兴趣的人,我发布了一个与该错误相关的问题这里。
答案1
您需要对模块进行签名。看起来可以使用以下方法完成:
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