- 論壇徽章:
- 0
|
1、 準(zhǔn)備工作
(1) 整理出系統(tǒng)需要支持的硬件、文件系統(tǒng)類型以及網(wǎng)絡(luò)協(xié)議等內(nèi)容。
(2) 建議用命令uname –r 查看一下系統(tǒng)的版本號,如果你的系統(tǒng)版本與將要編譯的內(nèi)核版本一致,建議將/lib/modules下的內(nèi)容備份,否則將來的make modules_install 步驟產(chǎn)生的文件會覆蓋這個路徑下的內(nèi)容。
(3) A:下載并解壓linux內(nèi)核,建議從
http://www.kernel.org/pub/linux/kernel/
下載內(nèi)核,因為安裝系統(tǒng)時所安裝的源代碼默認(rèn)情況下支持很多設(shè)備,這樣給內(nèi)核裁減增加了難度。以下假設(shè)你已經(jīng)下載了內(nèi)核的為linux-x-y-z.tar.gz。一般都將linux內(nèi)核源代碼放在/usr/src下,這里仍然遵守這個習(xí)慣,如果你的這個路徑下已經(jīng)存在這個版本的內(nèi)核,建議將已有的改個名稱。
B:如果內(nèi)核已經(jīng)安裝(/usr/src/目錄有l(wèi)inux子目錄),跳過如果沒有安裝,在光驅(qū)中放入linux安裝光盤,找到kernel-source-2.xx.xx.rpm文件(xx代表數(shù)字,表示內(nèi)核的版本號), 比如RedHat linux的RPMS目錄是/RedHat/RPMS/目錄,然后使用命令rpm -ivh kernel-source-2.xx.xx.rpm安裝內(nèi)核
2、清除從前編譯內(nèi)核時殘留的.o 文件和不必要的關(guān)聯(lián)
cd /usr/src/linux
make mrproper
確保源代碼目錄下沒有不正確的.o文件和文件依賴關(guān)系,執(zhí)行該命令后,內(nèi)核選項會回到默認(rèn)的狀態(tài)下。如果你是下載的內(nèi)核源碼,而且是第一次編譯,就沒有必要執(zhí)行這一步操作
3、配置內(nèi)核,修改相關(guān)參數(shù),請參考其他資料
在圖形界面下,make xconfig;字符界面下,make menuconfig
在內(nèi)核配置菜單中正確設(shè)置個內(nèi)核選項,保存退出
4、正確設(shè)置關(guān)聯(lián)文件
make dep
根據(jù)上一步所選擇的選項,建立文件的依賴關(guān)系。
5、make clean
清理一些不必要的文件,如果你在上次編譯的基礎(chǔ)上,刪去了一些選項,建議你執(zhí)行這一步操作,否則,就沒有必要了。
6、編譯內(nèi)核
對于大內(nèi)核(比如需要SCSI支持),make bzImage
對于小內(nèi)核,make zImage
7、編譯模塊
make modules
編譯可加載模塊(即內(nèi)核選項中選擇為M的選項),編譯時間跟M選項的數(shù)量有關(guān)。
8、安裝模塊
make modules_install
即將編譯好的modules拷貝到/lib/modules下,這就是為什么在“準(zhǔn)備工作”的第三步提醒你備份的原因了。
9、使用新內(nèi)核
方法一:
(1)更換內(nèi)核:A、mv /usr/src/linuxX.X.X/system.map /boot/system.map
B、mv /usr/src/linuxX.X.X/arch/i386/boot/bzImage /boot/vmlinuz
(2)然后修改/etc/lilo.conf文件,加一個啟動選項,使用新內(nèi)核bzImage/zImage啟動。格式如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux-new ### 告訴lilo缺省使用新內(nèi)核啟動linux ###
append="mem=256M"
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
image=/boot/bzImage(zImage)
label=linux-new
read-only
root=/dev/hda5
保留舊有的啟動選項可以保證新內(nèi)核不能引導(dǎo)的情況,還可以進入linux進行其他操作。
保存退出后,不要忘記了最重要的一步,運行/sbin/lilo,使修改生效
方法二:使用GRUB(修改grub.conf文件)
(1)更換內(nèi)核:A、mv /usr/src/linuxX.X.X/system.map /boot/system.map
B、mv /usr/src/linuxX.X.X/arch/i386/boot/bzImage /boot/vmlinuz
(2)修改引導(dǎo)管理程序Grub,/etc/grub.conf
內(nèi)容如下:
#boot =/dev/had
default =0
timeout =10
splashimage =(hd0, 0)/grub/splash.xpm.gz
title Red Hat Linux(2.4.20-
root(hd0, 0)
kernel /vmlinuz -2.4.20-8 ro root =LABEL =/
initrd /initrd-2.4.20-8.img
方法三: 修改啟動配置文件
現(xiàn)在大多數(shù)使用的都是grub啟動,需要修改/boot/grub/grub.conf,添加相應(yīng)的啟動信息,添加內(nèi)容的最簡單格式如下:
title 顯示在啟動菜單上的名稱
root 根文件系統(tǒng)掛載分區(qū)
kernel 壓縮過的內(nèi)核文件名
initrd 根文件系統(tǒng)文件名
如:
title My new kernel
root (hd0,2)
kernel /boot/vmlinuz-x.y.z
initrd /boot/initrd-x.y.z.img
10、重新生成ram磁盤
如果您的系統(tǒng)中的/etc/lilo.conf沒有使用了ram磁盤選項initrd,略過
如果您的系統(tǒng)中的/etc/lilo.conf使用了ram磁盤選項initrd,
使用mkinitrd initrd-內(nèi)核版本號 內(nèi)核版本號命令重新生成ram磁盤文件,例如我的Redhat 6.2:
mkinitrd initrd-2.2.14-5.0 2.2.14-5.0
之后把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:
initrd=/boot/initrd-2.2.14-5.0
ram磁盤能使系統(tǒng)性能盡可能的優(yōu)化,具體參考/usr/src/linux/Documents/initrd.txt文件
11、重新啟動,OK!
12、另關(guān)于相關(guān)的參數(shù)設(shè)置與說明可以參考: |
|