?? tlsa講義02章.txt
字號:
第二章 核心模塊和定制
核心功能
單一核心和模塊化核心
穩(wěn)定核心和正在發(fā)展核心
使用核心源代碼樹和它多包含文檔
配置、重建、定制安裝核心和模塊
2.1 核心基礎
核心的功能
核心的版本號X.Y.Z
附加的第四號碼
使用正在發(fā)展的核心的原因
系統(tǒng)管理要使用穩(wěn)定的核心
核心基本網(wǎng)站www.kernel.org
2.1 核心基礎
核心的結(jié)構(gòu):調(diào)度、結(jié)構(gòu)、設備驅(qū)動、文件系統(tǒng)、網(wǎng)絡、內(nèi)存管理、系統(tǒng)調(diào)用
資源樹結(jié)構(gòu):核心文件、Doc文件、Include文件、結(jié)構(gòu)依賴、驅(qū)動、網(wǎng)絡
2.1 編譯核心
前期準備知識:
備份與壓縮命令
用戶經(jīng)常需要備份計算機系統(tǒng)中的數(shù)據(jù),為了節(jié)省存儲空間,常常將備份文件進行壓縮.下面分別介紹備份與壓縮的命令.
2.1 tar命令
tar命令 可以為文件和目錄創(chuàng)建檔案。
利用tar,用戶可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar 最初被用來在磁帶上創(chuàng)建檔案,現(xiàn)在,用戶可以在任何設備上創(chuàng)建檔案,如軟盤。
利用 tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡傳輸是非常有用的。Linux上的tar是GNU版本的。
2.1 tar命令
語法∶tar [主選項+輔選項] 文件或者目錄
使用該命令時,主選項是必須要有的,它告訴tar要做什么事情,輔選項是輔助使用的,可以選用.
與其他Linux命令不同,tar的選項之前k可以不需要加“-”符號.
2.1 tar命令
主選項∶
c 創(chuàng)建新的檔案文件.如果用戶想備份一個目錄或是一些文件,就要選擇這個選項.
r 把要存檔的文件追加到檔案文件的未尾.例如用戶已經(jīng)作好備份文件,又發(fā)現(xiàn)還有一個目錄或是一些文件忘記備份了,這時可以使用該選項,將忘記的目錄或文件追加到備份文件中.
2.1 tar命令
t 列出檔案文件的內(nèi)容,查看已經(jīng)備份了哪些文件.
u 更新文件.就是說,用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最后.
x 從檔案文件中釋放文件.
C 指定釋放目錄
2.1 tar命令
輔助選項∶
f 使用檔案文件或設備,這個選項通常是必選的.
k 保存已經(jīng)存在的文件.例如我們把某個文件還原,在還原的過程中,遇到相同的文件,不會進行覆蓋.
m 在還原文件時,把所有文件的修改時間設定為現(xiàn)在.
2.1 tar命令
v 詳細報告tar處理的文件信息.如無此選項,tar不報告文件信息.
w 每一步都要求確認.
z 用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮.
2.1 gzip命令
gzip命令
減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網(wǎng)絡傳輸文件時,可以減少傳輸?shù)臅r間.
gzip是在Linux系統(tǒng)中經(jīng)常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用.
2.1 gzip命令
語法∶gzip [選項] 壓縮(解壓縮)的文件名
各選項的含義∶
-c 將輸出寫到標準輸出上,并保留原有文件.
-d 將壓縮文件解壓.
-l 對每個壓縮文件,顯示下列字段∶ 壓縮文件的大小, 未壓縮文件的大小, 壓縮比, 未壓縮文件的名字,
2.1 gzip命令
-r 遞歸式地查找指定目錄并壓縮其中的所有文件或者是解壓縮.
-t 測試,檢查壓縮文件是否完整.
-v 對每一個壓縮和解壓的文件,顯示文件名和壓縮比.
-num 用指定的數(shù)字num調(diào)整壓縮的速度,-1或-fast表示最快壓縮方法(低壓縮比),-9或-best表示最慢壓縮方法(高壓縮比).系統(tǒng)缺省值為6.
附注:bzip2命令
如果壓縮文件的后綴為.bz2
使用命令bzip2 –d xxx.bz2
例如:linux-2.6.10.tar.bz2
則:
bzip2 –d linux-2.6.10.tar.bz2
tar xvf linux-2.6.10.tar
2.1 編譯核心
下列條件,需要對核心進行重新編譯:
針對特定的CPU類型優(yōu)化核心
提供對沒有編譯到標準核心文件中的硬件驅(qū)動的支持
支持特殊的硬件
BUG修復或增加新特征所需的驅(qū)動更新
使用新功能以及為了優(yōu)化內(nèi)存的使用
2.2.1 準備源碼
光盤或從網(wǎng)絡上下載
Linux的一個重要的特點就是其源代碼的公開性,所有的內(nèi)核源程序都可以在/usr/src/linux下找到,大部分應用軟件也都是遵循GPL而設計的,你都可以獲取相應的源程序代 碼。任何一個軟件工程師都可以將自己認為優(yōu)秀的代碼加入到其中,由此引發(fā)的一個明顯的好處就是Linux修補漏洞的快速以及對最新軟件技術(shù)的利用。而Linux的內(nèi)核則是這些特點的最直接的代表。
2.2.1 準備源碼
Linux內(nèi)核版本發(fā)布的官方網(wǎng)站是<http://www.kernel.org/>,國內(nèi)各大ftp上一般都可 以找到某些版本的內(nèi)核。新版本的內(nèi)核的發(fā)布有兩種形式,一種是完整的內(nèi)核版本,另 外一種是patch文件,即補丁。完整的內(nèi)核版本比較大,比如linux-2.6.10.tar.bz2就有35M之多。完整內(nèi)核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分別 是使用gzip或者bzip2進行壓縮的文件,使用時需要解壓縮。
2.2.1 準備源碼
patch文件則比較小,一般 只有幾十K到幾百K,也有的會超過1M。但是patch文件是針對于特定的版本的,需要找到 自己對應的版本才能使用。
如果下載了patch文件,比如patch-2.2.20,就可以進行patch操作(下面假設patch-
2.2.20已經(jīng)位于/usr/src目錄下了,否則需要先把該文件拷貝到/usr/src下):
#patch -p0 < patch-2.2.20
2.2.1 準備源碼
解壓源碼到/usr/src目錄下
了解本機相關(guān)的硬件配置
瀏覽目錄下相關(guān)文檔文件
2.2.1內(nèi)核編譯的流程
編譯開始----- make mrproper;檢查所需的連接
配置核心
編譯核心
編輯/etc/lilo.conf
重新啟動新核心
重新啟動機器
發(fā)現(xiàn)并修理故障
2.2.1內(nèi)核編譯
編譯開始
通常要運行的第一個命令是:
#cd /usr/src/linux
#make mrproper
該命令確保源代碼目錄下沒有不正確的目標.o文件以及文件的互相依賴。如使用剛下載的完整的源程序包進行編譯,本步可以省略。而如果多次使用了這些源程序編譯內(nèi)核,那么最好要先運行一下這個命令。
2.2.1內(nèi)核編譯
make 可自動決定一個大程序中哪些文件需要重新編譯,并發(fā)布重新編譯它們的命令。
make并不是僅僅能夠處理C語言程序,它可以處理那些編譯器能夠在Shell命令下運行的的各種語言的程序。事實上,GNU Make不僅僅限于程序,它可以適用于任何如果一些文件變化導致另外一些文件必須更新的任務。
2.2.1內(nèi)核編譯
如果要使用make,必須先寫一個稱為Makefile的文件,該文件描述程序中各個文件之間的相互關(guān)系,并且提供每一個文件的更新命令。在一個程序中,可執(zhí)行程序文件的更新依靠OBJ文件,而OBJ文件是由源文件編譯得來的。
2.2.1內(nèi)核編譯
一旦合適的Makefile文件存在,每次更改一些源文件,在shell命令下簡單的鍵入:
make
就能執(zhí)行所有的必要的重新編譯任務。Make程序根據(jù)Makefile文件中的數(shù)據(jù)和每個文件更改的時間戳決定哪些文件需要更新。對于這些需要更新的文件,Make基于Makefile文件發(fā)布命令進行更新,進行更新的方式由提供的命令行參數(shù)控制。
2.2.1內(nèi)核編譯
Make程序需要一個所謂的Makefile文件來告訴它干什么。在大多數(shù)情況下,Makefile文件告訴Make怎樣編譯和連接成一個程序。
2.2.1內(nèi)核編譯
當Make重新編譯這個編輯器時,所有改動的C語言源文件必須重新編譯。如果一個頭文件改變,每一個包含該頭文件的C語言源文件必須重新編譯,這樣才能保證生成的編輯器是所有源文件更新后的編輯器。每一個C語言源文件編譯后產(chǎn)生一個對應的OBJ文件,如果一個源文件重新編譯,所有的OBJ文件無論是剛剛編譯得到的或原來編譯得到的必須從新連接,形成一個新的可執(zhí)行文件。
2.2.1內(nèi)核編譯
一個簡單的Makefile文件包含一系列的“規(guī)則”,其樣式如下:
目標(target)…: 依賴(prerequiries)…
<tab>命令(command)
內(nèi)核編譯
接下來的內(nèi)核配置過程比較煩瑣,但是配置的適當與否與日后Linux的運行直接相關(guān),有必要了解一下選項的設置。
配置內(nèi)核可以根據(jù)需要與愛好使用下面命令中的一個:
#make config(基于文本的最為傳統(tǒng)的配置界面,不推薦使用)
#make menuconfig(基于文本選單的配置界面,字符終端下推薦使用,必須安裝ncurse
s-dev和tk4-dev庫)
內(nèi)核編譯
#make xconfig(基于圖形窗口模式的配置界面,Xwindow下推薦使用)
#make oldconfig(如果只想在原來內(nèi)核配置的基礎上修改一些小地方,會省去不少麻煩)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -