歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux內核

Linux內核編譯與安裝

平台:虛擬機Ubuntu10.04 內核版本:3.0.80        ---------------------------------------------------------------------------------------------------- 內核的編譯分為兩種:X86平台和ARM嵌入式平台   一.X86   平台:虛擬機Ubuntu10.04   內核版本:3.0.80   1.下載(並安裝)源碼:linux-3.0.08   https://www.kernel.org/pub/linux/kernel/   網站默認的源碼支持的為X86平台,下載源碼解壓到自定義的目錄:/root(此目錄是我自己建的,你盡可以解壓到任意目錄),解壓後生成內核文件夾:linux-3.0.80   2.下載(並安裝)終端處理庫:libncurses5-dev   這個庫用於後面的內核配置界面命令的執行環境。許多人在線安裝軟件包會遇到網速過慢的情況,這裡建議先在“新立得軟件管理”裡搜索到適合自己系統的軟件包版本,然後在下述網址搜索下載,最後離線安裝即可。   網址1:   https://launchpad.net/ubuntu   網址2:    http://packages.ubuntu.com/   3.內核配置:   終端界面,執行以下命令: cd /root/linux-3.0.80# 進入內核根目錄 make meuconfig      #進入內核配置界面   此時,出現如圖內核配置界面:   上下鍵選擇相應的選項,空格鍵更改相應的選項的屬性: [*]把此項編入系統內核 [M]把此項以驅動模塊的形式編譯。 []不選擇編譯此項。   雙擊Esc後退。選擇完後退出,提示是否保存,確定即可。這時候在根目錄下生成一個隱藏文件:.config   裡面以“文本”的形式記錄下你的配置信息。當你後續編譯的時候即按照這個文件的信息進行編譯。   當然,你也可以直接輸入: make defaultconfig   來執行默認的配置信息。   這裡還要敘述一下另外兩個文件:Kcongfig和Makefie。   這兩個文件分布在內核源碼樹的各個目錄下,其中Kconfig構成了一個分布式的內核設置數據庫,每個Kconfig描述了所屬目錄源文件相關的內核設置菜單。在內核設置make menuconfig(或xconfig等)時,從Kconfig中讀出菜單,用戶在配置界面選擇後保存到.config的內核設置文件中。在內核編譯時,Makefile調用這個.config,就知道了用戶的選擇。   比如,要想添加新的驅動到內核的源碼中,要修改Kconfig,這樣就能選擇這個驅動。如圖 就是下圖USB_SURPORT的菜單信息 如果想使某個驅動被編譯,要修改Makefile,如圖: 也就是說,Kconfig負責使你的配置菜單顯示出來。而真正要想編譯出來相應的模塊是由Makefile來負責的。而上圖中等號右邊的文件名對應的c源代碼,就在Makefile當下的目錄下,Makefile負責引導編譯這些c源代碼變成相應的文件。 3.編譯:       如果是編譯整個內核,直接輸入: make 而實際上,為了加快編譯速度我們常常執行 make -j4 其中數字4可以理解為4線程同時編譯,所以速度會快。理論上數字應為實際cpu核心+1.但是,如果你是雙核的就直接寫成 make -j4也是沒有問題的。另外需要解釋的是,你會看到一些文檔的執行命令是: make bzlmage。實際上,make命令默認的執行的是:Make bzlmage和make modules,即編譯內核和內核驅動。而生成的內核鏡像zlmage在內核源碼目錄下:arch/x86/boot或者是arch/i386/boot.   而如果你只是編譯驅動的話,請執行: make modules   就行了。   4.安裝:   安裝模塊: make  modules_install   執行後,系統會在/lib/modules目錄下生成一個3.0.8子目錄,裡面存放著新內核的所有可加載模塊(即將編譯好的modules拷貝到/lib/modules下),注意,此目錄是系統的目錄,不是內核源碼的目錄。   安裝內核: make install   執行後,即復制內核目錄內的.config,vmlinuz,initrd.img,System.map文件到系統/boot目錄、更新grub。   5.檢查: dpkg--get-selections|grep linux   此命令可以查看當前安裝的內核版本號有哪些,從而看到我們是否把新內核安裝到系統了   6.重啟: Reboot   在內核選擇界面,選擇內核版本號。對於不同的系統,有可能得修改一下啟動引導文件。這裡先不敘述。   好了,這就是X86內核的編譯與安裝。 ------------------------------------------------------------------------------------------------------   二 ARM   平台:Ubuntu10.04    交叉編譯環境:arm-linux-gcc  4.5.1   目標開發板:友善之臂tiny210   內核移植版本:3.0.8   1.下載內核   2.下載終端處理庫   3.建立交叉編譯環境:   虛擬機上默認的系統的編譯器是X86的,也就是說編譯完成的內核是適用於X86機器的。所以我們必須安裝交叉編譯環境,使X86機器編譯出的內核適用於ARM平台。一般所買的開發板都配套有開發板建立交叉編譯環境的說明文檔,這裡我簡要的說明一下:   1.首先把交叉編譯器拷貝到Ubuntu系統任意目錄:   在終端命令行輸入:       cd /tmp       #進入所在目錄       tar xvzfarm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C /#解壓安裝   執行後,將把arm-linux-gcc安裝到/opt/FriendlyARM/toolschain/4.5.1目錄   2.編輯環境變量:       gedit /root/.bashrc      #打開文件.bashrc,   最後一行添加:   export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,注意路徑一定要寫對,否則將不會有效。 3.注銷計算機後,重新回到命令終端,執行命令: arm-linux-gcc –v   會出現如下信息,這說明交叉編譯環境已經成功安裝 其實,你只需要看到最後一行gcc version 4.5.1就行了。   4.配置交叉編譯器:   如果此時我們執行make命令來編譯內核的話,系統默認的依然是調用gcc編譯器來編譯。執行: gdit Makefile   #打開源碼目錄下的Makefile文件   找到下面兩行:(192行左右) 修改為:   這個時候,我們再執行make命令,就會調用交叉編譯器。   4.修改內核:   其實,原生X86的內核是不適用於ARM開發板的,一般情況下我們需要做相應的移植工作。網上關於特定開發板的內核移植有相應的文章。而實際上如果要獨立的做內核移植的話,需要對linux內核和嵌入式開發有不錯的理解。但是一般情況下,開發板配套的都會有適合此開發板的已經移植好的內核。所以在第一步確切的應該是:從開發板獲得內核源碼。而且這樣獲得內核源碼一般會省略掉上一步中修改Makefile文件的步驟。   5.編譯內核:   執行: make -j4   執行完後,會在arch/arm/boot生成zlmage鏡像。運用開發板配套的內核燒錄工具下載到開發板即可。   好了,就這樣!
Copyright © Linux教程網 All Rights Reserved