2010-07-20 117 views
6

如果我想在Linux内核空间执行用户程序(不是内核模块),我有什么选择?在Linux内核空间执行程序

我已经看过KML(内核模式linux),但是特定于IA-32架构。我想要一个跨平台的解决方案,并且可以在嵌入式Linux系统上工作。

+0

这个程序为什么需要在内核模式下运行? – 2010-07-22 15:43:52

回答

3

内核编程通过定义特定于平台的方式非常多,因为不同平台的内核都不相同。

5

用户程序不需要在内核空间执行 - 这是什么使他们的用户程序。

如果要在内核空间中执行代码,您有两种选择:将其构建到内核中,或将其加载到内核模块中。

+0

用户程序我的意思是编译成在用户空间运行的程序,即通过exec *系统调用或任何其他方式。内核模型Linux或KML使我们能够在linux内核空间中运行这些程序而无需进行任何修改,但它仅限于IA32体系结构。我正在寻找哪些可以在多种体系结构上工作。 – binW 2010-07-20 14:13:25

4

你在另一个问题中写道,你是内核编程的新手。使用KML非常具有传统性,并且以标准方式执行操作会复杂得多。这会让你的学习变得更加困难。我建议你最好的选择是重新评估为什么你想在内核空间运行一个用户空间的应用程序,并找到办法不这样做。

可能有很好的理由做这样的事情,但我不清楚这是什么原因。内核开发应该理解的一件事是,仅仅因为某些事情是可能的,这不一定是应该完成的事情。

如果你真的想要一个跨平台的解决方案,你必须自己写。 KML支持的唯一体系结构是IA32和AMD64。

3

看看FemtoLinux。基本上,它是一个KML嵌入式系统和嵌入式处理器,如ARM和MIPS

+0

我在哪里可以获得femtolinux。他们没有下载链接。 – binW 2010-07-30 11:16:31

+0

尝试给他们发邮件 – Demiurg 2010-07-31 09:03:49

3

call_usrmodehelper

+0

我对比赛有点迟,但我只是查找同样的东西,这将是正确的答案。确切地说,这就是你如何使用户空间程序从内核空间启动,这是我相信OP的原意。 – John 2015-01-12 19:37:33

0

如果你要开始内核空间的用户程序,看看 run_init_process()。这是内核运行init程序的方式。