Linux核心的編譯

2021-05-24 14:55:56 字數 2198 閱讀 9369

linux的乙個重要的特點就是其源**的公開性,所有的核心源程式都可以在/usr/src/linux下找到,大部分應用軟體也都是遵循gpl而設計的,你都可以獲取相應的源程式**。全世界任何乙個軟體工程師都可以將自己認為優秀的**加入到其中,由此引發的乙個明顯的好處就是linux修補漏洞的快速以及對最新軟體技術的利用。

客套的話,空洞的話咱都不說了,說了也費勁,你還不一定看。下面以linux 2.6.15.5核心源**為例:

第二步:一般情況下要用下面命令來配置核心,可以使用下面命令的任意乙個,看自己喜歡了:

#make config(基於文字的最為傳統的配置介面,不推薦使用)

#make menuconfig(基於文字選單的配置選項)

#make xconfig(要求qt被安裝)

#make gconfig(要求gtk安裝)                                    其中最值得推薦的當然是menuconfig選項,不需要額外的庫,還直觀形象

選擇了自己要用的選項後儲存退出。我這裡為了以後能將自己寫的核心驅動模組加入核心,選擇了"enable loadable module support",嵌入式產品一般不需

要動態解除安裝模組,所以"可以解除安裝模組"不用選,當然你說哥非要選,就是要跟你做對,你能把我咋滴。說真的,我還真不能把你咋滴..

第三步:#cd ****進入核心原始碼目錄,,編譯核心,並將映像複製到相應的目錄:

#make bzimage (生成使用giz壓縮的核心,生成的檔案位於/usr/src/linux/arch/i386/boot 目錄)

#make modules modules_install (編譯核心模組並安裝到/lib/modules/2.6.15.5 目錄)

#cd /usr/src/linux

#mv arch/i386/boot/bzimage /boot/bzimage2.6.15.5

#mv system.map /boot/system.map-2.6.15.5 (system.map-2.6.15.5是編譯生成的linux 2.6.15.5核心的符號表)

#cd /boot

#mv system.map oldsystem.map

#ln –s system.map-2.6.15.5 system.map(建立相應的system.map符號鏈結)

第四步:修改啟動選項。以支援從linux 2.6.15.5啟動選擇選單

修改/boot/grub/grub.conf檔案,進行如下配置:

title red hat linux (2.6.15.5)

root (hd0,0)

kernel /boot/vmlinuz ro root=/dev/hda2 hdc=ide-scsi  //---你的linux所在的分割槽

進過此配置後,linux啟動時就會出現選擇選單。

說明:最後在上面的linux 2.6.15.5啟動中,沒有設定initrd,這是因為我們直接把scsi,ext3等編譯進了核心。如果將他們編譯成模組,initrd則是必須的,否則

了,如果執行mkinitrd命令時,提示「no module dm-mem-cache found for kernel 2.6.29.4, aborting.」時,表明該版本的mkinitrd有bug。公升級mkinitrd或

1是當使用mkinitrd時,使用」–without-dmraid」這個引數。

2是在使用mkinitrd之前,先建立乙個noraid檔案。建立方法如下:

# echo "dmraid=no" > /etc/sysconfig/mkinitrd/noraid

# chmod 755 /etc/sysconfig/mkinitrd/noraid

然後再執行mkinitrd命令。

initrd(bootloader initialized ram disk)是指由bootloader初始化的記憶體盤。在linux核心啟動前,bootloader會將儲存介質中的initrd檔案載入到記憶體,核心

啟動時會在訪問真正的根檔案系統前先訪問該記憶體的initrd檔案系統。

為了啟動時載入initrd,只需修改grub.conf引導配置檔案,在最後新增"initrd /boot/initrd-2.6.15.5.img "這樣就沒問題了。

linux核心的編譯

1 解壓縮 tar jxvf linux 2.6.22.6.tar.bz2 2 打補丁,patch 補丁檔案 具體打到那裡去的目標位址 在補丁檔案裡面有,查詢diff的地方 進入linux核心目錄,cd linux 2.6.22.6 patch p1 linux 2.6.22.6 jz2440.pa...

編譯 linux 核心

一 準備工作 tpv te0 首先說明,下面帶 號的行都是要輸入的命令列,且本文提到的所有命令列都在終端裡輸入。ixpub技術部落格 rc0p a6zx j 啟動linux系統,並用根使用者登入,進入終端模式下。6i sb w,a0 ixpub技術部落格c gng,y y ixpub技術部落格 k,...

linux編譯核心

red hat linux版本的核心編譯 make j2 編譯 make modules make modules install make install cd boot mkinitramfs o initrd.img 2.6.30.10 2.6.30.10 此項可能不需要 vim boot g...