GB | BIG5
|
| 首頁 > 系統管理 > Linux > 正文 |
 |
| 編譯內核 |
| http://www.linuxforum.net meichaol[譯] (2001-04-21 18:15:13) |
下面的安裝過程在 RedHat Linux 6.1 Server 上測試,安裝過程使用 root 用戶,當時新的內核版本
為2.2.13,現在最新的穩定版本時2.2.15 (請到 http://www.kernel.org 查詢最新的內核版本信息)。
(下述的編譯、安裝步驟我本人已經在HP LC3 PII 300 機器上測試過的。)
一、 創建緊急啟動盤
察看/etc/lilo.conf文件,確定你是用哪個內核映像文件啟動的。例如:
[root@deep]# cat /etc/lilo.conf
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.12-20
label=linux
root=/dev/sda6
initrd=/boot/initrd-2.2.12-20.img
read-only
上述例子說明系統使用/boot/vmlinuz-2.2.12-20 內核映像文件啟動。現在,使用root登錄,然
放入一張1.44M 軟盤。
[root@deep]# mkbootdisk --device /dev/fd0 2.2.12-20
Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press to continue or ^C to abort:
使用上述的命令建立一張可以啟動的軟盤,當你升級內核出現錯誤的時候可以使用這張軟盤恢復。
建議使用這張軟盤重新啟動機器確保能正常使用。
二、 內核優化
解壓縮下列 .tar.gz 文件
進入 /usr/src/ 目錄
[root@deep]# cp linux-version.tar.gz /usr/src/
[root@deep]# rm -rf linux
[root@deep]# rpm -e --nodeps kernel-headers kernel
[root@deep]# rm -rf /usr/src/linux-2.2.12/
[root@deep]# rm -rf /lib/modules/2.2.12-20/
[root@deep]# tar xzpf linux.version.tar.gz
[root@deep]# chown -R 0.0 /usr/src/linux/
[root@deep]# rm -f linux-version.tar.gz
增加任務數
為了增加系統允許的任務數,應該編輯頭文件/usr/src/linux/include/linux/tasks.h 並對下列
參數進行修改。
[root@deep]# vi /usr/src/linux/include/linux/tasks.h
把 NR_TASKS 從 512 改為 3072
把 MIN_TASKS_LEFT_FOR_ROOT 從 4 改為 24
使用 vi /usr/src/linux/Makefile 編輯 Makefile 文件修改下列代碼行:
把
CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
修改為
CFLAGS = -Wall -Wstrict-prototypes -O6 -mcpu=pentiumpro -march=pentiumpro
-fomit-frame-pointer-fno-exceptions
把
HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
修改為
HOSTCFLAGS = -Wall -Wstrict-prototypes -O6 -mcpu=pentiumpro -march=pentiumpro
-fomit-frame-pointer-fno-exceptions
三、 編譯
確定 /usr/include/asm, /usr/include/linux, and /usr/include/scsi 這三個符號連接正確
地連接到內核源代碼的相關位置。
你可以使用下列的命令:
[root@deep]# cd /usr/include
[root@deep]# rm -rf asm linux scsi
[root@deep]# ln -s /usr/src/linux/include/asm-i386 asm
[root@deep]# ln -s /usr/src/linux/include/linux linux
[root@deep]# ln -s /usr/src/linux/include/scsi scsi
使用下列命令清楚從前編譯內核時殘留的.o 文件和不必要的關聯:
[root@deep]# cd /usr/src/linux/
[root@deep]# make mrproper
安裝好源代碼,現在可以進行內核的配置了。
[root@deep]# cd /usr/src/linux/
[root@deep]# make config
有三種配置內核的方法:
第一種方法是 make config 命令,它提供了一種基字符的界面來進行各種內核的配置。 系統會提示
你各種內核的配置選項。
第二種方法是 make menuconfig 命令,它提供了一個易使用的菜單界面來進行內核的配置。
第三種方法智 make xconfig 命令,它提供了一種圖形界面來進行內核的配置。
配置完成,保存選項,然返回 /usr/src/linux/ 目錄,然使用下列的命令完成內核的編譯。
[root@deep]# make dep; make clean; make bzImage
編譯的時間根據你的機器配置會花費十幾分鐘到一個多小時不等,請耐心的等候就是:-)
編譯完成,你可以安裝編譯並壓縮好的內核映像文件了。如果在內核配置時選擇了可裝載模塊選項的話
(CONFIG_MODULES),你還要使用下列的命令編譯相應的模塊。
[root@deep]# make modules
[root@deep]# make modules_install
之拷貝內核影像文件 /usr/src/linux/arch/i386/boot/bzImage 到 /boot 並給它一個合適的名字:
[root@deep]# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-kernel.version.number
拷貝 /usr/src/linux/System.map 到 /boot 並給它一個合適的名字:
[root@deep]# cp /usr/src/linux/System.map /boot/System.map-kernel.version.number
然用 cd 命令轉到 /boot 目錄並重新建立連接 vmlinuz 和 System.map :
[root@deep]# cd /boot
[root@deep]# ln -fs vmlinuz-kernel.version.number vmlinuz
[root@deep]# ln -fs System.map-kernel.version.number System.map
刪除不必要的文件:
[root@deep]# rm -f module-info
[root@deep]# rm -f initrd-2.2.12-20.img (如果你有SCSI設備的話)
最,編輯 /etc/lilo.conf 文件讓系統啟動的時候使用新的內核:
[root@deep]# vi /etc/lilo.conf
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=20
restricted
password=somepasswd
image=/boot/vmlinuz-kernel.version.number #(在這裡是你的內核映像文件的名稱).
label=linux
root=/dev/sda6
read-only
(上面的僅是例子而已,跟你的文件會略有不同)
別忘了修改 /etc/lilo.conf 及時更新lilo:
[root@deep]# /sbin/lilo -v
特別注意:如果你在配置 Unix98 PTY support (CONFIG_UNIX98_PTYS)選擇了 NO ,那你還要修改
/etc/fstab 文件,刪除下列的行:
none /dev/pts devpts gid=5,mode=620 0 0
編輯 /etc/conf.modules 並刪除沒有必要的模塊
[root@deep]# vi /etc/conf.modules
例如
Alias scsi_hostadapter model (如果有 SCSI 驅動).
Alias eth0 Ethernet model card (以太網卡).
Alias parport_lowlevel parport-pc (並口).
Pre_install pcmcia_core /etc/rc.d/init.d/pcmcia start (如果是筆記本的話).
如果這些模塊在配置新內核的時候沒有選擇編譯或者已經編譯到內核裡,那就應該刪除它們。修改之
必須重新運行LILO ,重新啟動機器。
重新創建緊急啟動軟盤
如果一切正常,那恭喜你,內核升級就算完成了!這時你應該重新創建一張緊急啟動軟盤。
以 root 登錄,插入一張新的軟盤:
[root@deep]# mkbootdisk --device /dev/fd0 2.2.13
Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press to continue or ^C to abort:
更新 /dec 入口
如果你升級了內核或者添加了一個新的設備,那你應該更新 /dev 入口。
以root用戶登錄:
[root@deep]# cd /dev
[root@deep]# ./MAKEDEV update
原文出處:
http://www.linuxforum.net/books/linuxsos.pdf 第41頁到49頁內容,略有刪節。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |