将系统调用添加到内核后,我尝试编译内核。
它运行了 2 个小时,最后抛出
对 <我添加的系统调用> 的未定义引用
知道发生了什么。
内核 3.9.3
遵循的步骤是 -
从www.kernel.org获取内核代码。
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.1.tar.bz2
使用命令将其上传
tar xvfj XXX
到文件夹示例:/root/kernel tar xvfj linux-3.3.1.tar.bz2
编辑文件
/root/kernel/linux-3.3.1/arch/x86/syscalls/syscall_64.tbl
并添加新行312 64 husky1 sys_husky1
编辑文件在行声明
/root/kernel/linux-3.3.1/include/linux/syscalls.h
前添加新函数#endif
asmlinkage long sys_husky1(int fd);
/root/kernel/linux-3.3.1/arch/x86/kernel
在(我使用的是 x86 CPU)下添加一个新的 c 文件示例:编辑
/root/kernel/linux-3.3.1/arch/x86/kernel/Makefile
添加新行obj-y += husky.o
转到
/root/kernel/linux-3.3.1
文件夹并运行命令make –j8