一区二区偷拍美女撒尿视频 , 一区精品在线 , 高清在线一区二区三区亚洲综合 , 四虎国产精品免费久久麻豆

當(dāng)前位置首頁 > 計算機 > linux/Unix
搜柄,搜必應(yīng)! 快速導(dǎo)航 | 使用教程  [會員中心]

嵌入式linux內(nèi)核的配置及編譯File課件

文檔格式:PPT| 32 頁|大小 269.29KB|積分 20|2024-11-17 發(fā)布|文檔ID:252560783
第1頁
下載文檔到電腦,查找使用更方便 還剩頁未讀,繼續(xù)閱讀>>
1 / 32
此文檔下載收益歸作者所有 下載文檔
  • 版權(quán)提示
  • 文本預(yù)覽
  • 常見問題
  • 單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,可編輯ppt,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,二級,三級,四級,五級,可編輯ppt,*,內(nèi)核裁剪篇,1,可編輯ppt,內(nèi)核裁剪篇1可編輯ppt,為什么要裁減內(nèi)核,自己定制編譯的內(nèi)核運行更快(具有更少的代碼),系統(tǒng)將擁有更多的內(nèi)存(內(nèi)核部分將不會被交換到虛擬內(nèi)存中),不需要的功能編譯進(jìn)入內(nèi)核可能會增加被系統(tǒng)攻擊者利用的漏洞,將某種功能編譯為模塊方式會比編譯到內(nèi)核內(nèi)的方式速度要慢一些,2,可編輯ppt,為什么要裁減內(nèi)核自己定制編譯的內(nèi)核運行更快(具有更少的代碼),如何升級內(nèi)核,添加進(jìn)內(nèi)核的方式:,將新增加部分編譯到內(nèi)核中(build-in),把新增加部分編譯成模塊(module),動態(tài)加載各自特點:,編譯到內(nèi)核中,在內(nèi)核啟動時就可以自動支持相應(yīng)部分的功能,這樣的,優(yōu)點,是方便、速度快,機器一啟動,用戶就可以使用這部分功能了;,缺點,是會使內(nèi)核變得龐大起來,不管你是否需要這部分功能,它都會存在建議,經(jīng)常使用的部分直接編譯到內(nèi)核中,比如網(wǎng)卡如果編譯成模塊,就會生成對應(yīng)的.o文件,在使用的時候可以動態(tài)加載,,優(yōu)點,是不會使內(nèi)核過分龐大,,缺點,是你得自己來調(diào)用這些模塊。

    3,可編輯ppt,如何升級內(nèi)核添加進(jìn)內(nèi)核的方式:3可編輯ppt,內(nèi)核的模塊式結(jié)構(gòu),內(nèi)核模塊是Linux內(nèi)核向外部提供的一個接口,其全稱為動態(tài)可加載內(nèi)核模塊(Loadable Kernel Module,LKM),簡稱為模塊Linux內(nèi)核之所以提供模塊機制,是因為它本身是一個單內(nèi)核(monolithic kernel)單內(nèi)核的最大優(yōu)點是效率高,因為所有的內(nèi)容都集成在一起,但其缺點是可擴展性和可維護(hù)性相對較差,模塊機制就是為了彌補這一缺陷4,可編輯ppt,內(nèi)核的模塊式結(jié)構(gòu)內(nèi)核模塊是Linux內(nèi)核向外部提供的一個接口,模塊,模塊是具有獨立功能的程序,它可以被單獨編譯,但不能獨立運行它在運行時被鏈接到內(nèi)核作為內(nèi)核的一部分在內(nèi)核空間運行,這與運行在用戶空間的進(jìn)程是不同的模塊通常由一組函數(shù)和數(shù)據(jù)結(jié)構(gòu)組成,用來實現(xiàn)一種文件系統(tǒng)、一個驅(qū)動程序或內(nèi)核中其他上層的功能5,可編輯ppt,模塊 模塊是具有獨立功能的程序,它可以被單獨編譯,但不能獨立,模塊與內(nèi)核的關(guān)系,模塊和內(nèi)核都在內(nèi)核空間運行,模塊編程在一定意義上就是內(nèi)核編程因為內(nèi)核版本的每次變化使得其中的某些函數(shù)名也會相應(yīng)地發(fā)生變化,因此模塊編程與內(nèi)核版本密切相關(guān)。

    本課中所涉及的內(nèi)核編程基于的Linux內(nèi)核為24x版本,對于其他版本,可能還需要做一些調(diào)整6,可編輯ppt,模塊與內(nèi)核的關(guān)系 模塊和內(nèi)核都在內(nèi)核空間運行,模塊編程在一定,應(yīng)用程序與內(nèi)核模塊的比較,C語言應(yīng)用程序,內(nèi)核模塊程序,使用函數(shù),libc庫,內(nèi)核函數(shù),運行空間,用戶空間,內(nèi)核空間,運行權(quán)限,普通用戶,超級用戶,入口函數(shù),main(),init_module(),出口函數(shù),exit(),cleanup_module(),編譯,gcc-c,gcc c D _KERNEl_ _DMOKULE,連接,gcc,Gcc,運行,直接運行,insmod,調(diào)試,gdb,kdbug,kdb,kgdb等,7,可編輯ppt,應(yīng)用程序與內(nèi)核模塊的比較C語言應(yīng)用程序內(nèi)核模塊程序使用函數(shù)l,名字空間污染namespace pullution,當(dāng)存在大量的函數(shù)和全局變量,并且它們的名字沒有明確的含義以至于難以區(qū)別時,就會發(fā)生所謂的名字空間污染程序員需花費更多的時間和精力去記住這些已經(jīng)保留的名字并為新符號尋找一個不重復(fù)的名字名字空間沖突可能照成很多問題,如加載模塊失敗等古怪問題,解決辦法,將所有符號定義為靜態(tài)變量,對于非全局變量的符號前加上一個內(nèi)核中唯一的前綴。

    8,可編輯ppt,名字空間污染namespace pullution 當(dāng)存在,用戶空間與內(nèi)核空間,操作系統(tǒng)的作用,為程序提供一個計算機硬件的一致視圖負(fù)責(zé)程序的獨立操作以及保護(hù)資源不受非法訪問內(nèi)核運行在最高級(管理員模式 supervisor mode),可以進(jìn)行所有操作應(yīng)用程序運行在優(yōu)先級最低即所謂的用戶模式(user mode),在這一級中處理器控制著對硬件的直接訪問以及對內(nèi)存的非授權(quán)訪問9,可編輯ppt,用戶空間與內(nèi)核空間操作系統(tǒng)的作用9可編輯ppt,lsmod 查看已注冊的內(nèi)核,10,可編輯ppt,lsmod 查看已注冊的內(nèi)核 10可編輯ppt,內(nèi)核模塊實例,#define _KERNEL_,#define MODULE,#include,#include,int init_module(void),printk(Hellow World!n”);,return 0;,),void cleanup_module(void),printk(Goodbye,cruel world!n”);,),module_init(hello_init);module_exit(hello_exit);,11,可編輯ppt,內(nèi)核模塊實例#define _KERNEL_ 11可編,模塊主要函數(shù)及定義,頭文件及宏定義,#define _KERNEL_,#define MODULE,#include,#include,module_init():模塊的初始化函數(shù),module_exit():模塊的卸載函數(shù),初始化函數(shù)和卸載函數(shù)必須成對出現(xiàn)。

    模塊常用信息:作者、描述、版權(quán)等,,MODULE_AUTHOR(author);MODULE_DESCRIPTION(the description);MODULE_LICENSE(GPL);,寫內(nèi)核或內(nèi)核模塊不能用寫應(yīng)用程序時的系統(tǒng)調(diào)用或函數(shù)庫.,12,可編輯ppt,模塊主要函數(shù)及定義頭文件及宏定義12可編輯ppt,模塊的編譯,KDIR=/YF2410/kernel,INCLUDEDIR=$(KDIR)/include,CFLAGS=-D_KERNEL_-DMODULE-I$(INCLUDEDIR),CC=arm-linux-gcc,OBJS=hello.o,$(OBJS):hello.c,$(CC)$(CFLAGS)-c$,clean:,-rm-f$(OBJS)*.o,13,可編輯ppt,模塊的編譯KDIR=/YF2410/kernel13可編,模塊的加載與卸載,Insmod./hello.o,rmmod hello,14,可編輯ppt,模塊的加載與卸載Insmod./hello.o14可編輯p,modutils,modutils是管理內(nèi)核模塊的一個軟件包用戶可以在任何提供內(nèi)核源代碼的地方獲取modutils(modutils-xyztar,gz)源代碼,然后選擇最高級別的、patchxyz等于或小于當(dāng)前版本的內(nèi)核版本,安裝后在sbin目錄下就會有insmod、rmmod、ksyms、lsmod、modprobe等實用程序。

    當(dāng)然,通常在加載Linux內(nèi)核時,modutils已經(jīng)被載入15,可編輯ppt,modutils modutils是管理內(nèi)核模塊的一個軟,Modutils的常用命令,insmod命令,調(diào)用insmod程序,把需要插入的模塊以目標(biāo)代碼的形式插入到內(nèi)核中在插入的時候,insmod自動調(diào)用init_module()函數(shù)運行注意,只有超級用戶才能使用這個命令格式,#insmod pathmodulename.o,rmmod命令,調(diào)用rmmod程序,將已經(jīng)插入內(nèi)核的模塊從內(nèi)核中移出rmmod會自動運行 cleanup_module()函數(shù),,格式:,#rmmod pathmodulename.o,16,可編輯ppt,Modutils的常用命令insmod命令16可編輯ppt,Modutils的常用命令,lsmod命令,調(diào)用lsmod程序?qū)@示當(dāng)前系統(tǒng)中正在使用的模塊信息實際上這個程序的功能就是讀取procmodules文件中的數(shù)據(jù)格式為:,#lsmod,ksyms命令,Ksyms這個程序用來顯示內(nèi)核符號和模塊符號表的信息與lsmod相似,它的功能是讀取/proc文件系統(tǒng)中另一個文件/proc/ksyms的內(nèi)容,17,可編輯ppt,Modutils的常用命令lsmod命令17可編輯ppt,模塊的導(dǎo)出,和用戶空間的應(yīng)用程序不同的是,引入一個模塊的目的常常是為了給內(nèi)核提供一些routine,來完成特定的功能,很少有模塊什么符號都不導(dǎo)出。

    Linux為用戶提供了如下宏:,EXPORT_SYMBOL(var);/輸出symbol varEXPORT_SYMBOL_GPL(var);/輸出的symbol版權(quán)為GPL,18,可編輯ppt,模塊的導(dǎo)出和用戶空間的應(yīng)用程序不同的是,引入一個模塊的目的常,內(nèi)核符號表,模塊與模塊之間的共享方式,共享變量,函數(shù),內(nèi)核只把各個模塊中主要的變量和函數(shù)放在一個特定 的區(qū)段,這些變量和函數(shù)統(tǒng)稱為,符號,對于內(nèi)核這個特殊的母模塊,在kemelksymsc中定義了可以從中“移出”的符 號19,可編輯ppt,內(nèi)核符號表模塊與模塊之間的共享方式19可編輯ppt,模塊的依賴關(guān)系,模塊依賴,如前所述,內(nèi)核符號表記錄了所有模塊可以訪問的符號及相應(yīng)的地址當(dāng)一個新的 模塊被裝入內(nèi)核后,它所聲明的某些符號就會被登記到這個表中,使這些符號可能被其 他模塊所引用,這就引出了模塊依賴問題一個模塊A引用從另一個模塊B中移出的符號,叫做模塊B被模塊A引用,或者 模塊A依賴模塊B如果要鏈接模塊A,必須先鏈接模塊B這種模塊間相互依賴的關(guān) 系叫做模塊依賴20,可編輯ppt,模塊的依賴關(guān)系模塊依賴20可編輯ppt,模塊引用計數(shù)器,為了確保安全地卸載模塊,每個模塊都有一個引用計數(shù)器。

    當(dāng)執(zhí)行模塊所涉及的操 作時就遞增該模塊的計數(shù)器,在操作結(jié)束時就遞減這個計數(shù)器另外,當(dāng)模塊B被模塊 A引用時,模塊B的引用計數(shù)器就遞增;引用結(jié)束,計數(shù)器遞減什么時候可以卸載這 個模塊?當(dāng)然只有這個計數(shù)器值為0的時候例如,當(dāng)一個文件系統(tǒng)還安裝在系統(tǒng)中時 就不能將其卸載,而當(dāng)這個文件系統(tǒng)不再被使用時,引用計數(shù)器為0,可以卸載在linuxmoduleh文件中定義了如下三個宏來維護(hù)計數(shù)器:,MOD INC USE COUNT 當(dāng)前模塊計數(shù)器加1,MOD DEC USE COUNT 當(dāng)前模塊計數(shù)器減1,MOD m USE 計數(shù)器非0時返回真,21,可編輯ppt,模塊引用計數(shù)器 為了確保安全地卸載模塊,每個模塊都有一個引用,內(nèi)核的編譯,22,可編輯ppt,內(nèi)核的編譯22可編輯ppt,內(nèi)核簡介,內(nèi)核是一個操作系統(tǒng)的核心它負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動程序、文件 和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性Linux的一個重要特點就是其源代碼的公開性其所有的內(nèi)核源程序都可以在 usrsrcLinux下找到,大部分應(yīng)用軟件都是遵循GPL設(shè)計的,用戶可以獲取相應(yīng)的源程 序代碼23,可編輯ppt,內(nèi)核簡介 內(nèi)核是一個操作系統(tǒng)的核心。

    它負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi),配置內(nèi)核所需指令,#make config,基于文本的、最為傳統(tǒng)的配置界面make menuconfig,基于文本菜單的配置界面,字符終端下推薦使用make xconfig,基于圖形窗口模式的配置界面,Xwindow環(huán)境下推薦使用make oldconfig,如果只想在原來內(nèi)核配置的基礎(chǔ)上修改一些小地方,用此命令會省去不少麻煩,24,可編輯ppt,配置內(nèi)核所需指令#make config24可編輯ppt,1,代碼成熟度選項,對那些還在測試階段的代碼,驅(qū)動模塊等的支持對那些已經(jīng)老舊的,被現(xiàn)有文件替代了的驅(qū)動,代碼的支持,可以不選動態(tài)加載模塊支持選項,支持模塊加載功能,該項用來支持跨內(nèi)核版本的模塊支持通過kerneld程序的幫助在需要的時候自動載入或卸載那些可載入式的模塊系統(tǒng)類型,主要是CPU類型,以及于此相關(guān)的內(nèi)容,常用設(shè)備設(shè)置,可熱拔插的設(shè)備的支持,網(wǎng)。

    點擊閱讀更多內(nèi)容
    賣家[上傳人]:494895976112427
    資質(zhì):實名認(rèn)證