第6章Linux內(nèi)核配置與啟動.ppt_第1頁
第6章Linux內(nèi)核配置與啟動.ppt_第2頁
第6章Linux內(nèi)核配置與啟動.ppt_第3頁
第6章Linux內(nèi)核配置與啟動.ppt_第4頁
第6章Linux內(nèi)核配置與啟動.ppt_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Linux內(nèi)核配置與啟動,第6章,本章結(jié)構(gòu),Linux內(nèi)核配置,Linux內(nèi)核配置與啟動,內(nèi)核源碼結(jié)構(gòu)及Makefile分析,Linux內(nèi)核配置選項,內(nèi)核的Kconfig分析,Linux版本及特點,Linux內(nèi)核啟動流程分析,Linux內(nèi)核啟動過程概述,編譯、燒寫、啟動內(nèi)核,修改內(nèi)核以支持S3C2440開發(fā)板,獲取內(nèi)核源,Unix有多遙遠?,Unix誕生于失敗的項目:Multics 1969年,Ken Thomspon在PDP-7上實現(xiàn) 1973年,Dennis Ritche實現(xiàn)了C語言版的Unix 1983年,AT&T推出System V 19791993年,3BSD,到最后一個4.4BSD

2、 商業(yè)的Unix版本: HP UX Sun solaris IBM AIX,Unix有多遙遠?,1、1969年由Ken Thompson在AT& T貝爾實驗室實現(xiàn),運行在一臺DEC PDP-7計算機上,后來Ken Thompson和Dennis Ritchie使用C語言對整個系統(tǒng)進行了再 加工和編寫,使得Unix能夠很容易的移植到其他硬件的計算機上。經(jīng)C語言改版后分發(fā)給科研機構(gòu)和大學(xué)。 2、 70年代末,到Unix V6版本時,AT&T認識到Unix的價值,成立了Unix系 統(tǒng)實驗室,宣布對unix產(chǎn)品擁有所有權(quán) 3、加州大學(xué)伯克利分校計算機系統(tǒng)研究小組(CSRG)對Unix進行研究出BSD

3、Unix(ARPNET最新利用BSD實現(xiàn)TCP/IP) 4、AT&T吸收BSD Unix的優(yōu)點,推出Unix System V版本,從此以后,BSD(Berkeley Software Distribution) 5、 Unix和Unix System V形成了當今Unix的兩大主流,現(xiàn)代的Unix版本大部分都是這兩個版本的衍生產(chǎn)品。,Unix有多遙遠?,Unix操作系統(tǒng)的歷史漫長而曲折,它的第一個版本是1969年由Ken Thompson在AT& T貝爾實驗室實現(xiàn)的,運行在一臺DEC PDP-7計算機上。這個系統(tǒng)非常粗糙,與現(xiàn)代Unix相差很遠,它只具有操 作系統(tǒng)最基本的一些特性。后來Ken

4、 Thompson和Dennis Ritchie使用C語言對整個系統(tǒng)進行了再 加工和編寫,使得Unix能夠很容易的移植到其他硬件的計算機上。從那以后,Unix系統(tǒng)開始了令人矚目的發(fā)展。 由于此時AT&T還沒有把Unix作為它的正式商品,因此研究人員只是在實驗室內(nèi)部使用并完善它。正 是由于Unix是被作為研究項目,其他科研機構(gòu)和大學(xué)的計算機研究人員也希望能得到這個系統(tǒng),以便進行自己的研究。A T&T以分發(fā)許可證的方法,對Unix僅僅收取很少的費用,大學(xué)和研究機構(gòu)就能獲得Unix的源代碼以進行研 究。Unix的源代碼被散發(fā)到各個大學(xué),一方面使得科研人員能夠根據(jù)需要改進系統(tǒng),或者將其移植到其他的硬件

