核心升級
Home Up

 

 你是本篇文章第 位訪客(since 03/09/2005)

Linux 核心重編與升級

 

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.Linux核心升級方式有哪些

直接由新版本核心原始檔,重編核心
優點:直接升級至該核心版本
缺點:你必須較多時間下載整個核心的原始檔(壓縮過2.2.15的核心原始檔約16MB大小)
適合作較大幅度的版本提升,例如 2.2.6 --> 2.2.15

修補核心原始檔(Patch)
利用這種方式升級,你所需要修補的次數為新版本與舊版本的版本修補次數編號差。例如:由2.2.12升級至2.2.15,你必須下載patch-2.2.13、patch-2.2.14及patch-2.2.15,並逐一修補後,再行編譯核心。修補的方式如下(:
####首先你必須將patch file複製至/usr/src中
#cd /usr/src
#gzip -cd patch-2.2.13.gz | patch -p0
#gzip -cd patch-2.2.14.gz | patch -p0
#gzip -cd patch-2.2.15.gz | patch -p0
接著你就可以開始重編核心了。
優點:Patch File一般比全部核心原始檔小很多(每一個Patch大小由數百KB到1 MB左右不等),下載較快。
缺點:版本差距過大不適合以此方式升級。 


8.重編核心

前置作業

備份舊有核心
#cp  /boot/vmlinuz /boot/vmlinuz.2.2.12

取得新核心壓縮檔(ex.linux-2.2.15.tar.gz),或修補程式檔(Patch)(ex.patch-2.2.13.gz, patch-2.2.14.gz,  & patch-2.2.15.gz)

備份/usr/src/linux
一般linux只是一個符號鏈結,你可以直接將之移除

將壓縮檔在/usr/src下解開
#tar zxvf linux-2.2.15.tar.gz
#mv linux linux-2.2.15
#ln -s linux-2.2.15 linux

Change Directory To /usr/src/linux

重編核心的步驟 (以2.2.12升級至2.2.15為例)

  1. make mrproper
    在linux目錄下執行"make mrproper",此一步驟目的在清除不穩定目的檔(.o),確保核心重編時順利成功。這個步驟在修補核心(patch)後重編核心時,為重要且必要。

  2. make config (make menuconfig, make xconfig)
    這是重編核心時極重要的一個步驟,你必須針對系統現況,回答上百個問題,錯誤的選項可能導致核心無法使用。
    選像設定方式有三種:"make config"、"make menuconfig"及"make xconfig";"make config"採交談式一問一答;"make menuconfig"在文字模式下,採選單方式設定核心選項;"make xconfig"則是在圖形模式(X-Window)下的選單設定模式。
    當你完成冗長的設定程序之後,如果未指定設定內容儲存檔名,你的設定將會被儲存在./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
    ###請確定你原有核心以備份。(如前置作業所述)
    如果你為使用lilo開機,你必須在編譯核心時製作開機片,或直接用"dd"將核心載入磁片中,以便開啟新系統。

  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之後你就可以準備重新開啟新核心了。(By Reboot System)

  1. uname -a 
    檢查新核心版本。(After Reboot)
    [root@nmc ~]#
    uname -r
    2.2.15  --> Kernel is now 2.2.15

 

建置及維護者:
國立中興大學 電算中心    吳賢明   woody@nchu.edu.tw
本網頁最近更新時間:2000/06/22 下午 04:38:13