所以我看到了一些關於添加系統調用的問題,但我找不到使用LKM的任何示例。我發現這樣的資源:http://tldp.org/LDP/lkmpg/2.6/html/ 這在理論上,但沒有編譯。任何人都可以指向一個簡單的例子來添加一個hello世界系統調用或其他東西。像這樣的:https://tssurya.wordpress.com/2014/08/19/adding-a-hello-world-system-call-to-linux-kernel-3-16-0/,不需要我重新編譯我的內核?使用內核模塊(LKM)添加系統調用
0
A
回答
1
通常,強烈建議而不是實施全新的系統調用。
相反,只實現一個新的ioctl
並可能有一些新的塊或字符設備。
對於如何做到這,它看起來像有一個問題/答案已經:How do I use ioctl() to manipulate my kernel module?
0
我不認爲你可以做到這一點的模塊。系統調用的定義進入兩個地方,在運行時無法真正改變(據我所知):syscall表(它爲每個架構分配數字)和syscalls包含文件(與內核本身一起安裝,而不是模塊)。 (或者至少不能在運行時忽略代碼重寫)。
在這種情況下,您總是需要重新編譯內核。但是如果你想有一個快速的更新/嘗試循環,你可以實現一個系統調用,它只是一個存根,如果它被加載,就會向正確的模塊傳遞一個消息。它可以讓你改變實現,但不是簽名。
相關問題
- 1. 內核模塊監控系統調用?
- 2. 無法使用rmmod刪除可加載內核模塊(LKM)
- 3. 使用LKM實現Linux系統調用
- 4. Linux內核模塊(內核3.5)中的系統調用攔截
- 5. 使用內核模塊鎖定系統調用
- 6. 是否可以通過LKM添加系統調用?
- 7. Android LKM攔截系統調用
- 8. 將系統調用編寫爲內核模塊
- 9. 如何在內核模塊中安裝系統調用
- 10. 錯誤使用自定義的系統編譯Linux內核模塊調用
- 11. LKM init模塊調試。
- 12. 在Linux內核3.3中添加一個新的系統調用
- 13. 將系統調用添加到linux內核3.8.8
- 14. 向FreeBSD內核添加一個帶參數的系統調用
- 15. 在Minix系統添加一個新的內核調用3
- 16. 可加載的內核模塊編程和系統調用攔截
- 17. 我可以從模塊添加一個系統調用嗎?
- 18. MINIX 2 - 系統調用內核
- 19. 冗餘的Linux內核系統調用
- 20. Linux內核中的系統調用
- 21. Linux內核AIO,開放系統調用
- 22. 更改linux內核系統調用號
- 23. Android內核,WiFi掃描系統調用
- 24. 不Debian的系統使用FreeBSD內核和紅帽系統採用GNU內核?
- 25. 準備計算機學習系統調用和Linux內核模塊
- 26. 在Linux內核3.x模塊中如何計算與Kprobe的系統調用?
- 27. 系統調用kill內核內核進程
- 28. 當我尋找添加系統調用時,我添加系統調用linux-2.6.31
- 29. 使用yocto添加第三方linux內核模塊
- 30. 將模塊添加到我的系統
我不認爲你有直覺如何使用這些東西?我找到了一個例子:http://www.tldp.org/LDP/lkmpg/2.6/html/x892.html,但我不知道你將如何去使用ioctl的。所以你可以使用設備驅動程序,然後通過設置驅動程序讀取它。你對ioctl做什麼? – BashOverride
我想我應該重新定義我的問題。假設我想添加一個系統調用,它將返回有關當前正在運行的進程的數據。所以我會把它傳遞給一個pid,它會返回像那個父pid,開始時間等等。這個ioctl會調用一個讀取,它會發現這個信息嗎?或者是什麼?我很難理解這種設置是如何工作的。 – BashOverride