最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

操作系統(tǒng)-手把手教你給linux系統(tǒng)增加一個系統(tǒng)調(diào)用(學(xué)起來吧~)

2022-06-10 15:31 作者:補給站Linux內(nèi)核  | 我要投稿

一、系統(tǒng)調(diào)用的概念

  • Linux內(nèi)核中設(shè)置了一組用于實現(xiàn)各種系統(tǒng)功能的子程序,稱為系統(tǒng)調(diào)用。用戶可以通過系統(tǒng)調(diào)用命令在自己的應(yīng)用程序中調(diào)用它們。從某種角度來看,系統(tǒng)調(diào)用和普通的函數(shù)調(diào)用非常相似。區(qū)別僅僅在令在自己的應(yīng)用程序中調(diào)用它們。從某種角度來看,系統(tǒng)調(diào)用和普通的函數(shù)調(diào)用非常相似。區(qū)別僅僅在于,系統(tǒng)調(diào)用由操作系統(tǒng)核心提供,運行于核心態(tài);而普通的函數(shù)調(diào)用由函數(shù)庫或用戶自己提供,運行于用戶態(tài)。二者在使用方式上也有相似之處。Linux系統(tǒng)的核心部分即是Linux內(nèi)核,是一系列設(shè)備的驅(qū)動程序。系統(tǒng)調(diào)用是Linux內(nèi)核提供的功能十分強大的一系列的函數(shù)。這些函數(shù)是在內(nèi)核中實現(xiàn)的,它們是應(yīng)用程序和內(nèi)核交互的接口,系統(tǒng)調(diào)用在Linux系統(tǒng)中發(fā)揮著巨大的作用,如果沒有系統(tǒng)調(diào)用,那么應(yīng)用程序就失去了內(nèi)核的支持。

二、系統(tǒng)調(diào)用的實現(xiàn)

第一步:獲取root權(quán)限(即管理員權(quán)限)

在終端輸入下列指令: sudo su 注意:獲取root權(quán)限需要用戶輸入密碼(登陸密碼),密碼是看不見的,用戶只需正確的輸入密碼即可,回車鍵結(jié)束

  • 示意圖如下:


第二步:準(zhǔn)備工作

1、安裝相關(guān)編譯程序

sudo ?apt-getinstallbuild-essentialkernel-package ?libncurses5-dev

2、獲取內(nèi)核

(1)從外面將linux-4.16.10.tar拖入到了虛擬機桌面(我用的內(nèi)核是linux-4.16.10)

? ?內(nèi)核的話新版本也是可以的,官網(wǎng)下載或者從別人哪兒拷,指令的話只需要對應(yīng)的把版本號改一下

(2)下一步就是將該壓縮文件移入到/usr/src/文件夾中

注意:在.tar后面有一個空格,文件名建議復(fù)制不建議手敲??梢灾苯影盐业恼Z句復(fù)制過去然后方向鍵移到需要修改的地方進行修改


sudo mv /peter/home/桌面/linux-4.16.10.tar/usr/src/


  • 注:由于我之前都將這些東西配置好了,所以是這個顯示,一個細節(jié),可以通過方向鍵的上下快速切換歷史命令

【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ??

第三步、進入/usr/src解壓文件

cd /usr/src sudo tar -xvf /usr/src/linux-4.16.10.tar.bz2 解壓過程如下圖所示,如果要確定自己的內(nèi)核版本,可以在終端輸入命令uname -r。解壓過程稍長,注意:解壓語句可能因為文件地址稍有不同,建議去計算機里面去拷貝路徑!


第四步:進入解壓出的文件目錄

cd /usr/src/linux-4.16.10/kernel



第五步:安裝vim

sudo apt-get install vim

第六步:打開sys.c加入函數(shù)

vim sys.c注意:在vim中, i進入編輯, esc退出編輯狀態(tài). G跳到末尾, gg進入開頭。 :wq保存退出, :q不保存退出)


  • 在末尾加入函數(shù)


