2013年1月1日 星期二

安裝 Fedora 「編譯『核心模組』」所需套件

在 Linux 中安裝第三方來源(非同一社群維護)的軟體或套件時,若這個軟體或套件有涉及核心功能,如:驅動程式(AMD、NVIDIA 顯示卡)、模擬器加速模組(VirtualBox 之 Extension Pack 擴充包、Guest Additions)、某些伺服器程式等,就可能需再加裝「編譯『核心模組(kernel module)』」的套件。
    在這個編譯、連結的過程中,會將系統的核心功能與這些第三方來源的軟體結合,可以令這些軟體正常執行。因為不同版本的 Linux 核心模組不一定相容,所以這個編譯、連結的過程,在每次有 Linux 核心或第三方來源軟體或套件更新時,就要重覆一次。
    這次就將這些編譯相關的套件、安裝、操作做個整理,一方面留做記錄,一方面分享給需要的讀者。

一、查詢使用中 Linux 的版本

欲加裝編譯 Linux 「核心模組」的相關套件,要知道使用中的 Linux 版本,否則安裝不正確的套件版本,編譯過程會錯誤。欲查詢 Linux 的核心版本,用『uname』這個命令查詢
[SiB@P3-1G ~]$ uname -r
根據顯示訊息,可以判定所使的 Linux 核心版本
訊息包含文字Linux 使用版本
 x86_64 64-bit 的 Linux
 i686 及 PAE 32-bit PAE 的 Linux 
 i686 且無 PAE  32-bit 的 Linux
:有關『 uname 』說明,請讀者參考文章篇末。

二、安裝『編譯核心模組』所需相關套件

編譯「核心模組」所需的套件主要有兩個:『 kernel-devel 』及『 gcc 』,如果使用的核心是『 PAE 』的版本,則為『 kernel-PAE-devel 』,其它關聯套件 yum 會幫你整理列出。
    有些第三方的軟體或套件帶有自動編譯核心模組的程序,可以在 Linux 核心更新或自己更新時,依需求自動執行核心模組編譯的程序。但是,要讓這個功能啟動,Linux 系統要先安裝一個名為『 dkms 』的套件。
    總結上述說明,需安裝的相關套件為
套件名稱套 件 用 途
 kernel-devel編譯「核心模組」所需的標頭檔、函式庫,x86_64 和 i686 的套件名稱相同,『 yum 』安裝時,會自動選擇 x86_64 或 i686 的版本。
 kernel-PAE-devel 編譯「核心模組」所需的標頭檔、函式庫,用於支援 PAE 的 i686 核心。當 32 位元電腦的記憶體大於 4 GB 時,用支援 PAE 的版本才可以存取高位址的記憶體。
 gcc執行編譯、連結所需的程式。
 dkms用以產生 Linux 「核心模組」的一個框架,所編譯的原始碼一般不屬於 Linux 核心原始碼樹。當安裝新的核心時,支援 DKMS 的核心設備驅動程序會自動重建。

三、安裝『編譯核心模組』所需相關套件

開始進行安裝步驟,先切換成 root 身份,依步驟一中查詢得知的 Linux 版本選擇以下不同的命令。

64-bit 的 Linux

若訊息中出現 x86_64 的文字,表示使用 64-bit 的 Linux,則命令為
[root@P3-1G ~]# yum install kernel-devel gcc dkms

32-bit PAE 的 Linux

若訊息中出現 i686 及 PAE 的文字,表示使用 32-bit PAE 的 Linux,則命令為
[root@P3-1G ~]# yum install kernel-PAE-devel gcc dkms

32-bit 的 Linux

若訊息中出現 i686 且無 PAE 的文字,表示使用 32-bit 的 Linux,則命令為
[root@P3-1G ~]# yum install kernel-devel gcc dkms
注意一:某些 32-bit 的電腦在安裝 Fedora 時,安裝程式會選擇 32-bit PAE 的 Linux 核心,若讀者未加上 PAE,則會安裝錯誤的套件,若讀者未查覺將導致之後的編譯失敗。這是在 32-bit 電腦常出現的『核心編譯』錯誤的原因之一。
注意二:因為 yum 安裝時,會自動選擇最新版本,所以讀者在安裝前最好確認執行中的 Linux 版本是最新版本,才不會編譯失敗。

四、命令 uname 的說明

『 uname 』這個命令是用來查詢 Linux 系統的核心、處理器資訊。除了剛才的『 -i 』以外,還有其它參數可以顯示不同的資訊。
命令、參數顯 示 訊 息範 例 訊 息
 uname -a 顯示所有訊息 為以下訊息依序合成之訊息,未知項目除外 
 uname -s 核心名稱 Linux
 uname -n 網路的主機名稱  P3-1G
 uname -r 核心的發佈版本 3.6.10-2.fc17.i686.PAE
 uname -v 本版本發佈時間 #1 SMP Tue Dec 11 18:27:35 UTC 2012 
 uname -m 機器硬體名稱 i686
 uname -p 處理器等級 i686
 uname -i 硬體平台 i386
 uname -o 作業系統名稱 GNU/Linux
以上說明只要在「終端機」中下命令『 uname --help 』即可,筆者只是做簡單翻譯而已。如果讀者想詳細瞭解,Linux 中也有個好工具,一樣在「終端機」中下命令『 man uname 』,可以看到有關『 uname 』詳盡的說明。

已測試版本:

  • Fedora: 14, 17

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)