如果我想在Linux内核空间中执行用户程序(不是内核模块),我有哪些选项?
我已经看过KML(内核模式linux),但这是针对IA-32架构的。我想要一个跨平台的解决方案,可以在嵌入式Linux系统上运行。
答案 0 :(得分:5)
用户程序不在内核空间中执行 - 这就是他们用户程序的原因。
如果要在内核空间中执行代码,您有两种选择:将其构建到内核中,或者使用内核模块加载它。
答案 1 :(得分:4)
您在另一个问题中写道,您是内核编程的新手。使用KML是非常传统的,并且以标准方式执行操作会更加复杂。这将使你的学习变得更加困难。我建议您最好的选择是重新评估为什么要在内核空间中运行用户空间应用程序并找到不这样做的方法。
可能有充分的理由去做这样的事情,但我不清楚这个理由是什么。你应该了解内核开发的一件事是,只是因为某些东西是可能的,它不一定是应该做的事情。
如果您真的想要跨平台解决方案,则必须自己编写。 KML支持的唯一架构是IA32和AMD64。
答案 2 :(得分:3)
内核编程几乎是定义平台特定的,因为不同平台的内核都是不同的。
答案 3 :(得分:3)
看看FemtoLinux。基本上,它是嵌入式系统和嵌入式处理器(如ARM和MIPS)的KML
答案 4 :(得分:3)
call_usermodehelper
答案 5 :(得分:0)
如果要从内核空间启动用户程序,请查看 run_init_process()。这是内核运行init程序的方式。