此次操作環境為virtualbox中的centos6.5,編譯的核心核心版本為linux-2.6.32.63
可以在終端輸入指令檢視自己的核心版本,如果系統不是centos6.5的可以根據自己的核心下乙個更高版本的核心原始碼進行編譯安裝。
uname -rs
在終端執行
wget
2、準備編譯
拷貝核心**到src目錄
cp ./linux-2.6.32.63.tar.xz /usr/src
解壓縮**,.tar.xz格式的**不能直接用tar解壓,要先解壓成.tar檔案,再用tar進行解壓縮xz -d linux-2.6.32.63.tar.xz
tar -xvf linux-2.6.32.63.tar
3、生成編譯所需的配置檔案
進入解壓後的原始碼目錄內,執行環境清空操作
make distclean/make mrproper/make clean
#make clean 刪除大多數的編譯生成檔案, 但是會保留核心的配置檔案.config, 還有足夠的編譯支援來建立擴充套件模組
#make mrproper 刪除所有的編譯生成檔案, 還有核心配置檔案, 再加上各種備份檔案
#make distclean 將configure生成的檔案全部刪除掉,包括makefile檔案。
#執行make mrproper, 會先執行make clean, 執行make distclean之前, 會先執行make mrproper。
準備配置檔案
.config檔案——使用者選擇的配置選項,存放核心配置後的結果
在/boot目錄下有個linux系統安裝時生成的config-*檔案,可以基於該檔案進行編譯配置
cp /boot/config-* ./.config
4、配置核心選項
#三選一
make defconfig/make config #i386模板/全手工
make oldconfig/make menuconfig/make (x)gconfig #基於.config或者/boot/config-*
make [> /dev/null]
我直接採用/boot目錄下的config-*,沒有進行手工配置,直接開始編譯核心。
5、開始編譯核心
編譯核心,此過程比較慢,為了加快編譯速度,可新增選項-jn,其中n替換為執行緒數值,一般是cpu核數的兩倍
#二選一
make
make -jn all
在此過程中可能會報錯說沒有某個命令,我就出現了這個問題,把那個命令安裝後重新回到第三步即可。
6、安裝核心模組核心編譯過程中沒有報錯的話就可進行核心模組的安裝,安裝核心模組到/lib/modules/2.6.32的目錄下
make modules_install
7、安裝核心映象
將編譯生成的核心映象檔案拷貝到啟動分割槽目錄下
make install
#作用等同於cp -v arch/x86/boot/bzimage /boot/vmlinuz-kernelname
為新核心建立乙個initrd(initial ram disk)mkinitrd /boot/initramfs-2.6.32.63.img 2.6.32.63
linux初始ram磁碟(initrd)是在系統引導過程中掛載的乙個臨時根檔案系統,用來支援兩階段的引導過程。initrd檔案中包含了各種可執行程式和驅動程式,它們可以用來掛載實際的根檔案系統。linux發行版在核心中只編譯了基本的硬體驅動,在安裝過程中通過檢測系統硬體,生成包含安裝系統硬體驅動的initrd。boot loader載入核心和initrd(以檔案系統映象檔案形式存在)到記憶體,執行initrd中的init指令碼載入驅動模組,執行完成後開始掛載真正的檔案系統,在真正的根檔案系統上進行正常啟動過程,執行/sbin/init。
8、重啟
核心到此編譯安裝完成,重啟後可以在系統的引導介面看到你自己編譯的核心。
Linux核心初探
虛擬記憶體有很多用途和優點 虛擬記憶體子系統的主要成分是虛擬位址空間 virtual address space 的概念 隨機訪問儲存器 ram 即記憶體的使用 當可用記憶體達到臨界時,可以呼叫頁框 page frame reclaiming 演算法釋放其他記憶體 虛擬記憶體必須要解決的乙個問題是記...
Linux核心模組初探 HelloWorld
本文通過學習宋寶華老師的 linux裝置驅動開發詳解 第四章而寫的學習筆記,感謝這本好書 因為linux核心架構龐大,元件很多,如果我們把所有需要功能都編譯到linux核心中,就會導致核心很大,並且當我們要在現有核心中新增或刪除功能時都要重新編譯核心。linux使用了模組 module 這一種機制,...
編譯 linux 核心
一 準備工作 tpv te0 首先說明,下面帶 號的行都是要輸入的命令列,且本文提到的所有命令列都在終端裡輸入。ixpub技術部落格 rc0p a6zx j 啟動linux系統,並用根使用者登入,進入終端模式下。6i sb w,a0 ixpub技術部落格c gng,y y ixpub技術部落格 k,...