向linux内核添加新命令

时间:2015-12-12 08:20:46

标签: linux-kernel

我在网上搜索了很长时间没有成功。如何在内核命令行中添加新命令?例如像ver这样没有任何参数的命令,只是在执行时打印Hello World消息。

1 个答案:

答案 0 :(得分:2)

Linux kernel不处理任何命令(但GRUB引导加载程序可以将一些参数传递给引导的内核)。它只是处理system calls。您可以添加一些新的,但了解advanced linux programming&在攻击内核之前syscalls(2)

也许您想要为shell添加新命令。这很简单,在ELF已知的目录中放置一个新的可执行文件(script可执行文件,例如从C代码编译,或某些PATH)。您也可以制作新的shell function

创建新流程的系统调用是fork(2)(有时会通过对clone(2)的适当调用来模拟...)。 fork很难理解,所以花几个小时来阅读它。几乎所有流程(少数例外情况,尤其是/sbin/init)都由fork创建。执行新程序的系统调用是execve(2)。你的shell通常会使用fork& execve运行命令(内置命令除外,如cd)。使用strace(1)来了解所做的系统调用(通过某些程序)。

PS。在理解用户级Linux系统编程之前,不要敢于攻击内核....