发布时间:2014-09-05 16:50:03作者:知识屋
这个故事中使用的是2.6.22的内核代码。在Linux内核代码目录中,所有与设备驱动程序有关的代码都在drivers/目录下面,在这个目录中用ls命令可以看到很多子目录:
lfg1:/usr/src/linux-2.6.22/drivers # ls
Kconfig acpi atm block char cpufreq dma fc4 hid ide
input leds md mfd mtd oprofile pci ps3 s390 serial spi
usb zorro Makefile amba auxdisplay bluetooth clocksource crypto
edac firewire hwmon ieee1394 isdn macintosh media misc net
parisc pcmcia rapidio sbus sh tc video acorn ata
base cdrom connector dio eisa firmware i2c infiniband
kvm mca message mmc nubus parport pnp rtc scsi sn
telephony w1
其中usb目录包含了所有USB设备的驱动,而usb目录下面又有它自己的子目录,进去看一下,
lfg1:/usr/src/linux-2.6.22/drivers # cd usb/
lfg1:/usr/src/linux-2.6.22/drivers/usb # ls
Kconfig Makefile README atm class core gadget host image misc mon
serial storage usb-skeleton.c
注意到每一个目录下面都有一个Kconfig文件和Makefile,这很重要。稍后会有介绍。
而我们的故事其实是围绕着drivers/usb/storage这个目录来展开的。实际上这里边的代码清清楚楚地展示了我们日常频繁接触的U盘是如何工作的,是如何被驱动起来的。但是这个目录里边的代码并不是生活在世外桃源,它们总是和外面的世界有着千丝万缕的瓜葛。可以继续进来看一下:
lfg1:/usr/src/linux-2.6.22/drivers/usb # cd storage/
lfg1:/usr/src/linux-2.6.22/drivers/usb/storage # ls
Kconfig alauda.h debug.c dpcm.h initializers.c isd200.h karma.c
onetouch.c protocol.h sddr09.c sddr55.h transport.c usb.c
Makefile datafab.c debug.h freecom.c initializers.h jumpshot.c
karma.h onetouch.h scsiglue.c sddr09.h shuttle_usbat.c transport.h
usb.h alauda.c datafab.h dpcm.c freecom.h isd200.c jumpshot.h
libusual.c protocol.c scsiglue.h sddr55.c shuttle_usbat.h
unusual_devs.h
乍一看,着实吓了一跳,用`wc -l *`这个命令统计一下,15455行!但是,也许,生活中总是充满了跌宕起伏。
认真看了一下Makefile和Kconfig之后,心情明显好了许多。
********************************************
原文摘自《Linux那些事儿之我是USB》
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能