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