2010-07-20 116 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程序的方式。