向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc

向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc

ID:55901700

大?。?.37 MB

頁數(shù):6頁

時間:2020-06-13

向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc_第1頁
向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc_第2頁
向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc_第3頁
向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc_第4頁
向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc_第5頁
資源描述:

《向Linux內(nèi)核增加一個系統(tǒng)調(diào)用.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、操作系統(tǒng)實(shí)驗一實(shí)驗報告一、基本信息:實(shí)驗題目:向Linux內(nèi)核增加一個系統(tǒng)調(diào)用完成人姓名:金威報告日期:2016年4月24日二、實(shí)驗?zāi)康耐ㄟ^實(shí)驗,熟悉Linux操作系統(tǒng)的使用,掌握構(gòu)建與啟動Linux內(nèi)核的方法;掌握用戶程序如何利用系統(tǒng)調(diào)用與操作系統(tǒng)內(nèi)核實(shí)現(xiàn)通信的方法,加深對系統(tǒng)調(diào)用機(jī)制的理解;進(jìn)一步掌握如何向操作系統(tǒng)內(nèi)核增加新的系統(tǒng)調(diào)用的方法,以擴(kuò)展操作系統(tǒng)的功能。三、實(shí)驗內(nèi)容1.Linux環(huán)境下的C或C++編譯和調(diào)試工具的使用。2.向Linux內(nèi)核增加新的系統(tǒng)調(diào)用,系統(tǒng)調(diào)用名稱和功能自行定義

2、,但必須實(shí)現(xiàn)如下輸出功能:“MyStudentNo.is×××,andMyNameis×××”。3.Linux新內(nèi)核的編譯、安裝和配置。4.編寫應(yīng)用程序以測試新的系統(tǒng)調(diào)用并輸出測試結(jié)果。四、實(shí)驗步驟1.第一次嘗試了使用VirtualBox,但是出了一些問題,虛擬機(jī)網(wǎng)連不上就換了VMwareworkstations,曾試過用ubuntu-10.04.4-desktop-i386和比較老版本的內(nèi)核,但是過程略繁瑣,且很容易出錯,就更換了Ubuntu6415.10來創(chuàng)建虛擬機(jī)。2.我先在windows

3、中下載了linux-4.2的內(nèi)核,然后直接拖入了虛擬機(jī)中(拖入的過程有時可能會無法進(jìn)行,可以對虛擬機(jī)的VmwareTools重新安裝,或者用共享文件夾的形式拖入),拖入了桌面后,我直接進(jìn)行了解壓,較新版本無需cp入/usr/src中。3.接著進(jìn)入終端,sudoapt-getinstallbuild-essentialkernel-packagelibncurses5-devfakeroot獲得編譯內(nèi)核必需,但是這個所需下載的東西太多,有1個G左右,中間可能如果網(wǎng)絡(luò)出現(xiàn)故障,出現(xiàn)故障中斷下載后我是

4、按它的提示輸入了apt-getupdate更新軟件環(huán)境。4.修改systemtable。進(jìn)入解壓的文件目錄下,執(zhí)行sudogedit/arch/x86/entry/syscalls/syscall_64.tbl在打開文件中,在x32specificsystemcall設(shè)定之前添加32364mycallsys_mycall。5.向syscalls.h中添加函數(shù)。Cd入/include/linux,sudogedit./syscalls.h,在#endif后添加asmlinkageintsys_my

5、call(intnumber)。6.進(jìn)入/kernel的目錄,執(zhí)行g(shù)edit./mycall.c新建一個mycall.c文件,內(nèi)容如下:7.sudogedit./Kconfig.mycall新建一個Kconfig.mycall文件,內(nèi)容如下8.修改/kernel下的Makefile文件,向obj-y列表中添加mycall.osudogedit./Makefile9.修改Linux-4.2目錄下的Makefile文件,填寫EXTRAVERSION的值,為新版本的內(nèi)核名稱。我填寫了我的姓名的拼音.J

6、in10.編譯內(nèi)核。在cd到linux-4.2.0所在文件夾makelocalmodconfig//去掉一些不需要的模塊make–j4//使用雙核同時編譯能使速度加快,同時在創(chuàng)建虛擬機(jī)分配內(nèi)存時也多分配了些,磁盤也分配了32個Gmake–j4modules_install//編譯模塊11.Makeinstall//安裝內(nèi)核,最后顯示的就是新內(nèi)核的版本號12.進(jìn)入新內(nèi)核測試系統(tǒng)。安裝完后reboot后自動進(jìn)入新內(nèi)核,編寫測試系統(tǒng)調(diào)用的函數(shù),系統(tǒng)調(diào)用函數(shù)中的第二個參數(shù)值可變,第一個參數(shù)對應(yīng)前面步驟設(shè)

7、置的參數(shù)(由于之前沒有進(jìn)入root權(quán)限,之后執(zhí)行系統(tǒng)調(diào)用時出現(xiàn)錯誤所以需要獲得root權(quán)限)suroot//獲得權(quán)限在test.c文件目錄下打開終端。gcctest.c–otest//對test.c文件編譯./testdemesg–c//查看系統(tǒng)調(diào)用結(jié)果五.實(shí)驗體會能用新的版本就用新的版本吧,老的版本過程繁瑣,而且容易出錯,在老版本失敗多次后,我再使用了新版本的烏班圖和linux內(nèi)核,很快就搞定了實(shí)驗。在剛開始實(shí)驗時,對linux沒有了解,毫無頭緒,在熟悉命令行時也花費(fèi)了很多時間,但是這些對以后

8、對linux系統(tǒng)的使用都很有好處,也漸漸了解了系統(tǒng)調(diào)用的過程。

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。