Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动时的Android insmod内核对象_Android_Linux Kernel_Kernel_Boot_Init - Fatal编程技术网

启动时的Android insmod内核对象

启动时的Android insmod内核对象,android,linux-kernel,kernel,boot,init,Android,Linux Kernel,Kernel,Boot,Init,我目前正在尝试在引导过程结束时对内核模块进行insmod,因此我在init.rc中创建了以下条目: on post_late_start start myscript on nonencrypted class_start late_start trigger post_late_start on property:void.decrypt=trigger_restart_framework class_start main class_start l

我目前正在尝试在引导过程结束时对内核模块进行insmod,因此我在init.rc中创建了以下条目:

on post_late_start
    start myscript

on nonencrypted
    class_start late_start
    trigger post_late_start

on property:void.decrypt=trigger_restart_framework
    class_start main
    class_start late_start
    trigger post_late_start

service myscript /data/my_sh.sh
    disabled
    oneshot
然后在my/data目录中,my_sh.sh具有以下内容:

#!/system/bin/sh
    log -t mytag -p V "Hello World!"
    insmod mymodule.ko mod_parameter=arg
但是当我运行时——有时我在logcat-s“mytag”时看不到“Hello World”标记,当然,insmoded模块也没有安装


延迟插入内核模块的正确方式是什么(它需要在网络启动和/或数据挂载后进入)。还有——如何将insmod的输出输入到日志中,以便进行调试?非常感谢您的帮助,如有必要,我可以发布更多详细信息。

我不确定您的日志,但对于insmod,您需要提供模块的确切路径,因为我认为您不会让mymodule.ko与init.rc位于同一位置。因此,请尝试给出ko文件的完整路径。 通常它位于/lib/modules/youdrivername.ko中


所以首先在这里检查一下。

至少从Froyo开始,Android
init
在中实现了
insmod
。它应该直接在
init*.rc
文件中工作:

on boot
    insmod /system/lib/modules/your-module.ko.
然而,至少在棒棒糖5.1中,它不再有效,因为SELinux规则被强制执行<代码>初始化没有所需的
系统模块
权限。因此,底层的
init_模块
系统调用返回
EPERM
。这从未向任何地方报告过。唯一的症状是
insmod
命令现在总是无法加载模块

我打开了一个关于这个的窗口。根据谷歌的说法,这是按计划进行的。如果要在强制使用SELinux时使用内核模块(他们强烈反对),则必须自己将所需的SELinux权限添加到
init