5、環(huán)境中去 ,另一方面培養(yǎng)了懂得Unix使用和編程的大量的學(xué)生,這使得Unix的普及更為廣泛。,Unix有多遙遠?,由于操作系統(tǒng)的開發(fā)相當困難,只有少數(shù)的計算機廠商,如IBM、Digital等大型公司,才擁有自己的操作 系統(tǒng),而其他眾多生產(chǎn)計算機的硬件廠商則采用別人開發(fā)的操作系統(tǒng)。因為Unix不需要太多的花費,因此很多廠商就選擇 了Unix作為他們生產(chǎn)的計算機使用的操作系統(tǒng)。他們把Unix移植到自己的硬件環(huán)境下,而不必從頭開發(fā)一個操作系統(tǒng) 。 到了70年代末,在Unix發(fā)展到了版本6之后,AT&T認識到了Unix的價值,成立了Unix系 統(tǒng)實驗室(Unix System Lab,USL)來繼續(xù)發(fā)

6、展Unix。因此AT&T一方面繼續(xù)發(fā)展內(nèi)部使 用的Unix版本7,一方面由USL開發(fā)對外正式發(fā)行的Unix版本,同時AT&T也宣布對Unix產(chǎn)品擁有 所有權(quán)。幾乎在同時,加州大學(xué)伯克利分校計算機系統(tǒng)研究小組(CSRG)使用Unix對操作系統(tǒng)進行研究,因此他們的 研究成果就反映在他們使用的Unix中。他們對Unix的改進相當多,增加了很多當時非常先進的特性,包括更好的內(nèi)存 管理,快速且健壯的文件系統(tǒng)等,大部分原有的源代碼都被重新寫過,以支持這些新特性。很多其他Unix使用者,包括其 他大學(xué)和商業(yè)機構(gòu),都希望能得到CSRG改進的Unix系統(tǒng)。因此CSRG中的研究人員把他們的Unix組成一個完整 的

7、Unix系統(tǒng)BSD Unix(Berkeley Software Distribution),向外發(fā)行。,Unix有多遙遠?,BSD Unix在Unix的歷史發(fā)展中具有相當大的影響力,被很多商業(yè)廠家采用,成為很多商用Unix的基 礎(chǔ),而AT&T與其同時存在的Unix版本的影響就小得多。同時很多研究項目也是以BSD Unix為研究系 統(tǒng),例如美國國防部的項目ARPANET,ARPANET今天發(fā)展成為了Internet,而BSD Unix中最 先實現(xiàn)了TCP/IP,使Internet和Unix緊密結(jié)合在一起。 而AT&T的Unix系統(tǒng)實驗室,同時也在不斷改進他們的商用Unix版本,直到他們吸收了B

8、SD Unix中已有的各種先進特性,并結(jié)合其本身的特點,推出了Unix System V版本之后,情況才有了改變。從 此以后,BSD Unix和Unix System V形成了當今Unix的兩大主流,現(xiàn)代的Unix版本大部分都是 這兩個版本的衍生產(chǎn)品。,Unix的優(yōu)勢,簡潔,系統(tǒng)調(diào)用僅百余個 在Unix,所有的東西被當作文件看待 Unix的內(nèi)核和相關(guān)的系統(tǒng)工具軟件都是C開發(fā)的 驚人的移植能力 fork()迅速,追尋Linus的足跡,1991年,linus為intel 80386開發(fā)的unix操作系統(tǒng) Linux內(nèi)核遵循GPL,是Free software Linux 是unix-like的操作

9、系統(tǒng)內(nèi)核 Linux系統(tǒng)的基礎(chǔ) 內(nèi)核 C庫 GCC 系統(tǒng)的基本工具,Linux的發(fā)行版,Debian GNU/Linux Fedora Gentoo Linux Mandriva Linux Redhat Enterprise Linux(RHEL) Slackware Linux OpenSuSE SuSE Linux Enterprise Server Ubuntu,操作系統(tǒng)VS內(nèi)核,一般理解的操作系統(tǒng) 完成最基本功能,和系統(tǒng)管理的那些部分 內(nèi)核,驅(qū)動,啟動引導(dǎo)程序,命令行shell以及其他的一些界面 現(xiàn)在理解的操作系統(tǒng),指內(nèi)核 內(nèi)核才是操作系統(tǒng)的核心 負責(zé)響應(yīng)中斷服務(wù)程序 負責(zé)管理多個進

