在Nexus S中插入可加载内核模块重新启动它

时间:2013-03-13 13:03:53

标签: android linux linux-kernel

我从source.android.com下载了三星内核并构建了它。然后我首先安装了CWM Recovery映像,然后根据我的Nexus S(Android 4.1.1)。现在我想在其中插入简单的可加载内核模块(LKM),但是当我通过在ADB shell上编写insmod hello.ko命令来插入我的模块时,设备会在2-3秒后自动重新启动。

以下是我的LKM代码。

#include <linux/module.h>
#include <linux/kernel.h>


int init_module(void)
{
    printk(KERN_INFO "Hello android kernel...\n");
    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "Goodbye android kernel...\n");
}

我不知道这是什么问题。它显示没有错误消息或其他任何重新启动,并在重新启动后开始正常运行。

修改

我已经使用Android 2.2编译了三星内核,并使用此内核编译了我的LKM。这可能是原因?

1 个答案:

答案 0 :(得分:0)

使用以下命令

下载Nexus S的内核源代码后

git clone https://android.googlesource.com/kernel/samsung.git

文件夹显示为空。这是因为我们必须检查git远程分支。 通过编写`git branch -r'显示以下远程分支列表

origin/HEAD -> origin/master
origin/android-samsung-2.6.35-gingerbread
origin/android-samsung-3.0-ics-mr1
origin/android-samsung-3.0-jb
origin/android-samsung-3.0-jb-mr0
origin/master

我的错误是我选择origin/android-samsung-3.0-ics-mr1分支但origin/android-samsung-3.0-jb分支用于果冻豆4.1.2。这就是为什么我LKM没有使用正确的内核版本进行编译,因此每次插入都会重启设备。