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

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

Linux內(nèi)核分析(一)簡介和內(nèi)核配置編譯安裝

2022-01-12 21:25 作者:Linux遠(yuǎn)航者  | 我要投稿

一、Linux體系結(jié)構(gòu)簡介

1.?Linux體系結(jié)構(gòu)(linux系統(tǒng)構(gòu)成)

Linux可以分為兩部分,分別為用戶空間和內(nèi)核空間具體如下圖:

a)?用戶空間包括:用戶的應(yīng)用程序、C庫

b)?內(nèi)核空間包括:系統(tǒng)調(diào)用接口、內(nèi)核(狹義內(nèi)核)、平臺架構(gòu)相關(guān)的代碼

2.?為什么要分為內(nèi)核空間和用戶空間

我們在分析u-boot的時候就說到過,我們的cpu在不同的工作模式下可以訪問的寄存器是不一樣的,所以為了保護(hù)我們的操作系統(tǒng),避免用戶程序?qū)?nèi)核搞崩,所以進(jìn)行了內(nèi)核空間和用戶空間的劃分。

a)?Arm處理器工作模式劃分:usr、FIQ、IRQ、svc、abt、und、sys(具體介紹在cnblogs.com/wrjvszq/p/4

b)?X86處理器工作模式劃分:Ring0—Ring3,Ring0下可以執(zhí)行特權(quán)指令,可以訪問IO設(shè)備,Ring3則有很多的限制

注:我們可以通過系統(tǒng)調(diào)用和硬件中斷來完成用戶空間到內(nèi)核空間的轉(zhuǎn)移

【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【865977150】整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。?!

3.?Linux內(nèi)核結(jié)構(gòu)(廣義內(nèi)核)

Linux內(nèi)核由七個部分構(gòu)成,具體如下圖:


a)?系統(tǒng)調(diào)用接口(SCI):open、read、write等系統(tǒng)調(diào)用

b)?進(jìn)程管理(PM):創(chuàng)建進(jìn)程、刪除進(jìn)程、調(diào)度進(jìn)程等

c)?內(nèi)存管理(MM):內(nèi)存分配、管理等

d)?虛擬文件系統(tǒng)(VFS):為多種文件系統(tǒng)提供統(tǒng)一的操作接口

e)?網(wǎng)絡(luò)協(xié)議棧:提供各種網(wǎng)絡(luò)協(xié)議

f)?CPU架構(gòu)相關(guān)代碼(Arch):為的是提高至移植性

g)?設(shè)備驅(qū)動程序(DD):各種設(shè)備驅(qū)動,占到內(nèi)核的70%左右代碼

二、Linux內(nèi)核源碼簡介

1.?源碼獲取

Linux內(nèi)核獲取有兩種方法,一種是在www.kernel.org?直接獲取,另一種是使用git獲?。ň唧w方法參考網(wǎng)絡(luò))。

2.?源碼目錄簡介

其源碼主要有以下目錄(介紹重要目錄):

a)?Arch目錄:存放處理器相關(guān)的代碼。下設(shè)子目錄,分別對應(yīng)具體的CPU,每個子目錄有boot,mm,以及kernel三個子目錄,分別對應(yīng)系統(tǒng)引導(dǎo)以及存儲管理,和系統(tǒng)調(diào)用

b)?Include目錄:內(nèi)核所需要的大部分頭文件目錄。與平臺無關(guān)的在include/linux子目錄下,與平臺相關(guān)的則放在include相應(yīng)的子目錄中。

c)?fs目錄:存放各種文件系統(tǒng)的實現(xiàn)代碼。

d)?init目錄:init子目錄包含核心的初始化代碼(不是系統(tǒng)的引導(dǎo)代碼)。其包含兩個文件main.c和version.c,可以用來研究核心如何工作。

e)?ipc目錄:包含核心進(jìn)程間的通信代碼。

f)?kernel目錄:包含內(nèi)核管理的核心代碼。與硬件相關(guān)代碼放在arch/*/kernel目錄下。

g)?mm目錄:包含了所有的內(nèi)存管理代碼。與硬件相關(guān)的內(nèi)存管理代碼位于arch/*/mm目錄下。

h)?scripts目錄:包含用于配置核心的腳本文件。

i)?lib目錄:包含了核心的庫代碼,與硬件相關(guān)的庫代碼被放在arch/*/lib/目錄下

三、?Linux內(nèi)核配置、編譯、安裝

1.?X86配置

Linux內(nèi)核的編譯有兩種方法,具體如下:

a)?交互式:在內(nèi)核頂層的目錄下運行make config,按照提示一步一步的按照自己的需求對內(nèi)核進(jìn)行配置。

b)?菜單式:在內(nèi)核頂層的目錄下運行make menuconfig,菜單式的按照自己的需求對內(nèi)核進(jìn)行配置。

2.?X86編譯

Linux內(nèi)核的編譯要經(jīng)過以下步驟,具體如下:

1.?內(nèi)核編譯:linux內(nèi)核的編譯有以下兩種方法。

n?make zImage:編譯出的內(nèi)核小于512k(老版本內(nèi)核)

n?make bzImage:通用編譯命令

注:在以上兩個命令中加V=1可查看編譯過程中的詳細(xì)信息

2.?內(nèi)核模塊編譯:執(zhí)行make modules編譯內(nèi)核模塊。

3.?內(nèi)核模塊安裝:執(zhí)行make modules_install將編譯好的內(nèi)核模塊復(fù)制到當(dāng)前系統(tǒng)的/lib/modules下的**目錄下。

4.?內(nèi)核模塊打包:執(zhí)行mkinitrd initrd-$version $version對內(nèi)核模塊進(jìn)行打包,其中initrd-$version表示要打包為的文件的名字,$version表示要打包的目錄即我們上一步生成的目錄。

3.?X86安裝

Linux內(nèi)核的安裝要經(jīng)過以下步驟,具體如下:

a)?拷貝內(nèi)核:復(fù)制1編譯出來的內(nèi)核映像到啟動目錄cp arch/$cpu/boot/bzImage(1編譯出來的bzimage)/boot/vmlinuz-$version

b)?拷貝內(nèi)核模塊文件:執(zhí)行cp initrd-$version(4生成的文件) /boot/ 將4生成的文件拷貝到boot下

c)?修改啟動配置文件:修改/etc/grub.conf文件


Linux內(nèi)核分析(一)簡介和內(nèi)核配置編譯安裝的評論 (共 條)

分享到微博請遵守國家法律
三门县| 融水| 恩施市| 新疆| 从化市| 阜阳市| 福建省| 蛟河市| 青铜峡市| 黄大仙区| 喜德县| 许昌县| 灌南县| 孝义市| 乌苏市| 田东县| 祁门县| 丰台区| 五指山市| 丽水市| 廉江市| 辽阳市| 裕民县| 翼城县| 泸定县| 定州市| 沅江市| 游戏| 金乡县| 汉沽区| 惠州市| 涞源县| 沈丘县| 三原县| 繁峙县| 内乡县| 瑞丽市| 昔阳县| 九江县| 四会市| 泉州市|