我在网上搜索了很长时间没有成功。如何在内核命令行中添加新命令?例如像ver
这样没有任何参数的命令,只是在执行时打印Hello World
消息。
答案 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系统编程之前,不要敢于攻击内核....