Linux下设备驱动的相关资料
时间:2007-01-20 来源:junglegq
模块依赖关系:/lib/modules/2.6.xxx/modules.dep
查看module信息: modinfo [-d] e100
查看设备文件编号:<kernel src>/Documentation/devices.txt
安装linux时,指定参数:linux noprobe ,内核将不自动侦测硬件
启动系统时,先加载kernel, 后initrd
kernel初始化过程:
CPU-->MEM-->系统时钟-->PCI Bus-->IDE driver-->IDE控制芯片驱动-->IDE硬盘驱动
显示/设置硬盘参数:
hdparm -i /dev/hda
hdparm -d /dev/hda
hdparm -d0 /dev/hda //设置:disable DMA
hdparm -d1 /dev/hda //设置:enable DMA
hdparm -X70 /dev/hda //设置:使用UDMA6-ATA133模式(慎用)
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 udma6
其中,64-70 表示UDMA0-6
lsmod
cat /proc/modules
一般通过将ide刻录机通过ide-scsi模块转变为scsi伪设备来刻盘
方法:
-
grub.conf kernel ... hdc=ide-scsi
-
/etc/modprobe.conf ide-cd ignore=\”hdc\” ide-scsi
-
编译内核, 支持scsi光驱
当安装向导要求将驱动软盘插入时,实际的驱动程序被放到initrd的ramdisk中。
一般,内核中只支持scsi总线,相应的scsi设备必须另外编译模块。
对于以太网驱动:
/etc/modprobe.conf alias eth0 8139too
/lib/modules/2.6.xxx/modules.dep //查找依赖关系
手动添加驱动模块:
-
make
-
modprobe xxx.o //测试
-
echo “alias eth0 xxx.o” >>/etc/modprobe.conf
-
cp xxx.o /lib/modules/2.6.xxx/kernel/drivers/net
-
echo “/lib/modules/2.6.xxx/kernel/drivers/net/xxx.o:” >> /lib/modules/2.6.xxx/modules.dep
X-window
显卡驱动模块目录: /usr/X11R6/lib/modules/drivers/
注意:这些显卡驱动只是针对X下的驱动,有别于内核编译的显卡驱动模块
当显卡在X下工作异常,可考虑升级X或下载显卡驱动模块
常见显卡驱动的下载地址
nVIDIA显卡驱动程序地址http://www.nvidia.com/object/linux.html。
ATI显卡驱动程序地址http://www.ati.com/support/driver.html(ATI网站访问速度较慢,可以多试几次)。
VIA芯片集成显卡驱动程序http://www.viaarena.com/?PageID=296。
SIS显卡驱动程序地址http://www.mypcera.com/qu/2/soft1/xsis.rpm。
Intel芯片组显卡驱动程序地址http://downloadfinder.intel.com/scripts-df/support_intel.asp?iid=HPAGE+ header_support_download&。
Intel笔记本迅驰显示驱动程序地址http://downloadfinder.intel.com/scripts-df/filter_results.asp?strOSs=39&strTypes=DRV%2CARC&ProductID= 922&OSFullName= Linux*&submit=Go%21。
常用的15寸显示器频率:
HorizSync: 31.5-37.9
VertRefresh: 50.0-70.0
启动X
1)startx
2)gdm,kdm,xdm
可以在kernel参数中调整显示模式 vga=0x314
linux下声卡的驱动是作为普通内核模块加载的
常用的linux下万能声卡:
ALSA (Advanced Linux Sound Architecture) : www.alsa-project.org
OSS : www.opensound.com
ALSA驱动模块的声卡默认是不发音的, 打开方式:
./audunmute ???
或: amixer -c o sset 'Master', 0 100%, 100% unmute &&
amixer -c o sset 'PCM', 0 100% unmute
可编译/etc/modprobe.conf, 在系统启动时调整音量:
post-install snd-card-0 amixer -c o sset 'Master', 0 100%, 100% unmute &&
amixer -c o sset 'PCM', 0 100% unmute
可手工设定非即插即用声卡:
options snd-card-0 io=0x300 irg=5
usb设备的驱动:
基础模块:
usbcore.o
host/ehci-hcd.o //USB2。0支持
host/usb-uhci.o //Intel、VIA等芯片组的USB驱动
host/usb-ohci.o //iMac、SIS、Ali等非intel芯片组的驱动,支持非x86系统
storage/usb-storage.o //usb存储设备、u盘等
hid.o //键鼠等外设
以上基础模块必须事先加载后,再插入usb设备
安装系统不支持的usb设备
目前,不支持主要是由于系统不能确认usb设备厂商型号等信息,可手动加载
1) 加载所需的基础模块
-
cat /proc/bus/usb/devices ,保存Vendor ProdID Product信息
-
修改usb-storage 中关于厂商识别和产品识别的列表部分
P: Vendor=040a ProdID=0570 Rev= 1.00 S: Manufacturer=Eastman Kodak Company S: Product=KODAK EasyShare DX6340 Zoom Digital Camera |
若/proc/bus/usb下没有相应USB设备信息,应输入以下命令将USB设备文件系统手动挂装到/proc/bus/usb:
# mount -t usbdevfs none /proc/bus/usb |
编辑drivers/usb/storage/unusual_devs.h文件。下面是所有已知的USB产品登记列表,格式如下:
UNUSUAL_DEV(idVendor, idProduct, bcdDeviceMin, bcdDeviceMax, vendor_name, product_name, use_protocol, use_transport, init_function, Flags). |
usb-storage.o就是根据这个列表来识别各种设备。这样,可以将刚才/proc/bus/usb/devices文件中得出的信息添加在上面,重新编译模块,让usb-storage驱动去认识和发现它。
UNUSUAL_DEV( 0x040a, 0x0570, 0x0001, 0x0001, "Eastman Kodak Company", "KODAK EasyShare DX6340 Zoom Digital Camera", US_SC_SCSI, US_PR_CB, NULL, US_FL_FIX_INQUIRY | US_FL_START_STOP | US_FL_MODE_XLATE ), |
注意,添加以上几句代码的位置一定要正确。经过比较发现,usb-storage驱动对所有注册都是按idVendor、 idProduct数值从小到大排列的,因此添加代码也要放在相应位置。
重新编译模块,之后插入的数码相机就可以像其它优盘一样作为USB存储设备去访问。
# make dep # make modules # make modules_install |
-
重新编译内核的usb-storage模块
make dep && make modules && make modules_install
IEEE1394
基础模块(类似usb)
ieee1394.o
ohci1394.o
确定设备文件名的方法:
-
cat /proc/devices //查当前设备的主设备号
-
/usr/src/Documentation/devices.txt //查主设备号对应的设备文件名
打印系统:
传统BSD LPD 打印系统
linux LPRng打印系统
最新的CPUS打印系统
在unix下使用postscript打印,系统不需要安装驱动程序。Postscript的脚步解释工作由打印机完成。缺点:部分打印机不支持ps
linux使用了Ghostscript软件,作为解决方案支持一些不支持ps的打印机
User --->Ghostscript--->Printer