我正在尝试向 Debian 11 ARM64 Linux 系统添加新的系统调用。内核版本 5.10.191。该系统在 Mac M2 笔记本电脑上的 UTM 虚拟机上运行。
我能够编译内核、安装新内核并从新内核引导。我需要向内核添加一个新的系统调用。这是我所做的:
最后,我在最后链接阶段得到了错误: ld: arch/arm64/kernel/sys.o:(.rodata+0xdc8): 对 `__arm64_sys_hello' 的未定义引用
以上过程适用于X86架构。看来ARM64的架构已经改变了。在上面的过程中我做错了什么?
看来你还需要修改系统调用总数。
在 include/uapi/asm-generic/unistd.h
#define __NR_syscalls 442 // 441+1
在 arch/arm64/include/asm/unistd.h
#define __NR_compat_syscalls number+1