我从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。这可能是原因?
答案 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没有使用正确的内核版本进行编译,因此每次插入都会重启设备。