第一章 Linux內核簡介html
(一)Unix是一個強大、健壯和穩定的操做系統,特色是:linux
(二)操做系統和內核簡介:操做系統是指在整個系統中負責完成最基本功能和系統管理的那些部分。git
(三)處理器在任何指定時間點上的活動範圍能夠歸納爲下列三者之一:編程
(四)Linux內核和傳統UNIX內核特色的比較(Linux是一個單內核)安全
(五)Linux內核版本ruby
版本號是偶數,穩定版;版本號是奇數,開發版
網絡
第二章 從內核出發併發
(一)獲取內核源碼異步
1. Git是一種開源的分佈式版本控制工具。git能夠下載和管理Linux的源代碼
Linux獲取最新提交到版本樹的一個副本
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
下載代碼後,更新到最新分支
$ git pull
若是壓縮形式爲bzip2:$ tar xvjf linux-x.y.z.tar.bz2
分佈式
若是壓縮形式爲zip:$ tar xvzf linux-x.y.z.tar.gz
$ patch -p1 < ../patch-x,y,z
目 錄 | 描 述 |
---|---|
arch | 特定體系結構的代碼 |
block | 塊設備I/O層 |
crypo | 加密API |
Documentation | 內核源碼文檔 |
drivers | 設備驅動程序 |
firmware | 使用某些驅動程序而須要的設備固件 |
fs | VFS和各類文件系統 |
include | 內核頭文件 |
init | 內核引導和初始化 |
ipc | 進程間通訊代碼 |
kernel | 像調度程序這樣的核心子系統 |
lib | 一樣內核函數 |
mm | 內存管理子系統和VM |
net | 網絡子系統 |
samples | 示例,示範代碼 |
scripts | 編譯內核所用的腳本 |
security | Linux 安全模塊 |
sound | 語音子系統 |
usr | 早期用戶空間代碼(所謂的initramfs) |
tools | 在Linux開發中有用的工具 |
virt | 虛擬化基礎結構 |
1.配置內核
基於字符頁面的命令行工具 make config
基於圖形界面工具 make menuconfig
基於默認配置 make defconfig
驗證和更新配置 make oldconfig
Makefile:根據配置的狀況,構造出須要編譯的源文件列表,而後分別編譯,並把目標代碼連接到一塊兒,最終造成 Linux 內核二進制文件。
config.in:內核配置文件,給用戶提供配置選擇的功能。
.config:用戶用來存放內核配置後結果的文件。
make:默認的Makefile自動化編譯。
2. 減小垃圾信息
3.衍生多個編譯做業
make程序能把編譯過程拆分紅多個並行的做業。其中每一個做業獨立併發地運行,有助於加快多處理器系統上的編譯過程,也有利於改善處理器的利用率。默認狀況下,make只衍生一個做業。
$ make > ../detritus #將錯誤報告和警告信息重定向到文件中 $ make > /dev/null #將無用的輸出信息重定向到/dev/null中 - /dev/null:空設備,輸入的信息直接丟棄
$ make -jn #以多個做業編譯內核,- j:指定同時執行多任務,- n:要衍生出的做業數
4. 安裝新內核
make modules_install #把全部已編譯的模塊安裝到正確的主目錄/lib/modules下
System.map文件:編譯時在內核代碼樹的根目錄下建立的用來將內核符號與它們的起始地址對應起來。符號對照表,
(1) Linux內核編成時不能訪問C庫
(2) Linux內核編程時必須使用GNU C
(3) Linux內核編程時缺少像用戶空間那樣的內存保護機制
(4) Linux內核編程時浮點數很難使用
(5) 內核只有一個很小的定長堆棧
(6) 因爲內核支持異步中斷、搶佔式和SMP,所以必須時刻注意同步和併發
(7) 要考慮可移植性的重要性
學習體會
本次學習了LINUX內核的一些基本常識,從何處獲取源碼,如何編譯,如何安裝內核。。。。。。。。
參考資料:
(1)《Linux內核設計與實現》課本一二章
(2)http://www.cnblogs.com/hyq20135317/p/5277142.html 博客