快速連接文章

請輸入Linux command

會員登入






遺失密碼
尚未註冊? 註冊

票選專區

您希望引用的 wiki 語系?
 

RSS

PayPal Donation

Enter Amount:

IDigitalNet Newsletter


E-Mail Address:
請選擇訂閱選項:
首頁 arrow Linux Commands arrow Kernel & Modules arrow 核心重編與升級
核心重編與升級 列印 E-mail
作者 Sonia   
1. Linux核心提供什麼功能
Linux 核心是一個檔案(/boot/vmlinuz  for most case)
核心支援各項電腦硬體配備,讓所有程式可以透過核心與電腦硬體溝通。
有效率的核心必須與電腦狀況(硬體周邊)配合
核心提供周邊硬體驅動程式:網路卡、音效卡、SCSI卡等
通訊協定:TCP/IP、PPP、Router等
核心提供檔案系統支援:ext2、umsdos、iso9660...
核心提供記憶體管理、多CPU平行處理....  
2.Linux核心重編(Make Kernel)與升級有何不同
核心重編利用原始碼重新編譯,目的在打造一個新核心(不一定是新版)
核心升級利用新版本原始碼,以編譯方式,產生一個新版的核心
核心升級必須經過核心重編的程序

3.Linux核心何時需要重編
為核心瘦身,去除原有核心支援但用不到的功能時
新增原有核心不支援的功能(包括模組)時
修正舊有核心錯誤(例如核心無法開機)時
核心升級時

4.Linux核心何時需要升級
舊版核心可能錯誤的修正(Bug Fix)
新周邊設備或系統功能無法由舊版核心取得支援時
核心版本落後太多時

5.新版Linux核心何處取得
官方(Official)Kernel ftp Site ftp://ftp.kernel.org
Linux HeadQuarters    http://www.linuxhq.com
國內收集kernel網站
ftp://ftp.mgt.ncu.edu.tw/Linux/kernel
ftp://ftp.nsysu.edu.tw/Linux/metalab.unc.edu/kernel.org/pub/linux/kernel
ftp://ftp.ccu.edu.tw/pub3/linux/kernel.org-pub/linux/kernel

6.Linux核心版本編號所代表的意義
Linux核心版本編號格式為:major.minor.patchlevel
major : 主要版本編號,極少變動
minor : 次要版本編號,這是Linux核心版本的血統
patchlevel : 目前核心(次要)版本的修補編號
 
指令"uname -a" 可以讀取目前新的版本及核心重編的時間,例如:

Linux nmc.nchu.edu.tw 2.2.15 #1 Wed May 31 10:56:54 CST 2000 i586 unknown
代表核心版本為2.2.15,核心重編的時間為10:56:54 05/30/2000
 
其中單號的次要版本表示測試版,雙號代表正式(穩定)版本
 
7. 重編核心
前置作業  
(a)備份舊有核心 #cp  /boot/vmlinuz /boot/vmlinuz.2.2.12
(b) 取得新核心壓縮檔(ex.linux-2.2.15.tar.gz)
(c) 備份/usr/src/linux  一般linux只是一個符號鏈結,你可以直接將之移除

(d) 將壓縮檔在/usr/src下解開
#tar zxvf linux-2.2.15.tar.gz
#mv linux linux-2.2.15
#ln -s linux-2.2.15 linux
(e) Change Directory To /usr/src/linux

重編核心的步驟 (以下的步驟都必須在/usr/src/linux底下才能執行)(以2.2.12升級至2.2.15為例)
1. make mrproper
在linux目錄下執行"make mrproper",此一步驟目的在清除不穩定目的檔(.o),確保核心重編時順利成功。這個步驟在修補核心(patch)後重編核心時,為重要且必要。

2. 設定編譯模式: 目前的 Kernel 可以允許多種編譯的模式,包括了:
make config :這種模式需要逐行輸入所需要設定的項目,無法往前修改設定,所以目前很少使用這種方式來設定 Kernel 的項目了;
make xconfig :這種模式則是使用 X-Window 為主要環境的設定模式!如下圖:
make menuconfig :這種模式有點像是文字界面的選單模式,較為簡便,而且可以在純文字界面下面執行編輯動作!

這是重編核心時極重要的一個步驟,你必須針對系統現況,回答上百個問題,錯誤的選項可能導致核心無法使用。當你完成冗長的設定程序之後,如果未指定設定內容儲存檔名,你的設定將會被儲存在/usr/src/linux/arch/i386/defconfig中,下次重編核心時,這就是你的預設(default)選項來源。

3. make dep
這個步驟幫你設定所的附設檔案,確保include file的相依關係。

4. make clean
清除舊系統核心與driver,如果你第一次重編核心,你可以略過這個步驟。

5. make zImage
編製一個新的核心,如果你的心核心大小超過640KB,你必須改用"make bzImage"。
如果你希望編製新核心的過程中,順帶製作一個開機片,你可使用"make zdisk" or "make bzdisk"(if new kernle is larger than 640KB)。
這個步驟所需時間約20~40分鐘不等(or longer),端視你系統CPU與RAM數量而定。編譯成功後,新核心位置在/usr/src/linux/arch/i386/boot/zImage or /usr/src/linux/arch/i386/boot/zbImage。

6. 改變系統使用之核心
#cp /usr/src/linux/arch/i386/bzImage    /boot/vmlinuz-2.2.15
#cd /boot
#ln  -s  /boot/vmlinuz-2.2.15   /boot/vmlinuz
###請確定你原有核心以備份。(如前置作業所述)

7. 編譯系統模組
#make modules
#make modules_install
你必須執行此一步驟,否則你的心核心將無法使用你的舊模組。新的模組將會被安裝至/lib/modules/2.2.15目錄下

8. 更新System.map
#cp /usr/src/linux/System.map /boot/System.map-2.2.15
#rm /boot/System.map
#ln  -s  System.map-2.2.15 System.map
每一版本的系統核心都有其特有的系統功能映射檔System.map,以定義該版核心的所有功能資訊。

9. 編輯lilo.conf,保留舊核心開機選項
沒有人可以保證編輯的新核心一定可以開啟系統,保留舊核心開機選項是一個保險做法。你的lilo.conf修改之後大約會像以下的內容:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux

image=/boot/vmlinuz
label=linux
read-only
root=/dev/hda1

image=/boot/vmlinuz-2.2.12-20
label=linux.old
read-only
root=/dev/hda1
執行過lilo -v -v -v之後你就可以準備重新開啟新核心了。
 
下一個 >

相關主題