系统初始化过程驱动程序的安装
在Linux安装过程中,系统上的硬件会被检测,基于检测到的结果安装程序会决定哪些模块需要在引导时被载入。Red Hat的安装程序为anaconda,它提供了自动检测硬件,并且安装的机制。
但是,如果计算机内的某些硬件没有默认的驱动程序,比如一块SCSI卡,我们可以在启动后的boot提示符下,输入“linux dd”,在加载完内核后,系统会自动提示插入驱动盘,这时就有机会把该硬件的Linux驱动程序装入。
如果在安装系统时,某种硬件总是因为中断冲突(ISA总线的设备较常见,比如一块ISA网卡)没法正常驱动,或者是缺少驱动程序,那么可以在boot提示符下输入“linux noprobe”。在这种模式下,安装程序不会自动配置找到的硬件,可以自己来选择现有驱动,配置驱动程序的参数,或者选择用光盘或软盘加载驱动程序。
定制引导盘
系统启动时是如何加载驱动的?下面让我们来看一下Red Hat的安装光盘是怎样引导的。当Linux安装光盘启动时,加载位于光盘上isolinux中的内核文件vmlinuz,内核运行完毕后,又将initrd.img的虚拟文件系统加载到内存中。这个文件为ext2文件系统的镜像,经过gzip压缩,可以通过以下步骤查看该镜像中的内容: # mount /mnt/cdrom # mount -t ext2 -o loop /ext2img /mnt/imgdir linuxrc@ var/ modules.pcimap pcitable
# mkdir /mnt/imgdir
# gunzip < /mnt/cdrom/isolinux/initrd.img > /ext2img
# cd /mnt/imgdir
# ls -F
bin@
dev/
etc/
lost+found/
modules/
proc/
sbin/
tmp/
# ls modules/
module-info
modules.cgz
modules.dep
其中modules.dep为模块的注册文件,同时有各种模块的依存关系。modules.cgz为cpio的打包文件,实际的各种驱动模块就在该文件中。我们可以通过以下命令解包:
由此可以看到,解包出来的目录2.4.21-4XXX。进入该目录下的i386目录,就可以看到当前启动盘中支持的所以驱动程序: # ls 3c59x.o acenic.o
3w-xxxx.o
8139cp.o
8139too.o
8390.o
aacraid.o
aic79xx.o
……
若希望在系统中加入需要的驱动程序,可以相应地修改这些文件,比如在modules.dep中加入该模块的名字和依存关系,将编译好的驱动模块文件加入modules.cgz中,这样就可以制定自己的安装光盘。
硬盘上的系统启动过程与上面类似,但是initrd的镜像文件要更简单些,一般在initrd-2.4.XXX.img的虚拟文件系统中,只会在/lib目录下包含ext3.o jbd.o lvm-mod.o等少数文件,用来驱动硬盘上的ext3的文件系统。加载文件系统后,就可以使用/lib/modules/2.4.XXX/下的modules.dep文件及Kernel目录中的各种驱动文件。
自动配置安装
如果安装完Linux系统后,又添加了新的硬件,那么系统必须载入正确的驱动程序才可以使用它。在Red Hat Linux中,可以使用kudzu来配置硬件。这是PnP设备的检测程序,当系统使用新硬件引导后,运行kudzu(默认会自动运行),如果新硬件被支持,那么它就会被自动检测到。该程序还会为它配置驱动模块,把结果写入到文件/etc/sysconfig/hwconf中,kudzu可以通过对比这个文件发现新安装的硬件,并进行配置;也可以通过编辑模块配置文件/etc/modules.conf来手工指定加载模块。
Kudzu服务默认每次启动时都要运行,如果需要缩短启动时间,使用下面命令可以停止系统启动时的kudzu服务:
如果要安装新的硬件,可以手动运行kudzu程序。
那么kudzu程序如何认识硬件的呢?可以查看/usr/share/hwdata/目录下的文件,根据这些文件中的PnP信息,kudzu可以识别各种硬件设备。
以上介绍了Linux下驱动程序的大体结构、主要的加载方式和相关配置文件,在安装Linux时加载驱动程序,并且根据需要定制自己的引导盘,在安装完成后安装新的、即插即用硬件。下一讲开始,我们将学习具体硬件驱动的安装方法。
| 共4页: 上一页 [1] [2] [3] 4 | ||||||
|
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||