內容 * 本文件的目的 * 警告 * 先決要素 * 針對 模組 重新編譯 核心 * 針對 模組 設定 Debian 或 RedHat * 針對 模組 設定 Slackware * 針對 模組 設定其它發行套件 * 版權和合法性 _________________________________________________________________ 本文
內容
* 本文件的目的
* 警告
* 先決要素
* 針對 模組 重新編譯 核心
* 針對 模組 設定 Debian 或 RedHat
* 針對 模組 設定 Slackware
* 針對 模組 設定其它發行套件
* 版權和合法性
_________________________________________________________________
本文件的目的
我對
Linux 和模組[modules]的經驗一直是, 現有的文件不能提供令人滿意的
解說, 要如何成功地設定模組而裝好 Linux 並能正常運作. 本文件的解說步驟
已經成功地被使用了好幾遍了, 包括在我自己的系統以及通過 Inte
.net指導某
人去設法取得某些方法, 能要求僅提供模組形式的驅動程式以便能運作.
我自己的系統是跑 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, r6921068@ms.
clearcase/" target="_blank" >cc.ntu.edu.tw
若你發現中譯版有謬誤或有更好的譯法,歡迎來信指教.