目录
- 前言
- linux内核的编译安装
- 其余问题
前言
实践cgroup的内核机制时,想要用到cgroup.c中的cgroup_attach_task()
函数,首先这个函数属于kernel内的,并且这个函数并没有导出符号,因此在我原本的linux系统中无法使用显示调用这个函数
解决方法是,修改linux内核源码,添加cgroup_attach_task()
函数的符号导出,然后重新编译并且安装修改后的linux内核,在新内核环境(有这个函数符号的环境)下进行使用
linux内核的编译安装
参考文章 https://blog.csdn.net/qq_40650634/article/details/147782354
其中我用的是make olddefconfig
,并且如果无需其他具体的修改,就不用再make menuconfig
其余问题
大模型给出了一个说法是,如果要添加内核函数的符号导出,在对应的头文件中也需要同时声明新函数,之后再进行内核的编译与安装,但是在我的实践中,只需要添加内核函数的符号导出即可,在头文件中声明的工作可以在内核编译安装结束之后再进行
重新编译安装后的内核中确实有我做过的修改EXPORT_SYMBOL_GPL(cgroup_attach_task);//modify
sea@fanbao~$:cd /lib/modules/5.15.189/source/kernel/cgroup
sea@fanbao:/lib/modules/5.15.189/source/kernel/cgroup$ cat cgroup.c | grep "EXPORT_SYMBOL_GPL(cgroup_attach_task)"
EXPORT_SYMBOL_GPL(cgroup_attach_task);//modify