BBS水木清华站∶精华区

发信人: raner (毕设好无聊呀!), 信区: Linux 
标  题: Modules mini-HOWTO 
发信站: BBS 水木清华站 (Fri Jun 19 09:04:15 1998) 
 
发信人: hey (吟风·魂之利刃), 信区: Unix 
标  题: [HOWTO] modules mini-howto 
发信站: 华南网木棉站 (Thu Jun 18 09:48:44 1998), 转信 
 
LINUX 模组安装 MINI-HOWTO                      
       
                           内容 
 
 
 
  * 本文件的目的 
  * 警告 
  * 先决要素 
  * 针对 模组 重新编译 核心 
  * 针对 模组 设定 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 到 rhw@bigfoot.com 连络到作者.   
[附注] 
本文件中译版的译者是 J.S.Lin, r6921068@ms.cc.ntu.edu.tw 
若你发现中译版有谬误或有更好的译法,欢迎来信� 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.68.98] 

BBS水木清华站∶精华区