歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> Linux內核編譯與安裝

Linux內核編譯與安裝

日期:2017/3/1 12:22:10   编辑: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