第七步、添加聲明

cd /usr/src/linux-4.16.10/arch/x86/include/asm/ vim syscalls.h (插入asmlinkage long sys_helloworld(void);)

第八步:加一個系統(tǒng)調(diào)用的id

cd/usr/src/linux-4.16.10/arch/x86/entry/syscalls vim syscall_64.tbl a、進入/usr/src/linux-4.16.10/arch/x86/syscalls目錄 b、打開文件syscall_64.tbl(該文件有一個系統(tǒng)調(diào)用列表,最前面的屬性是id) c、在里面添加自己的系統(tǒng)調(diào)用號(333 ?64 ?helloworld ? ? ? ? ? sys_helloworld) d、使用esc +:wq命令保存退出

  • 注意:我在任務(wù)管理器發(fā)現(xiàn)我的VMware workstation是32位的,但我同學(xué)用64位成功了!所以我用的是vim syscall_64.tbl,之前試了vim syscall_32.tbl沒能成功。所以要以虛擬機為主?。?!

第九步:配置內(nèi)核

cd ?/usr/src/linux-4.16.10 編譯內(nèi)核和安裝內(nèi)核. 依次輸入這四條語句 sudo make mrproper sudo make clean sudo make menuconfig ?(并且在make nfig時,將那個General setup內(nèi)的localversion修改成新的名稱,比如我這里的myKernel) sudo make menuconfig出現(xiàn)的問題:

解決辦法:

  • 安裝這兩個包完成后再sudo make menuconfig

根據(jù)自己處理器的最大線程數(shù)目來編譯. sudo make -j4 (我的電腦是4核4線程),線程越多編譯越快!

此處可能報錯:

解決辦法:

第一反應(yīng)耐心看報錯信息,缺什么包補什么包sudo apt-get install XXXX 下面這個語句可以解決較多的問題。

  • 編譯過程真的超級超級漫長。。。

  • 注意: 這個時候,終端的窗口最好最大化,否則可能會報錯。

第十步:安裝內(nèi)核

編譯后安裝內(nèi)核到系統(tǒng)中. sudo makemodules_install ? sudomake install ?// 安裝內(nèi)核

這個地方也需要一定的時間,反正編譯三個多小時,不差這一會哈哈哈


第十一步:重啟虛擬機

  • 將之前的工作保存后直接重啟,重啟后點擊鼠標(biāo)進入ubuntu并且迅速按住shift,長按!我的虛擬機直接登陸上了,我同學(xué)的好像都有一個選擇內(nèi)核過程,有選擇的話,只需要選擇新核就OK了!


第十二步:驗證系統(tǒng)調(diào)用是否成功

a、登陸虛擬機 b、打開終端 c、輸入下列指令: (1)gcc hello.c

  • 輸入下列代碼:

(2)./a.out

  • 輸出,見證成果的時候到了?。?!

返回值為1!!?。。?/p>

系統(tǒng)調(diào)用成功了?。。。?/p>



操作系統(tǒng)-手把手教你給linux系統(tǒng)增加一個系統(tǒng)調(diào)用(學(xué)起來吧~)的評論 (共 條)

分享到微博請遵守國家法律
峨边| 遂昌县| 莱芜市| 贵港市| 札达县| 大足县| 永平县| 大邑县| 义马市| 桦甸市| 吐鲁番市| 佛坪县| 广丰县| 鄂尔多斯市| 赞皇县| 罗甸县| 安图县| 镇安县| 石城县| 北碚区| 南涧| 盘山县| 防城港市| 五原县| 石屏县| 大厂| 屏南县| 东兰县| 甘德县| 黄骅市| 龙井市| 永修县| 阿荣旗| 青铜峡市| 卢湾区| 桓台县| 柘城县| 来凤县| 合山市| 磴口县| 铜梁县|