Linux内核源代码释出时会包含有一些关于内核参数(如sysctl.conf中的参数)和函数的说明文档,在CentOS/RedHat系统中,kernel-doc软件包里面打包的就是这些文档(也可以从官网https://www.kernel.org/下载内核源码包,里面就会有这些文档)。

 

安装kernel-doc软件包:

[root@gw ~]# yum install kernel-doc

安装好kernel-doc软件包后,可以使用下面的命令查看它将文档安装在哪里了。可以看到,文档在两个位置:

[root@gw ~]# rpm -ql kernel-doc | awk -F "/" '{print "/"$2"/"$3"/"$4"/"$5}' | uniq

/usr/share/doc/kernel-doc-2.6.32

/usr/share/man/man9

 

1、 第一个位置的完整的路径是/usr/share/doc/kernel-doc-2.6.32/Documentation,里面包含的是关于内核参数等的txt说明文档,可以直接使用grep命令查找你想要了解的内核参数,比如,我想要了解/etc/sysctl.conf里面net.ipv4.ip_forward这个参数的含义,那么我可以执行:

[root@gw ~]# cd /usr/share/doc/kernel-doc-2.6.32/Documentation

[root@gw Documentation]# grep -ir --color 'ip_forward' ./*

输出结果如下图。其中,networking/ip-sysctl.txt文件里面的就是关于net.ipv4.ip_forward这个参数的说明。

需注意的是,这些文件里面其实只是对内核参数的简要说明。对一些简单的内核参数来说,看这里面的说明是没有问题的;但对于复杂的内核参数来说,可能还需要你有更综合的知识才行。

 

2、 第二个位置/usr/share/man/man9里面是内核使用的函数的man说明文档,使用man命令可以查看它们的内容。比如,里面有一个syscall_get_arguments.9.gz文件,实际来说,syscall_get_arguments就是一个函数来的,文件里面就是关于这个函数的说明信息。要查看文件内容,需使用man命令:

[root@gw ~]# man syscall_get_arguments

这有什么用呢?在一些涉及到内核函数的地方可能会派上用场。比如,查看Linux内核源代码时(当然,Linux内核源代码我看不懂,但我这只是举个例,对嘛),或者,在使用strace追踪程序调用内核函数的情况时(这就有可能用上了)。