Linux內核@系統組成與內核配置編譯

Linux系統由什麼組成?html

由用戶空間(應用程序+GNU C標準庫)和內核空間(系統調用接口+內核+內核架構代碼)組成。網絡

 

Linux內核究竟是什麼?以及組成。架構

ARM的七種操做級別?工具

內核網絡協議棧(Network Stack)的做用?性能

  爲Linux提供了豐富的網絡協議(TCP/IP、PPPOE)實現。將網絡協議棧放在內核中爲了提升網絡性能,減小CPU開銷。ui

虛擬文件系統的做用?spa

爲了支持多種文件系統,併爲它們提供統一的操做接口。.net

 

Linux內核源代碼結構設計

關於每一個文件夾中的具體內容分析:參考http://blog.chinaunix.net/uid-24219701-id-2843452.htmlunix

Fedoar14系統中內核代碼目錄:

 

Linux內核配置與編譯

內核配置命令(在內核根目錄執行):

執行配置命令前若原來已經編譯過內核則先 $make mrproper

$make config     基於文本模式的交互式配置。

$make menuconfig   基於文本模式的菜單型配置(使用較多)。 y m n 三種形式。 

$make gconfig           基於gtk+的圖形工具。

$make defconfig

$make xconfig    基於Tcl/Tk的X圖形配置界面。

$make oldconfig     使用原有的配置文件(.config),可是會詢問新增長的內核功能。

經常使用內核配置選項參考:http://www.cnblogs.com/Robyte/archive/2010/06/09/2591274.html

內核配置命令詳細參考《Linux內核設計與實現》

內核編譯:

內核配置完成以後,直接$make(注意若是內核是2.6以前的版本須要首先運行一下$make dep,2.6之後的版本不用由於代碼之間的依賴關係會自動維護),在內核代碼根目錄下產生elf文件,可是此文件不是可執行的二進制文件。

若是有模塊編譯一下模塊:$make modules;

而後安裝模塊:$make modules_install;

而後:$make install,安裝到/boot目錄下。(這個過程也是內核安裝過程,下面的內核安裝是另外一種方法)

要生成可執行的二進制的內核文件還須要使用$make zImage或$make bzImage(前者用於編譯小於512K的內核,後者用於編譯大內核)。編譯好後在arch/<cpu>/boot/下會生成二進制的內核文件。

內核安裝(x86平臺):

1. cp arch/i386/boot/bzImage /boot/vmlinuz-$version

2. cp System.map /boot/System.map-$version

3. rm /boot/System.map

4. ln -s /boot/System.map-$version /boot/System.map

5. 修改/etc/grub.conf 或者/etc/lilo.conf,添加一個新的title(相似下面)

注:/boot/grub/menu.lst 能夠查看當前系統加載的二進制內核文件。

內核更新詳細步驟參考:http://www.2cto.com/os/201312/265425.html

 

內核模塊編寫、編譯、安裝、運行和卸載

編譯時asm/linkage.h找不到的問題:http://www.cnblogs.com/QuLory/archive/2012/10/23/2736339.html

2.6以上的Linux內核使用kbuild的Makefile進行編譯。

關於kbuild參考系列文章:http://blog.csdn.net/yunsongice/article/details/6046537

相關文章
相關標籤/搜索