10、程從而分享處理器時間的調(diào)度程序 負責(zé)管理進程地址空間的內(nèi)存管理程序 網(wǎng)絡(luò),和進程間通信 運行于系統(tǒng)態(tài),以及受保護的內(nèi)存空間,稱之為內(nèi)核空間,Linux內(nèi)核 VS 傳統(tǒng)UNIX的內(nèi)核,都是單體內(nèi)核,Linux支持動態(tài)加載模塊 Linux內(nèi)核支持preemptive Linux提供了面向?qū)ο蟮脑O(shè)備模型,hotplug等 虛擬文件系統(tǒng) 內(nèi)核線程,安裝內(nèi)核源碼,兩種形式的壓縮 GNU zip #tar xzvf linux-x.y.z.tar.gz Bzip2 #tar xvjf linux-x.y.z.tar.bz2,Linux的源代碼結(jié)構(gòu),目錄描述,Linux內(nèi)核源碼層次結(jié)構(gòu),arch/arm/的

11、目錄,include/asm的頭文件目錄,1,asm是一個symbolic link, 因為眾多的文件都需要包含asm-XXX/目錄下的某個頭文件,使用asm的鏈接之后,在不同的平臺下指向不同的目錄,這樣,增加了軟件的可移植性。,include/linux/頭文件目錄,與平臺無關(guān)的頭文件一般放在linux這個目錄下 如linux/mtd/,Linux Makefile分析,Makefile的作用: 決定編譯哪些文件。 怎樣編譯這些文件? 怎樣連接這些文件,最重要的是它們的順序如何?,Linux內(nèi)核Makefile文件分類,Makefile的作用(1),決定編譯哪些文件 1) 頂層Makefil

12、e決定內(nèi)核根目錄下哪些子目錄將被編迸內(nèi)核。 2) arch/$(ARCH)/Makefile決定arch/$(ARCH)目錄下哪些文件、哪些目錄將被編進內(nèi)核。 3) 各級子目錄下的Makefile決定所在目錄下哪些文件將被編進內(nèi)核,哪些文件將被編成模塊(即驅(qū)動程序),進入哪些子目錄繼續(xù)調(diào)用它們的Makefile。,Makefile的作用(2),怎樣編譯這些文件 即編譯選項、連接選項是什么 選項分3類: 全局的,適用于整個內(nèi)核代碼樹; 局部的,僅適用于某個Makefile中的所有文件; 個體的,僅適用于某個文件,Makefile的作用(3),怎樣連接這些文件,它們的順序如何 arch/arm/M

13、akefile: 頂層Makefile: 頂層Makefile按照一定的順序組織文件,根據(jù)連接腳本arc/$(ARCH)/ kernel/ vmlinux.lds生成內(nèi)核映象文件vmlinux,對Makefile的總結(jié),(1)配置文件.config中定義了一系列的變量,Makefile將結(jié)合它們釆決定哪些文件被編 進內(nèi)核、哪些文件被編成模塊、涉及哪些子目錄。 (2)頂層Makefile和arch/$(ARCH)/Makefile決定根目錄下哪些子目錄,arc/$(ARCH) 目錄下哪些文件和目錄將被編迸內(nèi)核。 (3)最后,各級子目錄下的Makefile決定所在目錄下哪些文件將被編進內(nèi)核,哪些文

