520 likes | 595 Views
第 20 章. 編譯、升級 系統核心. 前言. 電腦資訊是汰換神速的產物 , 不單硬體隨著科技進步持續更新 , 軟體方面也是不斷改良演變 , Linux 的改版更是迅速。 本章將說明如何升級 Linux 的系統核心 , 隨時把系統維護在最佳狀態。. 本章提要. 20-1 認識核心與核心的版本 20-2 核心升級的準備 20-3 設定核心 20-4 編譯核心 20-5 更換核心 20-6 修補核心 20-7 應用實例:編譯目前的核心 , 以掛載 NTFS 檔案系統. 20-1 認識核心與核心的版本.
E N D
第 20 章 編譯、升級 系統核心
前言 • 電腦資訊是汰換神速的產物, 不單硬體隨著科技進步持續更新, 軟體方面也是不斷改良演變, Linux 的改版更是迅速。 • 本章將說明如何升級 Linux 的系統核心, 隨時把系統維護在最佳狀態。
本章提要 • 20-1認識核心與核心的版本 • 20-2 核心升級的準備 • 20-3設定核心 • 20-4編譯核心 • 20-5 更換核心 • 20-6 修補核心 • 20-7應用實例:編譯目前的核心,以掛載NTFS 檔案系統
20-1認識核心與核心的版本 • 核心是一個作業系統中最重要的部分, 其地位相當於人類的頭腦。就 Linux而言, 它是指 /boot 目錄下的 vmlinuz-x.x.x (x.x.x 為該核心的版號) 檔案。 • 系統核心負責控制整台電腦的運作, 包括硬體周邊、應用程式等等。 • Linux 是開放的自由軟體, 任何人都可以在網路上取得新版的核心。
認識核心與核心的版本 • 但核心是以程式原始碼(source code) 的型態釋放出來, 所以必須先經過編譯才可使用。 • 目前, Linux 核心的測試版和正式版兩者並行, 在網路上都可以取得:2.6.x版是正式版, 2.5.x 則是測試版。我們該如何分辨測試版及正式版? Linux 的核心版本又是如何命名的呢?基本上, Linux 的版本編號方式如下:
認識核心與核心的版本 • 其中, 次版本可用來分別正式版及測試版:次版本為偶數者為正式版, 奇數者則為測試版。正式版的核心是經過測試、修正後的版本, 較為穩定, 較適合一般使用者使用。 • 此外, 在升級核心時有一點要請您特別注意:請不要以次版本與現行核心不同的核心升級。
認識核心與核心的版本 • 也就是說, 如果您目前所使用的發行版使用 2.4.x 版的核心, 可以下載次版本同為 4, 修訂版本較新的核心使用, 但 “不要” 使用 2.6.x 版的核心。 • 這是因為次版本不同的核心間差異性頗大, 所使用的函式庫也有許多不同,若使用次版本不同的核心升級, 將會導致一些與核心相關的軟體套件無法正常執行。
20-2 核心升級的準備 • 為何要升級核心 • 升級前的注意事項 • 確認目前版本 • 下載系統核心 • 瞭解硬體環境 • 解開核心壓縮檔 • 修補檔有何用
為何要升級核心 • 升級系統核心, 不僅能修補舊版本的漏洞和缺失, 還可支援更多的周邊設備,並改善應用程式的相容性, 增加系統的穩定度。 • 即使不升級核心, 單就重新編譯系統核心而言, 可把預設值中一些不需要的功能去除, 對於系統效能之提昇也頗有助益。
升級前的注意事項 • 瞭解為何需要升級核心之後, 我們接著要介紹升級前的相關須知。 • 升級核心時, 請用 root 帳號登入。
確認目前版本 • 要升級系統核心之前, 必須先確認目前所用的核心是第幾版, 最新的版本編號又是多少, 避免已經在用最新版, 卻還去下載相同版本的核心進行升級。檢查目前系統核心版本的方法如下:
下載系統核心 • 版本確認後, 倘若認為有升級的必要 (請自行考量實際情況之需求), 就得去下載系統核心。我們列舉一些開放給使用者下載核心的地方: • Linux Kernel Archives:http://www.kernel.org。 • Tux:http://www.tux.org。
下載系統核心 • 核心的檔案名稱類似 linux-?.?.??.tar.gz 的形式。舉例來說, 我們下載 2.6.6版的核心, 其檔案名稱是 linux-2.6.6.tar.gz。 • 有些檔案名稱最後是 .bz2, 這也是系統核心的檔案, 只不過是用 bzip2 壓縮而成。
修補檔有何用 • 在下載系統核心的目錄中, 亦放置著核心的修補檔, 其檔案名稱通常為 patch-?.?.??.gz,它可讓您逐版地更新系統核心。 • 舉例而言, 假設您已經擁有完整的 2.6.4 核心, 則能使用2.6.5 的修補檔 (patch-2.6.5.gz), 來讓系統升級至 2.6.5 的版本, 然後再用 2.6.6 版的修補檔升級到 2.6.6。
修補檔有何用 • 但是您不能直接拿 2.6.6 的修補檔去用在 2.6.4 的核心上,也就是說採用這種方式更新版本要逐步進行, 版本必須連續而不能跳過。
瞭解硬體環境 • Linux 的核心支援許多的硬體, 但多半仍需您親自設定。 • 雖然擁有方便的圖形化介面和線上說明, 不過使用者在升級核心前, 最好知道自己的電腦內究竟安裝了哪些周邊設備, 並應知道每項硬體所使用的系統資源, 尤其是各式介面卡(adapter)、控制卡使用的 IRQ、DMA 以及 I/O Address。
解開核心壓縮檔 • 將核心檔案取回後, 請依下列方式解開: • 到此一切準備就緒, 接著可以開始設定核心, 並編譯核心檔案。
20-3設定核心 • 為方便起見, 設定與編譯核心可根據使用者執行的指令不同, 而有不一樣的進行方式。我們可以使用的指令如下: • make config:以問答的方式, 在文字模式中設定編譯核心的選項。一旦回答錯誤就無法反悔, 必須全部重頭再來, 因而不建議採用這個方法。
設定核心 • make menuconfig:採用文字模式選單設定編譯核心的選項。 • make gconfig:在 X Window System的圖形介面中, 設定編譯核心的選項。 • 第三種方法必須在 X Window System的文字模式視窗中才可執行, 其餘兩種無論在純文字模式中, 或文字模式視窗中皆能使用。不管使用哪一種方法進行設定, 都只有操作介面上的不同, 其設定項目並沒有改變。
設定核心 • 您也可以執行 make xconfig指令開啟另一個圖形介面程式, 此指令需要 QT 函式庫 ( make gconfig指令需要 GTK 函式庫)。若執行 make gconfig無法正常啟動圖形介面來設定, 可以試試 make xconfig指令。 • 整個設定過程所需選擇的選項非常繁複, 請秉持著『沒有必要的功能就不要選取』之原則, 否則多了一堆無用的垃圾碼, 徒然拖垮系統的效率而已。
設定核心 • 底下我們將以 make menuconfig指令來解說系統核心的設定過程, 請執行下列指令: • 執行指令後, 便會出現如下文字模式選單:
設定核心 • 以 2.6.6 版的核心而言, 在編譯核心的設定檔選項裡, 初步分為 14 個類別。當展開某類別之後, 就會出現系統的功能設定, 您必須依據實際情形回答。 • 在每個設定項目的前面都有一個欄位狀態, 以 、 鍵移動光棒選擇設定項目後按空白鍵, 可以切換欄位的狀態, 下面說明這些狀態所代表之意義:
設定核心 • *:表示啟動該項功能 (除以空白鍵切換外, 亦可直接按 鍵啟動) 。 • M:即 Module, 表示該項功能可編譯成模組的型態, 然後以外掛的方式載入,毋需在編譯時放入系統核心。並非所有的功能都可以模組化, 假如該項功能無法編譯成模組, 則以空白鍵切換時將不會出現此狀態 (也可直接按 鍵設定要將此項目編譯為模組) 。
設定核心 • 保持空白:表示關閉該項功能 (可以按空白鍵切換, 也可直接按 [N] 鍵關閉功能) 。 • 某些功能彼此之間有關聯性存在, 當關鍵性功能的選項被關閉之後, 相關的功能便沒有作用, 此時將看不到這些相關項目。每項問題皆有其預設值 (已預先選好), 若不知該如何決定, 大多以預設值為準即可。
20-4編譯核心 • 接下來我們將開始編譯核心, 請依照下列步驟進行:
編譯核心 • 上述 make all 指令為 make vmlinux、make modules 及 make bzImage 等3 個指令的縮寫。結果將會編譯 2 個系統核心:一個未壓縮的系統核心 vmlinux,置於 /usr/src/linux 目錄下;一個壓縮過的系統核心 bzImage 置於 /usr/src/linux/arch/i386/boot 目錄下。而編譯完的模組則會置於 "/lib/modules/系統核心版本/kernel" 目錄下。
編譯核心 • 另外mkinitrd指令所用到的核心版本的號碼以原始碼目錄下的 Makefile 檔為準 , 例如筆者 /usr/src/linux 目錄下, Makefile 檔的內容如下: • 因此筆者在建立 initrd 檔案時所用的核心版本需填 "2.6.6"。
20-5 更換核心 • 編譯核心之後並不代表一切工作都已經完成, 我們還需要代換新的核心。由於新的系統核心可能導致系統無法啟動, 所以請先備份檔案與重要資料。 • 編譯完核心及模組之後, 需將核心複製到開機目錄並修改開機選單, 讓開機時可以選擇新的核心。請依下列的步驟修改:
更換核心 • 如果是用 GRUB 來管理開機, 接著請用文書編輯器修改 /boot/grub 目錄下的 menu.lst 檔:
更換核心 • 這樣的設定可以保留舊的核心, 做為備援之用。若新版的核心測試無誤, 再考慮將舊版的設定移除。 • 若是使用 LILO , 請用文書編輯器開啟 /etc 目錄下的 lilo.conf 檔案, 修改其內容:
更換核心 • 存檔後離開文書編輯程式, 執行 lilo指令, 最後重新開機即可。 • 萬一新核心沒有辦法開機, 則可由開機選單中選擇舊的核心開機, 再重新編譯新的核心或修正開機選單的錯誤設定。
20-6 修補核心 • 完整的系統核心檔案雖然經過壓縮, 但是仍然動輒數十 MB, 解開壓縮之後所佔空間也不小, 雖然現在的硬碟物美價廉, 磁碟空間應該不是問題, 不過從網路下載可是個大問題。 • 倘若您僅需升級一個版本, 例如從 2.6.5 升級到 2.6.6 , 便可考慮使用修補檔, 修補檔一般不會太大, 可以節省您許多下載檔案的時間。
修補核心 • 下載時, 請將修補檔存放在 /usr/src 的路徑下。 • 假設您已經安裝過 2.6.5 的系統核心 (必須為官方版本, 而不是使用發行版所附的版本), 然後要安裝它的修補檔, 將系統版本升級成 2.6.6 (patch-2.6.6.gz ), 其方法如下:
修補核心 • 如果您下載的是 .bz2 的檔案, 請用 bzip2 -dc ../patch-2.6.6.bz2 | patch -p1 的方式進行修補。 • 完成核心的修補之後, 還必須重新編譯核心, 才算大功告成。
20-7應用實例:編譯目前的 核心, 以掛載 NTFS 檔案系統 • 目前常較常用的 2.4 及 2.6 版核心都已經支援 NTFS 檔案系統, 不過有些發行版 (如 Fedora Core) 預設並沒有將此功能開啟, 因此您若是將此類發行版與使用 NTFS 檔案系統的 Windows NT/2000/XP/2003 安裝在同一台電腦, 那麼將會發現無法掛載 NTFS 檔案系統的分割區。解決的方法有以下兩種:
應用實例:編譯目前的核心,以掛載 NTFS 檔案系統 • 另外劃分一個 FAT 檔案系統的分割區:您可以分割出另一個使用 FAT 檔案系統的分割區, 供 Linux 與使用 NTFS 檔案系統的 Windows 交換檔案用。 • 重新編譯核心, 讓 Linux 可以掛載 NTFS 檔案系統:可以自行重新編譯核心,開啟支援 NTFS 檔案系統的功能。
應用實例:編譯目前的核心,以掛載 NTFS 檔案系統 • 編譯系統核心 • 掛載 NTFS 分割區 • 下載及安裝 Fedora Core 3 的核心原始碼
編譯系統核心 • 要掛載 NTFS 檔案系統, 您可以視情況考慮使用發行版光碟內附的核心,或是自行下載最新的核心。在這裡筆者以 Fedora Core 2 發行版內附的核心為例來說明, 請您先確定有安裝核心原始碼 (kernel-source-2.6.5-1.358.i386.rpm)。 • Fedora Core 3 發行版的安裝光碟中並沒有內附核心的原始碼, 若您使用此發行版, 請自行下載並安裝核心原始碼後, 再依說明操作編譯核心。
編譯系統核心 • 接著請執行下列指令, 將位於/ boot 目錄下的核心設定檔 config-x.x.x 複製到核心原始碼目錄中:
編譯系統核心 • 這麼做的好處是可以保留發行版預設所開啟的功能, 我們只要依需要新增或取消其他功能即可, 不需重新設定。接著請參考之前的說明來設定核心, 例如要開啟支援 NTFS 功能的方法如下所示:
編譯系統核心 • 請特別注意, 執行 mkinitrd指令製作 initrd 檔時所指定的版本編號, 需以核心原始碼目錄下 Makefile 檔中的記錄為準。此例中, 筆者使用的核心原始碼目錄為 /usr/src/linux-2.6.5-1.358, 其中 Makefile 檔記錄的核心版本為 2.6.5-1.358custom, 因此在製作 initrd 檔時, 需將核心版本編號指定為 2.6.5-1.358custom。
掛載 NTFS 分割區 • 更換核心並重新啟動電腦後, 就可以掛載 NTFS 的分割區了。例如筆者的NTFS 分割區位於 /dev/hda1, 想要掛載此分割區時, 只要執行下列指令掛載即可: • 其中 "-t ntfs" 指定分割區為 NTFS 檔案系統;"umask=0" 表示讓每個使用者都可以進入該目錄讀取檔案。完成掛載後就可以正常存取了。
掛載 NTFS 分割區 • 若想每次開機均自動掛載此分割區則, 請以文書編輯器開啟 /etc/fstab 檔,如下修改: • 如此, 以後每次開機均會自動掛載 /dev/hda1 的 NTFS 分割區了。
下載及安裝 Fedora Core 3 的核心原始碼 • Fedora Core 3 發行版的安裝光碟中沒有內附核心的原始碼, 但 Fedora Project 仍然遵循GPL 授權條款的約定, 在網路上釋出, 您可依照下列步驟自行下載安裝: