我想在 linux 内核 3.14.61 中添加一个系统调用来打印“hello world”。
首先,我下载了内核 3.14.61 源代码,然后按照以下步骤操作。
1- 我将 316 64 hello sys_hello
行添加到 arch/x86/syscalls/syscall_64.tbl
文件。
2- 然后我将 asmlinkage long sys_hello(void);
行添加到 include/linux/syscalls.h
文件。
3- 我在 kernel
中创建了一个名为 hello.c
的新文件。 hello.c
文件的地址是kernel/hello.c
,我把这个放在里面:
#include <linux/kernel.h>
asmlinkage long sys_hello(void) {
printk("hello world\n");
return 0;
}
4- 然后我将 hello.o
添加到 obj-y
末尾的 kernel/Makefile
中,如下所示:
obj-y = fork.o exec_domain.o panic.o \
cpu.o exit.o itimer.o time.o softirq.o resource.o \
sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
signal.o sys.o kmod.o workqueue.o pid.o task_work.o \
extable.o params.o posix-timers.o \
kthread.o sys_ni.o posix-cpu-timers.o \
hrtimer.o nsproxy.o \
notifier.o ksysfs.o cred.o reboot.o \
async.o range.o groups.o smpboot.o hello.o
5- 在前 4 个步骤之后,我尝试编译自定义内核。所以我一个一个地运行了这些命令:
make localmodconfig
make oldconfig
make –j2
sudo make modules_install
但是当我运行最后一个命令(sudo make modules_install
)时,我看到了这个错误:
The present kernel configuration has modules disabled.
Type 'make config' and enable loadable module support.
Then build a kernel with module support enabled.
make: *** [modules_install] Error 1
我该如何解决?
最佳答案
显然,您的内核配置禁用了可加载模块,因此安装它们没有多大意义。
您的内核配置可能有问题。
关于c - 编译linux内核报 'make: *** [modules_install] Error 1'错误如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779677/