Raven's Blog

Linux内核学习踩坑日记--为你的主机加上Linux内核APi手册

初入Linux内核世界,和在应用层面编程的感觉大不相同,没有好用IDE, 还要阅读大量复杂的linux源码。想着至少要有个Linux Kernel 的APi吧,不然编程真的好难受,所以就有了这篇文章。

经过一番百度,安装内核的Api大多数需要在Linux源码根目录下执行make mandocs命令,大多数情况下都能执行成功,但是我就是这么不幸地被提示没有mandocs这个目标可生成。。经过一番百度,无果。
想着会不会是我的Linux版本太高,所以不行(当时使用的版本是4.15.x)。更换为3.x的内核以后,确实能够生成了,但是不知道是不是我的脸比较黑,3.x的内核对Ubuntu18的支持不大友好,鼠标移动时光标乱晃,而且很卡,所以没办法又从找了个4.14的内核,还是没有。最后更换为了4.9.x的内核,终于能够生成。

如何检测自己的Linux版本能不能生成mandocs呢?

其实可以在Linux源码路径下执行make help命令,如果看到:


就是可以生成(该截图来自内核4.9.x)。
否则,就需要更换内核

OK,废话了这么多。来说一下怎么安装:

step1: 用上文提到的make help命令,确定自己的linux内核可以生成mandocs

step2: 安装xmlto:sudo apt install xmlto

step3: 到源码路径下面执行make mandocs 需要等一段时间

step4: 安装mandocs: sudo make installmandocs 继续等待一段时间..

如果以上你都成功了,那么在/usr/local/man路径下应该有一个man9的目录,如下图。

执行 man kmalloc看下安装成功没,如果是下图,那么恭喜你,你可以溜了。

然而我就是这么脸黑,经历过更换多个内核,好不容易把mandocs安装成功了,但是使用man kmalloc的时候,显示出来的却是一片空白,甚至连普通的ls,find等指令全都不见了。经过一波google,终于找到了解决方案:

    sudo apt install apparmor-utils
    
    sudo aa-disable /usr/bin/man

这应该是ubuntu更新后的一个bug。不过所幸有解决方案。

至此,你就可以使用man命令查Kernelapi啦。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »