首頁
Linux Commands
Kernel & Modules
核心重編與升級
Linux Commands
Kernel & Modules
核心重編與升級 | 核心重編與升級 |
|
|
| 作者 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之後你就可以準備重新開啟新核心了。 |
| 下一個 > |
|---|