14、件 將被編成模塊(即驅(qū)動程序),進入哪些目錄繼續(xù)調(diào)用它們的Makefile 。 ( 4)頂層Makefile和arch/$(ARCH)/Makefile設(shè)置了可以影響所有文件的編譯、連接選 項:CFLAGS、MLAGS、LDFLAGS、ARFLAGS。 (5)各級子目錄下的Makefile中可以設(shè)置能夠影響當前目錄下所有文件的編譯、連接選 項:EXTRA_CFLAGS、EXTRA_AFLAGS、EXTRA_LDFLAGS、EXTRA_ARFLAGS;還可以設(shè)置可以影響某個文件的編譯選項:CFLAGS_$,AFLAGS_$ 。 ( 6)頂層Makefile按照一定的順序組織文件,根據(jù)連接腳本ar

15、c/$(ARCH)/ kernel/ vmlinux.lds生成內(nèi)核映象文件vmlinux。,內(nèi)核的Kconfig分析,所有配置工具都是通過讀取arc/$(ARCH)/Kconfig文件來生成配置界面 這個文件是所有配置文件的總?cè)肟?,它會包含其他目錄的Kconfig文件。 make menuconfig,得到配置界面如下圖所示:,內(nèi)核的Kconfig分析,內(nèi)核源碼每個子目錄中,都有一個Makefile文件和Kconfig文件 Kconfig用于配置內(nèi)核,它就是各種配置界面的源文件。 內(nèi)核的配置工具讀取各 個Kconfig文件,生成配置界面供開發(fā)人員配置內(nèi)核,最后生成配置文件.config。 內(nèi)

16、核的配置界面以樹狀的菜單形式組織,主菜單下有若干個子菜單,子菜單下又有子菜 單或配置選項。每個子菜單或選項可以有依賴關(guān)系,這些依賴關(guān)系用來確定它們是否顯示。 只有被依賴項的父項已經(jīng)被選中,子項才會顯示。,編譯內(nèi)核的步驟,Step1: 拷貝config_n35為文件.config #cp config_n35 .config Step2: 修改內(nèi)核目錄下的Makefile,修改CROSS_COMPILE ?= arm-linux- ARM ?= arm Step3: 執(zhí)行make menuconfig,并保存,如果有問題,以root權(quán)限執(zhí)行 #make menuconfig Step4: 編譯內(nèi)

17、核 #make zImage 編譯完成后,zImage放在/arch/arm/boot/zImage,Linux內(nèi)核配置選項,make menuconfig 配置界面主菜單的類別,配置界面主菜單的類別,“system Type”菜單:系統(tǒng)類型,“Device Drivers”菜單:設(shè)備驅(qū)動程序,Linux內(nèi)核啟動過程概述,Linux的啟動過程可以分為兩部分; 架構(gòu)/開發(fā)板相關(guān)的引導(dǎo)過程 后續(xù)的通用啟動過程,Linux內(nèi)核啟動過程概述,第一階段:引導(dǎo)階段 引導(dǎo)階段通常使用匯編語言編寫,它首先檢查內(nèi)核是否支持當前架構(gòu)的處理器,然后檢 查是否支持當前開發(fā)板。通過檢查后,就為調(diào)用下一階段的start_

18、kernel函數(shù)作準備了。這主要分如下兩個步驟。 (1)連接內(nèi)核時使用的虛擬地址,所以要設(shè)置頁表、使能MMU。 (2)調(diào)用C函數(shù)start_kernel之前的常規(guī)工作,包括復(fù)制數(shù)據(jù)段、清除BSS段、調(diào)用start_kernel函數(shù),Linux內(nèi)核啟動過程概述,start_kernel函數(shù)部分代碼分析,第二階段第一個C函數(shù):start_kernel函數(shù) 定義在init/main.c中 U-Boot傳給內(nèi)核的參數(shù)有兩類: 預(yù)先存在某個地址的tag列表 調(diào)用內(nèi) 核時在r1寄存器中指定的機器類型ID 其中setup_arch函數(shù) 是重要初始化函數(shù),setup_arch函數(shù)分析,在arch/arm/kernel/setup.c中定義,編譯內(nèi)核,解壓內(nèi)核 配置、編譯內(nèi)核,cd /home/student tar xvzf linux-2.6.29.tgz,cp config_mini2440_n35 .config make menuconfig make

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論