0

我已经从 source.android.com 下载了三星内核并构建了它。然后首先我安装了 CWM 恢复映像,然后将我的 Nexus S (Android 4.1.1) 植根。现在我想将简单的可加载内核模块(LKM)插入其中,但是当我通过insmod hello.ko在 ADB shell 上编写命令插入模块时,设备会在 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。这可能是什么原因?

4

1 回答 1

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 没有使用正确的内核版本编译,因此在每次插入时都重新启动设备。

于 2013-03-25T12:01:26.430 回答