最近,我决定开始学习操作系统内核,并找到了一些资源来帮助我的学习过程。按照教程,我设置了可加载内核模块和 Makefile,但当我运行命令时,make
我得到以下命令:
Makefile:5: *** missing separator. Stop.
Makefile 内容 -
KMOD= hello #Name of KLD build.
SRCS= hello.c # List of source files.
include <bsd.kmod.mk>
LKM来源-
#include <sys/param.h>
#include <sys/module.h>
#include <sys/kernel.h>
#include <sys/systm.h>
/*The function called at load/unload. */
static int
load(struct module *module, int cmd, void *arg)
{
int error = 0;
switch (cmd) {
case MOD_LOAD:
uprintf("Hello, world!\n");
break;
case MOD_UNLOAD:
uprintf("Good-bye, cruel world!\n");
break;
default:
error = EOPNOTSUPP;
break;
}
}
/* The second argument of DECLARE_MODULE. */
static moduledata_t hello_mod = {
"hello", /*module name */
load, /* event handler */
NULL /* extra data */
};
DECLARE_MODULE(hello, hello_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
我正在关注的这本书重点介绍了 FreeBSD 内核模块,我将其移植到我的 Ubuntu 系统上以更改内核。
请帮我!!
答案1
我正在关注的这本书重点介绍了 FreeBSD 内核模块,我将其移植到我的 Ubuntu 系统上以更改内核。
这不太可能很快产生有用的结果,因为这两个内核非常不同,它们的构建基础设施也非常不同。相反,请遵循特定于 Linux 的教程,例如这个。