【问题标题】:Creating a System Call in Linux在 Linux 中创建系统调用
【发布时间】:2011-04-22 12:01:25
【问题描述】:

我们今天刚拿到一个“操作系统”课程的期中项目,要求我们实现一个系统调用(我想我假设我们必须编写一段代码来调用它)。

我知道我需要更新系统调用表(不记得名称,但没什么大不了的),以及创建该表将指向的内核模块,但这是否意味着我'必须重新编译整个内核,让内核知道我的模块?

我已经看到有可能劫持当前的系统调用,但我怀疑如果我这样做,我将不会获得我的任务的功劳。

只是想感受一下我将要付出的努力。

更新: 好吧,这有点麻烦,他们从我相信 2.6.32 开始改变了一些东西,所以当我回到我发现的特定于在线教程的先前内核版本时,它真的很容易理解。如果有人在网上看到这个并且正在学习教程,我建议最初在教程中下载相同的内核,然后在您了解自己在做什么后从那里继续前进。如果你真的很熟悉编译内核等,你可能没有问题,但这是我第一次编译内核,所以编译了2个小时然后发现有些东西不起作用,而且很痛苦,而且必须从头再来,尤其是当我不确定自己做错了什么/没有做错的时候。

【问题讨论】:

  • 为了重新编译内核部分,我建议您从您的发行版中获取源代码和 .config,而不是使用 kernel.org 的源代码组成您自己的 .config。如果您的 .config 不适合您的硬件,这应该会减少您的麻烦。

标签: linux linux-kernel system-calls


【解决方案1】:

你想阅读:

  • Linux 内核编程,第三版(平装本)作者:Michael Beck(作者)、Harald Bohme(作者)、Mirko Dziadzka(作者)、Ulrich Kunitz(作者)、Robert Magnus(作者)、Dirk Verworner(作者),Claus Schroter(作者),Addison-Wesley(培生教育)出版,ISBN-10: 0201719754 , ISBN-13: 978-0201719758

也许还有更多细节:

  • 了解 Linux 内核,第三版 作者:Daniel P. Bovet,Marco Cesati,O'Reilly 出版,ISBN 10:0-596-00565-2国际标准书号 13:9780596005658
  • Linux 设备驱动程序,第三版 作者:Jonathan Corbet、Alessandro Rubini、Greg Kroah-Hartman,由 O'Reilly 出版,ISBN 10:0-596-00590-3,ISBN 13:9780596005900

【讨论】:

  • 我有设备驱动书第二版,第三版在线免费,很有趣的书!
  • 如果你想进入linux内核开发,我提到的第一个是最好的。它很好地涵盖了操作系统本身的设计,并引导您完成对它的破解。
【解决方案2】:

但这是否意味着我必须重新编译整个内核,以便内核知道我的模块?

是的,您需要重新编译内核。

【讨论】:

  • 目前看来还不错,等我到学校再仔细看看,看来已经解决了! ——你以前做过吗,在你看来是不是很困难?从我的角度来看,这似乎不是,但我从未尝试过,所以我不确定。
  • 我认为你应该没问题。除非您使用的是旧硬件,否则编译内核大约需要 5 分钟左右。
  • 嗯,我确实做了 yestoallconfig (或类似的东西),然后做了一个 make,它已经运行了至少 30 分钟,我在一个 3.2Ghz 的双处理器机器上,我想大约 4Gb 的内存....如果有帮助的话,我会再次从头开始编译
  • 是的,我猜编译时间会有很大差异,具体取决于您的配置。最终花了多长时间?
【解决方案3】:

我知道我需要更新 系统调用表

我是/usr/src/linux/arch/i386/kernel/syscall_table.S

这是否意味着我必须重新编译 整个内核,所以内核知道 关于我的模块?

是的,确实。

Just wanted to get a feel for the size of the effort I'll be making.

如果您知道将编写什么代码作为系统调用的一部分,那么您已经完成了。您只需要等待内核重新编译时间。以下是一组说明:

Implementing a System Call in Linux

【讨论】:

    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 2010-10-18
    • 2023-03-15
    • 2012-03-17
    • 1970-01-01
    • 2018-03-31
    • 2016-05-12
    • 2016-03-02
    相关资源
    最近更新 更多