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