本文可能會(huì)用到編譯內(nèi)核的相關(guān)知識(shí),具體請(qǐng)看Ubuntu 編譯內(nèi)核
第一步:選定要編寫的內(nèi)核兄猩,解壓
具體請(qǐng)看Ubuntu 編譯內(nèi)核
第二步:編寫系統(tǒng)調(diào)用函數(shù)
進(jìn)入安裝的目錄
cd /usr/src/linux-4.20.15/
sudo vim kernel/sys.c
在vim下 Ctrl+F Ctrl+B 快速翻頁
在末尾加入自定義代碼
asmlinkage void sys_hello(void)
{
printk("hello");
}
printk 運(yùn)行在內(nèi)核態(tài) 之后用dmesg查看輸出內(nèi)容
按esc :wq!退出
第三步:聲明調(diào)用函數(shù)
sudo vim arch/x86/include/asm/syscalls.h
IMG_5974.JPG
第四步:增加系統(tǒng)調(diào)用號(hào)
sudo vim arch/x86/entry/syscalls/syscall_64.tbl
(如圖中的335)
IMG_5975.JPG
第四步: 編譯內(nèi)核
具體請(qǐng)看Ubuntu 編譯內(nèi)核
第五步:驗(yàn)證
編寫C程序
int main()
{
syscall(335);
return 0;
}
- gcc -o test test.c
- ./test
- dmesg