Note For Linux By Jes(20)-Linux 核心编译与管理
編譯前的任務:認識核心與取得核心原始碼:
什么是核心(Kernel)
Kernel:核心就是系統上面的一個文件而已,這個文件包含了驅動主機各項硬件的偵測程序與驅動模塊,這個核心文件通常被放置成/boot/vmlinuz 。
核心模塊(kernel module)的用途:將一些不常用的類似驅動程序的咚咚獨立出核心,編譯成為模塊,然后,核心可以在系統正常運行的過程當中加載這個模塊到核心的支持,存在/lib/modules/$(uname-r)/kernel/ 中。
自制核心– 核心編譯
升級核心的目的:
-  
新功能的需求:
我需要新的功能,而這個功能只有在新的核心里面才有,那么為了獲得這個功能,只好來重新編譯我的核心了。例如iptables 這個防火墻機制只有在2.4.xx 以后的版本里面才有,而新開發的主板芯片組,很多也需要新的核心推出之后,才能正常而且有效率的工作! -  
原本核心太過臃腫:
如果你是那種對於系統『穩定性』很要求的人,對於核心多編譯了很多莫名其妙的功能而不太喜歡的時候,那么就可以重新編譯核心來取消掉該功能羅; -  
與硬件搭配的穩定性:
由於原本Linux 核心大多是針對Intel 的CPU 來作開發的,所以如果你的CPU 是AMD 的系統時,有可能(注意!只是有可能,不見得一定會如此)會讓系統跑得『不太穩!』。此外,核心也可能沒有正確的驅動新的硬件,此時就得重新編譯核心來讓系統取得正確的模塊才好。 -  
其他需求(如嵌入式系統):
就是你需要特殊的環境需求時,就得自行設計你的核心羅!(像是一些商業的套裝軟件系統,由於需要較為小而美的操作系統,那么他們的核心就需要更簡潔有力了!) 
 
 
核心原始碼的取得方式:
原本distribution 提供的核心原始碼文件
取得最新的穩定版核心原始碼
保留原本配置:利用patch 升級核心原始碼
 
 
核心原始碼的解壓縮/安裝/觀察:
核心原始碼的解壓縮與放置目錄:/usr/src/kernels/
核心原始碼下的次目錄:
-  
arch:與硬件平臺有關的項目,大部分指的是CPU 的類別,例如x86, x86_64, Xen虛擬支持等;
 -  
block:與區塊裝置較相關的配置數據,區塊數據通常指的是大量儲存媒體!還包括類似ext3等文件系統的支持是否允許等。
 -  
crypto:核心所支持的加密的技術,例如md5 或者是des 等等;
 -  
Documentation:與核心有關的一堆說明文件,若對核心有極大的興趣,要瞧瞧這里!
 -  
drivers:一些硬件的驅動程序,例如顯卡、網絡卡、PCI相關硬件等等;
 -  
firmware:一些舊式硬件的微命令碼(韌體)數據;
 -  
fs:核心所支持的filesystems ,例如vfat, reiserfs,nfs 等等;
 -  
include:一些可讓其他程序呼叫的標頭(header) 定義數據;
 -  
init:一些核心初始化的定義功能,包括掛載與init 程序的呼叫等;
 -  
ipc :定義Linux操作系統內各程序的溝通;
 -  
kernel:定義核心的程序、核心狀態、運行緒、程序的排程(schedule)、程序的訊號(signle) 等
 -  
lib:一些函式庫;
 -  
mm:與內存單元有關的各項數據,包括swap 與虛擬內存等;
 -  
net:與網絡有關的各項協議數據,還有防火墻模塊(net/ipv4/netfilter/*)等等;
 -  
security:包括selinux等在內的安全性配置;
 -  
sound:與音效有關的各項模塊;
 -  
virt :與虛擬化機器有關的資訊,目前核心支持的是KVM (Kernel baseVirtual Machine)
 
 
 
 
 
 
 
核心編譯的前處理與核心功能選擇:
保持干凈原始碼:make mrproper
開始挑選核心功能:make XXconfig
-  
make menuconfig
最常使用的,是文字模式底下可以顯示類似圖形介面的方式,不需要啟動X Window 就能夠挑選核心功能菜單! -  
make oldconfig
透過使用已存在的./.config文件內容,使用該文件內的配置值為默認值,只將新版本核心內的新功能選項列出讓使用者選擇,可以簡化核心功能的挑選過程!對於作為升級核心原始碼后的功能挑選來說,是非常好用的一個項目! -  
make xconfig
透過以Qt 為圖形介面基礎功能的圖形化介面顯示,需要具有X window 的支持。例如KDE 就是透過Qt 來設計的X Window,因此你如果在KDE 畫面中,可以使用此一項目。 -  
make gconfig
透過以Gtk 為圖形介面基礎功能的圖形化介面顯示,需要具有X window 的支持。例如GNOME 就是透過Gtk 來設計的X Window,因此你如果在GNOME 畫面中,可以使用此一項目。 -  
makeconfig
最舊式的功能挑選方法,每個項目都以條列式一條一條的列出讓你選擇,如果配置錯誤只能夠再次選擇,很不人性化啊! 
核心功能細項選擇:
General setup
loadable module + block layer
CPU 的類型與功能選擇
電源管理功能
一些匯流排(bus) 的選項
編譯后運行檔的格式
核心的網絡功能
各項裝置的驅動程序
文件系統的支持
核心黑客、資訊安全、口令應用
虛擬化與函式庫
 
 
 
 
 
 
核心的編譯與安裝:
編譯核心與核心模塊:
[root@www linux-2.6.30.3]# make clean <==先清除緩存檔 [root@www linux-2.6.30.3]# make bzImage <==先編譯核心 [root@www linux-2.6.30.3]# make modules <==再編譯模塊最后制作出來的數據是被放置在/usr/src/kernels/linux-2.6.30.3/
 
 
實際安裝模塊
兩個解決方法啦:
-  
先將舊的模塊目錄更名,然后才安裝核心模塊到目標目錄去;
 -  
在make menuconfig 時,那個Generalsetup 內的Local version 修改成新的名稱。
 
 
 
開始安裝新核心與多重核心菜單(grub)
核心文件放置在/usr/src/kernels/linux-2.6.30.3/arch/x86/boot/bzImage,但是其實系統核心理論上都是擺在/boot 底下,且為vmlinuz 開頭的檔名
移動核心到/boot 且保留舊核心文件
創建相對應的Initial Ram Disk (initrd)
編輯啟動菜單(grub)
重新以新核心啟動、測試、修改
 
 
 
 
 
 
額外(單一)核心模塊編譯:
編譯前注意事項:kernel-devel
單一模塊編譯:
硬件開發商提供的額外模塊
利用舊有的核心原始碼進行編譯,先到目前的核心原始碼所在目錄下達make menuconfig ,然后將 NTFS 的選項配置成為模塊,之后直接下達:
那么ntfs 的模塊(ntfs.ko) 就會自動的被編譯出來了!然后將該模塊復制到/lib/modules/2.6.30.3vbird/kernel/fs/ntsf/ 目錄下,再運行 depmod -a
 
 
 
 
 
 
總結
以上是生活随笔為你收集整理的Note For Linux By Jes(20)-Linux 核心编译与管理的全部內容,希望文章能夠幫你解決所遇到的問題。