Linux內核配置與啟動_第1頁
Linux內核配置與啟動_第2頁
Linux內核配置與啟動_第3頁
Linux內核配置與啟動_第4頁
Linux內核配置與啟動_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux內核配置與啟動第6章本章結構Linux內核配置

Linux內核配置與啟動內核源碼結構及Makefile分析Linux內核配置選項內核的Kconfig分析Linux版本及特點Linux內核啟動流程分析

Linux內核啟動過程概述編譯、燒寫、啟動內核修改內核以支持S3C2440開發板獲取內核源Unix有多遙遠?Unix誕生于失敗的工程:Multics1969年,KenThomspon在PDP-7上實現1973年,DennisRitche實現了C語言版的Unix1983年,AT&T推出SystemV1979~1993年,3BSD,到最后一個4.4BSD商業的Unix版本:HPUXSunsolarisIBMAIXUnix有多遙遠?1、1969年由KenThompson在AT&T貝爾實驗室實現,運行在一臺DECPDP-7計算機上,后來KenThompson和DennisRitchie使用C語言對整個系統進行了再加工和編寫,使得Unix能夠很容易的移植到其他硬件的計算機上。經C語言改版后分發給科研機構和大學。2、70年代末,到UnixV6版本時,AT&T認識到Unix的價值,成立了Unix系統實驗室,宣布對unix產品擁有所有權3、加州大學伯克利分校計算機系統研究小組〔CSRG〕對Unix進行研究出BSDUnix〔ARPNET最新利用BSD實現TCP/IP〕4、AT&T吸收BSDUnix的優點,推出UnixSystemV版本,從此以后,BSD〔BerkeleySoftwareDistribution〕5、Unix和UnixSystemV形成了當今Unix的兩大主流,現代的Unix版本大局部都是這兩個版本的衍生產品。Unix有多遙遠?Unix操作系統的歷史漫長而曲折,它的第一個版本是1969年由KenThompson在AT&T貝爾實驗室實現的,運行在一臺DECPDP-7計算機上。這個系統非常粗糙,與現代Unix相差很遠,它只具有操作系統最根本的一些特性。后來KenThompson和DennisRitchie使用C語言對整個系統進行了再加工和編寫,使得Unix能夠很容易的移植到其他硬件的計算機上。從那以后,Unix系統開始了令人矚目的開展。由于此時AT&T還沒有把Unix作為它的正式商品,因此研究人員只是在實驗室內部使用并完善它。正是由于Unix是被作為研究工程,其他科研機構和大學的計算機研究人員也希望能得到這個系統,以便進行自己的研究。AT&T以分發許可證的方法,對Unix僅僅收取很少的費用,大學和研究機構就能獲得Unix的源代碼以進行研究。Unix的源代碼被散發到各個大學,一方面使得科研人員能夠根據需要改進系統,或者將其移植到其他的硬件環境中去,另一方面培養了懂得Unix使用和編程的大量的學生,這使得Unix的普及更為廣泛。Unix有多遙遠?由于操作系統的開發相當困難,只有少數的計算機廠商,如IBM、Digital等大型公司,才擁有自己的操作系統,而其他眾多生產計算機的硬件廠商那么采用別人開發的操作系統。因為Unix不需要太多的花費,因此很多廠商就選擇了Unix作為他們生產的計算機使用的操作系統。他們把Unix移植到自己的硬件環境下,而不必從頭開發一個操作系統。到了70年代末,在Unix開展到了版本6之后,AT&T認識到了Unix的價值,成立了Unix系統實驗室〔UnixSystemLab,USL〕來繼續開展Unix。因此AT&T一方面繼續開展內部使用的Unix版本7,一方面由USL開發對外正式發行的Unix版本,同時AT&T也宣布對Unix產品擁有所有權。幾乎在同時,加州大學伯克利分校計算機系統研究小組〔CSRG〕使用Unix對操作系統進行研究,因此他們的研究成果就反映在他們使用的Unix中。他們對Unix的改進相當多,增加了很多當時非常先進的特性,包括更好的內存管理,快速且健壯的文件系統等,大局部原有的源代碼都被重新寫過,以支持這些新特性。很多其他Unix使用者,包括其他大學和商業機構,都希望能得到CSRG改進的Unix系統。因此CSRG中的研究人員把他們的Unix組成一個完整的Unix系統──BSDUnix〔BerkeleySoftwareDistribution〕,向外發行。Unix有多遙遠?BSDUnix在Unix的歷史開展中具有相當大的影響力,被很多商業廠家采用,成為很多商用Unix的基礎,而AT&T與其同時存在的Unix版本的影響就小得多。同時很多研究工程也是以BSDUnix為研究系統,例如美國國防部的工程─ARPANET,ARPANET今天開展成為了Internet,而BSDUnix中最先實現了TCP/IP,使Internet和Unix緊密結合在一起。而AT&T的Unix系統實驗室,同時也在不斷改進他們的商用Unix版本,直到他們吸收了BSDUnix中已有的各種先進特性,并結合其本身的特點,推出了UnixSystemV版本之后,情況才有了改變。從此以后,BSDUnix和UnixSystemV形成了當今Unix的兩大主流,現代的Unix版本大局部都是這兩個版本的衍生產品。Unix的優勢簡潔,系統調用僅百余個在Unix,所有的東西被當作文件看待Unix的內核和相關的系統工具軟件都是C開發的驚人的移植能力fork()迅速追尋Linus的足跡1991年,linus為intel80386開發的unix操作系統Linux內核遵循GPL,是FreesoftwareLinux是unix-like的操作系統內核Linux系統的根底內核C庫GCC系統的根本工具Linux的發行版DebianGNU/LinuxFedoraGentooLinuxMandrivaLinuxRedhatEnterpriseLinux(RHEL)SlackwareLinuxOpenSuSESuSELinuxEnterpriseServerUbuntu操作系統VS內核一般理解的操作系統完成最根本功能,和系統管理的那些局部內核,驅動,啟動引導程序,命令行shell以及其他的一些界面現在理解的操作系統,指內核內核才是操作系統的核心負責響應中斷效勞程序負責管理多個進程從而分享處理器時間的調度程序負責管理進程地址空間的內存管理程序網絡,和進程間通信運行于系統態,以及受保護的內存空間,稱之為內核空間Linux內核VS傳統UNIX的內核都是單體內核,Linux支持動態加載模塊Linux內核支持preemptiveLinux提供了面向對象的設備模型,hotplug等虛擬文件系統內核線程安裝內核源碼兩種形式的壓縮GNUzipBzip2Linux的源代碼結構目錄描述目錄描述arch特定體系結構的源碼crytoCrytoAPIDocumentation內核源碼文檔Drivers設備驅動程序fsVFS和各種文件系統include內核頭文件init內核引導和初始化ipc進程間通信代碼kernel調度子系統這樣的核心子系統lib通用內核函數mm內存管理子系統與虛擬內存net網絡子系統scripts編譯內核所用的腳本securityLinux的安全模塊sound語音子系統usr早期用戶代碼(initramfs)Linux內核源碼層次結構arch/arm/的目錄目錄說明boot平臺相關的啟動代碼,一般包含head.Sconfigs預定義了此體系結構平臺下的配置文件kernel與體系結構相關的內核代碼lib與體系結構相關的內核函數庫mm與體系結構相關的內存管理部分代碼mach-xxx與某款特定CPU的平臺代碼include/asm的頭文件目錄1asm是一個symboliclink,因為眾多的文件都需要包含asm-XXX/目錄下的某個頭文件,使用asm的鏈接之后,在不同的平臺下指向不同的目錄,這樣,增加了軟件的可移植性。include/linux/頭文件目錄與平臺無關的頭文件一般放在linux這個目錄下如linux/mtd/LinuxMakefile分析Makefile的作用:決定編譯哪些文件。怎樣編譯這些文件?怎樣連接這些文件,最重要的是它們的順序如何?Linux內核Makefile文件分類Makefile的作用〔1〕決定編譯哪些文件1)頂層Makefile決定內核根目錄下哪些子目錄將被編迸內核。2)arch/$(ARCH)/Makefile決定arch/$(ARCH)目錄下哪些文件、哪些目錄將被編進內核。3)各級子目錄下的Makefile決定所在目錄下哪些文件將被編進內核,哪些文件將被編成模塊(即驅動程序),進入哪些子目錄繼續調用它們的Makefile。Makefile的作用〔2〕怎樣編譯這些文件即編譯選項、連接選項是什么選項分3類:全局的,適用于整個內核代碼樹;局部的,僅適用于某個Makefile中的所有文件;個體的,僅適用于某個文件Makefile的作用〔3〕怎樣連接這些文件,它們的順序如何arch/arm/Makefile:頂層Makefile:頂層Makefile按照一定的順序組織文件,根據連接腳本arc/$(ARCH)/kernel/vmlinux.lds生成內核映象文件vmlinux對Makefile的總結(1)配置文件.config中定義了一系列的變量,Makefile將結合它們釆決定哪些文件被編進內核、哪些文件被編成模塊、涉及哪些子目錄。(2)頂層Makefile和arch/$(ARCH)/Makefile決定根目錄下哪些子目錄,arc/$(ARCH)目錄下哪些文件和目錄將被編迸內核。(3)最后,各級子目錄下的Makefile決定所在目錄下哪些文件將被編進內核,哪些文件將被編成模塊(即驅動程序),進入哪些目錄繼續調用它們的Makefile。(4)頂層Makefile和arch/$(ARCH)/Makefile設置了可以影響所有文件的編譯、連接選項:CFLAGS、MLAGS、LDFLAGS、ARFLAGS。(5)各級子目錄下的Makefile中可以設置能夠影響當前目錄下所有文件的編譯、連接選項:EXTRA_CFLAGS、EXTRA_AFLAGS、EXTRA_LDFLAGS、EXTRA_ARFLAGS;還可以設置可以影響某個文件的編譯選項:CFLAGS_$@,AFLAGS_$@。(6)頂層Makefile按照一定的順序組織文件,根據連接腳本arc/$(ARCH)/kernel/vmlinux.lds生成內核映象文件vmlinux。內核的Kconfig分析所有配置工具都是通過讀取arc/$(ARCH)/Kconfig文件來生成配置界面這個文件是所有配置文件的總入口,它會包含其他目錄的Kconfig文件。makemenuconfig,得到配置界面如以下圖所示:內核的Kconfig分析內核源碼每個子目錄中,都有一個Makefile文件和Kconfig文件Kconfig用于配置內核,它就是各種配置界面的源文件。內核的配置工具讀取各個Kconfig文件,生成配置界面供開發人員配置內核,最后生成配置文件.config。內核的配置界面以樹狀的菜單形式組織,主菜單下有假設干個子菜單,子菜單下又有子菜單或配置選項。每個子菜單或選項可以有依賴關系,這些依賴關系用來確定它們是否顯示。只有被依賴項的父項已經被選中,子項才會顯示。編譯內核的步驟Step1:拷貝config_n35為文件.config#cpconfig_n35.configStep2:修改內核目錄下的Makefile,修改CROSS_COMPILE?=arm-linux-ARM?=armStep3:執行makemenuconfig,并保存,如果有問題,以root權限執行#makemenuconfigStep4:編譯內核#makezImage編譯完成后,zImage放在/arch/arm/boot/zImageLinux內核配置選項makemenuconfig配置界面主菜單的類別配置界面主菜單的類別“systemType〞菜單:系統類型“DeviceDrivers〞菜單:設備驅動程序Linux內核啟動過程概述Linux的啟動過程可以分為兩局部;架構/開發板相關的引導過程后續的通用啟動過程Linux內核啟動過程概述第一階段:引導階段引導階段通常使用匯編語言編寫,它首先檢查內核是否支持當前架構的處理器,然后檢查是否支持當前開發板。通過檢查后,就為調用下一階段的start_kernel函數作準備了。這主要分如下兩個步驟。〔1〕連接內核時使用的虛擬地址,所以要設置頁表、使能MMU。〔2〕調用C函數sta

溫馨提示

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

評論

0/150

提交評論