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追蹤程序調用內核函數的情況時(這就有可能用上了)。