如何在Linux中添加系統調用
下載內核源代碼
可以在github或https://www.kernel.org/上進行下載。我下載的是linux-4.4.4.tar.xz
下載鏈接:https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.4.tar.xz
解壓
我已經解壓完成,所以不演示解壓過程:
本人將文件解壓於:
添加系統調用號
進入解壓的Linux-4.4.4文件夾:(vim ./arch/x86/entry/syscalls/syscall_64.tbl(32位系統是syscall_32.tbl) )如圖,在末尾添加:
聲明系統調用函數原型
(vim include/linux/syscalls.h )如圖:
添加系統調用函數的定義
(vim kernel/sys.c)
以上步驟基本完成準備步驟了
編譯:(以下是重點也是成功與否的關鍵)
1.sudo make menuconfig 直接選擇save,然後退出即可,生成.config
2. sudo make 編譯開始,我四核核四線程,運行於虛擬機環境,性能大大打折扣,運行了近40分鐘
3. sudo make modules_install 安裝模塊
4. sudo make install 安裝內核
sudo make menuconfig彈出如圖:鍵盤操作移動光標至save選項,生成.config,光標移動至Exit,選擇退出即可。
編譯: sudo make
由於作者個人電腦CPU和固態太普通,運行的ubuntu最終在1個小時後才能完成。如圖:
安裝內核
sudo make install
編寫測試程序
至此,測試程序編寫完畢。
重啓ubuntu(作者使用發行版ubuntu 16.04),系統進入開機時點擊鍵盤上的delete按鈕,選擇高級選項,選擇我們編譯好的內核,等待開機.
使用命令
uname -r 查看當前內核版本:成功選擇內核
測試程序
編譯運行測試程序:返回 1
輸入:dmesg
測試成功。
版權聲明
1.以上實驗經本人測試真實有效,但不保證所有人可行,對他人造成損失.損害將與本人無關。
2.上述內容均由個人提供,未經得允許不得進行任何營利性使用,僅供學習使用。