亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

概述Linux系統的驅動框架及驅動加載1
2007-07-28   網絡

本講主要概述Linux設備驅動框架、驅動程序的配置文件及常用的加載驅動程序的方法;并且介紹Red Hat Linux安裝程序是如何加載驅動的,通過了解這個過程, 我們可以自己將驅動程序放到引導盤中;安裝完系統后,使用kudzu自動配置硬件程序。

  Linux設備驅動概述

  1. 內核和驅動模塊

  操作系統是通過各種驅動程序來駕馭硬件設備,它為用戶屏蔽了各種各樣的設備,驅動硬件是操作系統最基本的功能,并且提供統一的操作方式。正如我們查看屏幕上的文檔時,不用去管到底使用nVIDIA芯片,還是ATI芯片的顯示卡,只需知道輸入命令后,需要的文字就顯示在屏幕上。硬件驅動程序是操作系統最基本的組成部分,在Linux內核源程序中也占有較高的比例。

  Linux內核中采用可加載的模塊化設計(LKMs ,Loadable Kernel Modules),一般情況下編譯的Linux內核是支持可插入式模塊的,也就是將最基本的核心代碼編譯在內核中,其它的代碼可以選擇是在內核中,或者編譯為內核的模塊文件。

  如果需要某種功能,比如需要訪問一個NTFS分區,就加載相應的NTFS模塊。這種設計可以使內核文件不至于太大,但是又可以支持很多的功能,必要時動態地加載。這是一種跟微內核設計不太一樣,但卻是切實可行的內核設計方案。

  我們常見的驅動程序就是作為內核模塊動態加載的,比如聲卡驅動和網卡驅動等,而Linux最基礎的驅動,如CPU、PCI總線、TCP/IP協議、APM(高級電源管理)、VFS等驅動程序則編譯在內核文件中。有時也把內核模塊就叫做驅動程序,只不過驅動的內容不一定是硬件罷了,比如ext3文件系統的驅動。

  理解這一點很重要。因此,加載驅動時就是加載內核模塊。下面來看一下有關模塊的命令,在加載驅動程序要用到它們:lsmod、modprob、insmod、rmmod、modinfo。

lsmod 列出當前系統中加載的模塊,例如:

#lsmod (與cat /proc/modules 得出的內容是一致的)
Module Size Used by Not tainted
radeon 115364 1 
agpgart 56664 3 
nls_iso8859-1 3516 1 (autoclean)
loop 12120 3 (autoclean)
smbfs 44528 2 (autoclean)
parport_pc 19076 1 (autoclean)
lp 9028 0 (autoclean)
parport 37088 1 (autoclean) [parport_pc lp]
autofs 13364 0 (autoclean) (unused)
ds 8704 2 
yenta_socket 13760 2 
pcmcia_core 57184 0 [ds yenta_socket]
tg3 55112 1 
sg 36940 0 (autoclean)
sr_mod 18104 0 (autoclean)
microcode 4724 0 (autoclean)
ide-scsi 12208 0 
scsi_mod 108968 3 [sg sr_mod ide-scsi]
ide-cd 35680 0 
cdrom 33696 0 [sr_mod ide-cd]
nls_cp936 124988 1 (autoclean)
nls_cp437 5148 1 (autoclean)
vfat 13004 1 (autoclean)
fat 38872 0 (autoclean) [vfat]
keybdev 2976 0 (unused)
mousedev 5524 1 
hid 22212 0 (unused)
input 5888 0 [keybdev mousedev hid]
ehci-hcd 20104 0 (unused)
usb-uhci 26412 0 (unused)
usbcore 79392 1 [hid ehci-hcd usb-uhci]
ext3 91592 2 
jbd 52336 2 [ext3]

上面顯示了當前系統中加載的模塊,左邊數第一列是模塊名,第二列是該模塊大小,第三列則是該模塊使用的數量。

如果后面為unused,則表示該模塊當前沒在使用。如果后面有autoclean,則該模塊可以被rmmod -a命令自動清洗。rmmod -a命令會將目前有autoclean的模塊卸載,如果這時候某個模塊未被使用,則將該模塊標記為autoclean。如果在行尾的[ ]括號內有模塊名稱,則括號內的模塊就依賴于該模塊。例如:

cdrom 34144 0 [sr_mod ide-cd]

其中ide-cd及sr_mod模塊就依賴于cdrom模塊。

系統的模塊文件保存在/lib/modules/2.4.XXX/kerne目錄中,根據分類分別在fs、net等子目錄中,他們的互相依存關系則保存在/lib/modules/2.4.XXX/modules.dep 文件中。

需要注意,該文件不僅寫入了模塊的依存關系,同時內核查找模塊也是在這個文件中,使用modprobe命令,可以智能插入模塊,它可以根據模塊間依存關系,以及/etc/modules.conf文件中的內容智能插入模塊。比如希望加載ide的光驅驅動,則可運行下面命令:

# modprobe ide-cd

此時會發現,cdrom模塊也會自動插入。

insmod也是插入模塊的命令,但是它不會自動解決依存關系,所以一般加載內核模塊時使用的命令為modprobe。

rmmod可以刪除模塊,但是它只可以刪除沒有使用的模塊。

Modinfo用來查看模塊信息,如modinfo -d cdrom,在Red Hat Linux系統中,模塊的相關命令在modutils的RPM包中。

熱詞搜索:

上一篇:Linux內核升級&補丁安裝手冊6
下一篇:概述Linux系統的驅動框架及驅動加載2

分享到: 收藏