1.使用器件:Vmware workstation(32位)、ubuntu 64位掏缎;
2. 實(shí)驗(yàn)步驟
(1)? 創(chuàng)建ubuntu linux虛擬機(jī)
① 安裝VMTools工具
使用tar 解壓皱蹦,記住一定要進(jìn)入到能用ls列出VMTools的目錄下面
(2)增加系統(tǒng)調(diào)用
①? 下載內(nèi)核版本為linux-4.16.10.tar.xz
②? 打開終端通過apt-get install安裝編譯內(nèi)核所需要的工具
Ⅰ.build-essential
Ⅱ.kernel-package
Ⅲ.libncurses5-dev
③? 將內(nèi)核代碼解壓并移入/usr/src目錄;
Ⅰ.tar -xvf linux-4.16.10.tar.xz
Ⅱ.cp(或者mv) linux-4.16.10.tar.xz /usr/src
④? 內(nèi)核編譯
?Ⅰ.進(jìn)入/usr/src/linux-4.16.10/kernel中,在終端輸入vim sys.c添加heloworld函數(shù)
?Ⅱ.添加聲明;
進(jìn)入/usr/src/linux-4.16.10/arch/x86/include/asm,然后vim?sysalls.h進(jìn)行編輯
?III .添加系統(tǒng)調(diào)用id
進(jìn)入/usr/src/linux-4.16.10/arch/x86/entry/syscalls
然后用vim syscall_64.tbl編輯文件
添加系統(tǒng)調(diào)用號(hào)(333 64 helloworld sys_helloworld)
編輯完成esc+:wq退出
IV? .配置內(nèi)核
使用make menuconfig指令
按照save眷蜈、ok沪哺、exit步驟進(jìn)行配置
]V ?? .正式編譯內(nèi)核
執(zhí)行make -j4(或者make modules)指令(需要等待2-3小時(shí))
(3) 撰寫應(yīng)用程序調(diào)用系統(tǒng)調(diào)用
①? 登陸虛擬機(jī)
②? 調(diào)用函數(shù)
Ⅰ.打開終端
II? .檢查內(nèi)核版本是否為linux-4.16.10
使用uname -r 指令
III .編輯調(diào)用系統(tǒng)調(diào)用的函數(shù)
vim test.c
gcc test.c
IV? .查看調(diào)用結(jié)果
./a.out
(4) 使用strace的系統(tǒng)跟蹤工具對(duì)測試程序進(jìn)行跟蹤調(diào)試
①? 使用strace ./test追蹤系統(tǒng)調(diào)用過程
②? 使用strace -c./test統(tǒng)計(jì)系統(tǒng)調(diào)用
大功告成!W萌濉辜妓!