歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> LINUX modules 模塊安裝 MINI-HOWTO

LINUX modules 模塊安裝 MINI-HOWTO

日期:2017/2/27 9:23:00   编辑:更多Linux
內容      * 本文件的目的      * 警告      * 先決要素      * 針對 模組 重新編譯 核心      * 針對 模組 設定 Debian 或  RedHat      * 針對 模組 設定 Slackware      * 針對 模組 設定其它發行套件      * 版權和合法性                  _________________________________________________________________             本文件的目的                我對 Linux 和模組[modules]的經驗一直是, 現有的文件不能提供令人滿意的       解說, 要如何成功地設定模組而裝好 Linux 並能正常運作. 本文件的解說步驟    已經成功地被使用了好幾遍了, 包括在我自己的系統以及通過 Internet指導某    人去設法取得某些方法, 能要求僅提供模組形式的驅動程式以便能運作.            我自己的系統是跑 Linux 的 RedHat 4.1 發行套件, 而且它是在我發展的這套    步驟下建立起來的. 自從那次之後,我也已成功地把它安裝在跑各樣 Slackware     發行套件的系統, 及一種 Debian 發行套件的系統, 而且所需要步驟會在這□    針對這三類(發行套件)正確地設定模組提出說明.              _________________________________________________________________             警告               我最近有用相同的步驟在 RedHat 4.2 上, 但在一樣的系統上出現不一樣的結果.    我到現在還未找出是那是什麽問題, 所以不能做任何保證,這樣用是否一定能在你    的系統上運作.              _________________________________________________________________             先決要素                             * 在使用本文件的步驟之前, 讀者 '必須' 已做了 Linux 安裝工作, 而且取        得成為 root 使用者身分的 Linux 提示符號下, 因為大部分牽扯到的步驟        只能由這所說的使用者才能進行.                      * 目前存在的核心可以編譯成使用模組或不使用模組, 甚至能在開機過程秀出        錯誤訊息, 假若發生上述情況, 那是因為所設定的模組在那時(開機時)無法        取得的緣故.              * 目前核心的原始樹[source tree]假設是可找到其擺在 /usr/src/linux        而且也假設該目錄是本文件全部中,任何連續命令開始所在的目前目錄.                          _________________________________________________________________             編譯加速            如果你的機器有 16 Megabytes 或以上的 RAM, 那麽有個有用加速可以用, 它    允許核心平行編譯兩個以上的模組. 當核心在編譯時,這將會增加機器負載, 但    會減少編譯時所花費的時間.        在你能使用這方法前, 你需要檢查你的機器上存有的 RAM 有多少, 如果你這個    設得太高, 編譯實際上會慢下來. 經驗顯示最佳值乃是根據下列公式與你系統    的 RAM 多少有關, 至少對有 32 Megabytes RAM 的系統是還蠻合理的, 雖然它    對有大量 RAM 的系統是有點保守:        N = [RAM in Megabytes] / 8 + 1        對那些討厭數學的人要有點幫助, 可看下面 RAM 常用的數量所相應的數值:        RAM 大小值若使用 16  Megs 是 3 , 24  Megs 是 4 , 32  Megs 是 6 ,    40  Megs 是 6 , 48  Megs 是 7 , 56  Megs 是 8 , 64  Megs 是 9 ,    80  Megs 是 11, 96  Megs 是 13, 112  Megs 是 15 ,128  Megs 是 17 ,         當你已決定正確的值, 編輯檔案 /usr/src/linux/Makefile 而且找到這樣一行:            MAKE=make            取代它以:            MAKE=make -j N    其中的 N 是上面決出的數值.             _________________________________________________________________             針對 模組 重新編譯 核心                 除了設置[mounted]成 root 的檔案系統(其大部分情況都是 ext2 的檔案系統)    不能設成模組外, 其他每個東西都能重新設定核心編成模組來使用.        然而,有某些項目在完全地架設成模組時會出現困難, 所以我建議以下東西編入    核心會好些:                          * Ethernet 硬體驅動程式.                      * SCSI CD-ROM 驅動程式.                    相反地, 有某些驅動程式組合只適合編成模組, 特別是下面中有兩個以上的組合:                          * 平行埠印表機A Parallel Printer,                      * 平行埠的設備, 像是 IOMEGA ZipDrive 或 JazzDrive 或 背接式[BackPack]        CD-ROM drive, 以及                              * PLIP Daemon.                    你會需要決定哪些是你要編譯到核心, 又哪些要模組, 但應將上面幾點列入考慮.    以下面次序的指令來進行, 在編譯過程, 真正的選擇就決定了:            cd /usr/src/linux    make menUConfig    make dep clean modules modules_install zImage            已經做完成了, 而模組的相關性[dependencies]需要繪出[mapped out], 這要    下個這樣的命令:            depmod -a            最新的核心現在需要被插到開機鏈[boot chain]中, 我假設讀者為了(下面)這個    目的使用 LILO, 因為這是我碰過唯一的開機載入器[loader].        我建議 不要 從自動地就插入最新編譯好的核心成為內定的 Linux 核心, 因為    如果它失敗, 那麽要恢復架設好的 Linux, 又不做完全重新的安裝是非常困難,    而重新安裝並不建議. 基於這理由, 我在我的 /etc/lilo.conf 檔案會加下列項      目:            image=/usr/src/linux/arch/i386/boot/zImage       label=new       alias=n       read-only       vga=ask       optional            這項目說有個 可選擇性 的開機啟動選項 (如果我們所討論中的 image 不存在,    那麽將會忽略) , 若可選擇的, 其開機開啟 /boot/newlinux ,而且允許吾人在    它開機進入的顯示模式下來選擇.        假設上面在 /etc/lilo.conf 存在的項目, 新版的核心已經正確的擺在編譯終了    所在處, 那麽可以用下列命令來安裝:            lilo            已經做完了那些, 讀者需要接著進一步步驟,這與它們所被選擇的發行套件有關,    如下:          * 針對 模組 設定 Debian 或  RedHat      * 針對 模組 設定 Slackware      * 針對 模組 設定其它發行套件                            _________________________________________________________________             針對 模組 設定 Debian 或  RedHat               在這□所列步驟完成之前, "針對 模組 重新編譯 核心" 所列步驟都假設    你已經完成了.        Debian 和 RedHat 發行套件有一樣的開機啟動程序, 所以也有一樣的步驟來    設定他們的 模組.                 1. 已經以 root 身分登入, 使用你最喜愛的文字編輯器來開個新的檔案叫做        _/etc/rc.d/init.d/modules.init_ , 並以下列內容加入到那□.            # Modules initialisation.    #    # Start up the module auto-loading daemon.    /sbin/kerneld    # Mount all currently unmounted auto-mounted partitions.    /sbin/mount -a                 2. 已經建立上述檔案, 當有以 root 身分登入, 按照下列步驟:             cd /etc/rc.d    chmod 755 init.d/*    cd rc3.d    ln -s ../init.d/modules.init 05modules.init            這時系統可重新啟動, 而在這過程中, 會被發現模組有徹底完成了.              _________________________________________________________________             針對 模組 設定 Slackware          在這□所列步驟完成之前, "針對 模組 重新編譯 核心" 所列步驟都假設    你已經完成了.                      1. 檔案 _/etc/rc.d/rc.M_ 需要編輯如下:                                1. 大約在 18 行,那有個段落內容如下:                 # Screen blanks after 15 minutes idle time.    /bin/setterm -blank 15                                   緊接在這之後, 插入下面這段,即兩邊正常的空白行隔開的內容:                 # Load the kernel module auto-loader.    /sbin/kerneld                                2. 再往下約 12 行如下列:                 # if there is no /etc/HOSTNAME, fall back on this default:                       緊接在這之後, 插入下面這段,即兩邊正常的空白行隔開的內容:                  # Mount remaining unmounted auto-mount drives.    /sbin/mount -a                    當這些變更都已做好了, 就儲存這個檔案.                    對於 Slackware 沒有需要再進一步的修改.              _________________________________________________________________             針對 模組 設定其它發行套件          在這□所列步驟完成之前, "針對 模組 重新編譯 核心" 所列步驟都假設    你已經完成了.            對於其他發行套件明確的步驟還沒很清楚, 但大概是前面所提之一. 為了決定是    哪一種, 秀出 _/etc/rc.d_ 目錄的內容, 如下:        cd /etc/rc.d    ls -l *.d rc.*            由這個秀出結果, 你可以選擇以下三個選項之一:                 1. 如果這所列出來的包含一個目錄名稱叫 _init.d_ 而且某些目錄名稱有跟        _rc?.d_ 吻合, 其中的問號是要用一個數字的替代, 而且 _沒有_ 包含檔        案叫 _rc.M_, 那麽發行套件可以用上述所列用在 Debian 和 RedHat 發        行套件的步驟來設定模組.             2. 如果這所列出來的沒有包含一個目錄名稱叫 _init.d_ 但包含一個檔名叫        _rc.M_ 那麽該發行套件可以用上述所列用在 Slackware 發行套件的步驟        來設定模組.             3. 如果上面兩個選項都沒吻合, 那麽該發行套件的開機 script 並沒有被本        HOWTO 文件所涵蓋到. 在這情況, 歡迎你連絡本文件作者提供建言.                          _________________________________________________________________             版權與其它合法性事項            本文件是被涵蓋在 GNU General Public Licence (GPL)的保護下, 而在那□面    所有項目各限制都適用.        可以借由寄 email 到 [email protected] 連絡到作者.      [附注]    本文件中譯版的譯者是 J.S.Lin, [email protected]    若你發現中譯版有謬誤或有更好的譯法,歡迎來信指教.




Copyright © Linux教程網 All Rights Reserved