LINUX modules 模块安装 MINI-HOWTO
内容
*本文件的目的
*警告
*先决要素
*针对模组重新编译核心
*针对模组设定Debian或RedHat
*针对模组设定Slackware
*针对模组设定其它发行套件
*版权和合法性
_________________________________________________________________
本文件的目的
我对Linux和模组[modules]的经验一直是,现有的文件不能提供令人满意的
解说,要如何成功地设定模组而装好Linux并能正常运作.本文件的解说步骤
已经成功地被使用了好几遍了,包括在我自己的系统以及通过Internet指导某
人去设法取得某些方法,能要求仅提供模组形式的驱动程式以便能运作.
我自己的系统是跑Linux的RedHat4.1发行套件,而且它是在我发展的这套
步骤下建立起来的.自从那次之後,我也已成功地把它安装在跑各样Slackware
发行套件的系统,及一种Debian发行套件的系统,而且所需要步骤会在这□
针对这三类(发行套件)正确地设定模组提出说明.
_________________________________________________________________
警告
我最近有用相同的步骤在RedHat4.2上,但在一样的系统上出现不一样的结果.
我到现在还未找出是那是什麽问题,所以不能做任何保证,这样用是否一定能在你
的系统上运作.
_________________________________________________________________
先决要素
*在使用本文件的步骤之前,读者'必须'已做了Linux安装工作,而且取
得成为root使用者身分的Linux提示符号下,因为大部分牵扯到的步骤
只能由这所说的使用者才能进行.
*目前存在的核心可以编译成使用模组或不使用模组,甚至能在开机过程秀出
错误讯息,假若发生上述情况,那是因为所设定的模组在那时(开机时)无法
取得的缘故.
*目前核心的原始树[sourcetree]假设是可找到其摆在/usr/src/linux
而且也假设该目录是本文件全部中,任何连续命令开始所在的目前目录.
_________________________________________________________________
编译加速
如果你的机器有16Megabytes或以上的RAM,那麽有个有用加速可以用,它
允许核心平行编译两个以上的模组.当核心在编译时,这将会增加机器负载,但
会减少编译时所花费的时间.
在你能使用这方法前,你需要检查你的机器上存有的RAM有多少,如果你这个
设得太高,编译实际上会慢下来.经验显示最佳值乃是根据下列公式与你系统
的RAM多少有关,至少对有32MegabytesRAM的系统是还蛮合理的,虽然它
对有大量RAM的系统是有点保守:
N=[RAMinMegabytes]/8+1
对那些讨厌数学的人要有点帮助,可看下面RAM常用的数量所相应的数值:
RAM大小值若使用16Megs是3,24Megs是4,32Megs是6,
40Megs是6,48Megs是7,56Megs是8,64Megs是9,
80Megs是11,96Megs是13,112Megs是15,128Megs是17,
当你已决定正确的值,编辑档案/usr/src/linux/Makefile而且找到这样一行:
MAKE=make
取代它以:
MAKE=make-jN
其中的N是上面决出的数值.
_________________________________________________________________
针对模组重新编译核心
除了设置[mounted]成root的档案系统(其大部分情况都是ext2的档案系统)
不能设成模组外,其他每个东西都能重新设定核心编成模组来使用.
然而,有某些项目在完全地架设成模组时会出现困难,所以我建议以下东西编入
核心会好些:
*Ethernet硬体驱动程式.
*SCSICD-ROM驱动程式.
相反地,有某些驱动程式组合只适合编成模组,特别是下面中有两个以上的组合:
*平行埠印表机AParallelPrinter,
*平行埠的设备,像是IOMEGAZipDrive或JazzDrive或背接式[BackPack]
CD-ROMdrive,以及
*PLIPDaemon.
你会需要决定哪些是你要编译到核心,又哪些要模组,但应将上面几点列入考虑.
以下面次序的指令来进行,在编译过程,真正的选择就决定了:
cd/usr/src/linux
makemenuconfig
makedepcleanmodulesmodules_installzImage
已经做完成了,而模组的相关性[dependencies]需要绘出[mappedout],这要
下个这样的命令:
depmod-a
最新的核心现在需要被插到开机链[bootchain]中,我假设读者为了(下面)这个
目的使用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_,并以下列内容加入到那□.
#Modulesinitialisation.
#
#Startupthemoduleauto-loadingdaemon.
/sbin/kerneld
#Mountallcurrentlyunmountedauto-mountedpartitions.
/sbin/mount-a
2.已经建立上述档案,当有以root身分登入,按照下列步骤:
cd/etc/rc.d
chmod755init.d/*
cdrc3.d
ln-s../init.d/modules.init05modules.init
这时系统可重新启动,而在这过程中,会被发现模组有彻底完成了.
_________________________________________________________________
针对模组设定Slackware
在这□所列步骤完成之前,"针对模组重新编译核心"所列步骤都假设
你已经完成了.
1.档案_/etc/rc.d/rc.M_需要编辑如下:
1.大约在18行,那有个段落内容如下:
#Screenblanksafter15minutesidletime.
/bin/setterm-blank15
紧接在这之後,插入下面这段,即两边正常的空白行隔开的内容:
#Loadthekernelmoduleauto-loader.
/sbin/kerneld
2.再往下约12行如下列:
#ifthereisno/etc/HOSTNAME,fallbackonthisdefault:
紧接在这之後,插入下面这段,即两边正常的空白行隔开的内容:
#Mountremainingunmountedauto-mountdrives.
/sbin/mount-a
当这些变更都已做好了,就储存这个档案.
对於Slackware没有需要再进一步的修改.
_________________________________________________________________
针对模组设定其它发行套件
在这□所列步骤完成之前,"针对模组重新编译核心"所列步骤都假设
你已经完成了.
对於其他发行套件明确的步骤还没很清楚,但大概是前面所提之一.为了决定是
哪一种,秀出_/etc/rc.d_目录的内容,如下:
cd/etc/rc.d
ls-l*.drc.*
由这个秀出结果,你可以选择以下三个选项之一:
1.如果这所列出来的包含一个目录名称叫_init.d_而且某些目录名称有跟
_rc?.d_吻合,其中的问号是要用一个数字的替代,而且_没有_包含档
案叫_rc.M_,那麽发行套件可以用上述所列用在Debian和RedHat发
行套件的步骤来设定模组.
2.如果这所列出来的没有包含一个目录名称叫_init.d_但包含一个档名叫
_rc.M_那麽该发行套件可以用上述所列用在Slackware发行套件的步骤
来设定模组.
3.如果上面两个选项都没吻合,那麽该发行套件的开机script并没有被本
HOWTO文件所涵盖到.在这情况,欢迎你连络本文件作者提供建言.
_________________________________________________________________
版权与其它合法性事项
本文件是被涵盖在GNUGeneralPublicLicence(GPL)的保护下,而在那□面
所有项目各限制都适用.
可以借由寄email到rhw@bigfoot.com连络到作者.
[附注]
本文件中译版的译者是J.S.Lin,r6921068@ms.cc.ntu.edu.tw
若你发现中译版有谬误或有更好的译法,欢迎来信指教.