Linux那些事儿之我是U盘(1)小城故事

本文深入探讨了Linux 2.6.10内核中USB存储设备驱动的组织结构及其实现细节。从drivers/usb/storage目录入手,揭示了U盘等USB存储设备如何被Linux系统识别与驱动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个故事中使用的是2.6.10的内核代码.Linux内核代码目录中, 所有去设备驱动程序有关的代码都在drivers/目录下面,在这个目录中我们用ls命令可以看到很多子目录.

localhost:/usr/src/linux-2.6.10/drivers # ls
Kconfig   atm        cdrom    eisa      ide       macintosh  message  net       parport  s390    tc         w1
Makefile  base       char     fc4       ieee1394  mca        misc     nubus     pci      sbus    telephony  zorro
acorn     block      cpufreq  firmware  input     md         mmc      oprofile  pcmcia   scsi    usb
acpi      bluetooth  dio      i2c       isdn      media      mtd      parisc    pnp      serial  video

其中usb目录包含了所有usb设备的驱动,而usb目录下面又有它自己的子目录,进去看一下,

localhost:/usr/src/linux-2.6.10/drivers # cd usb/
locahost:/usr/src/linux-2.6.10/drivers/usb # ls
Kconfig  Makefile  README  atm  class  core  gadget  host  image  input  media  misc  net  serial  storage  usb-skeleton.c

注意到每一个目录下面都有一个Kconfig文件和一个Makefile,这很重要.稍后会有介绍.

而我们的故事其实是围绕着drivers/usb/storage这个目录来展开的.实际上这里边的代码清清楚楚地展示了我们日常频繁接触的U盘是如何工作的,是如何被驱动起来的.但是这个目录里边的冬冬并不是生活在世外桃源,他们总是和外面的世界有着千丝万缕的瓜葛.可以继续进来看一下,

localhost:/usr/src/linux-2.6.10/drivers/usb # cd storage/
localhost:/usr/src/linux-2.6.10/drivers/usb/storage # ls
Kconfig    debug.c  freecom.c       isd200.c    protocol.c  sddr09.c  shuttle_usbat.c  unusual_devs.h
Makefile   debug.h  freecom.h       isd200.h    protocol.h  sddr09.h  shuttle_usbat.h  usb.c
datafab.c  dpcm.c   initializers.c  jumpshot.c  scsiglue.c  sddr55.c  transport.c      usb.h
datafab.h  dpcm.h   initializers.h  jumpshot.h  scsiglue.h  sddr55.h  transport.h

咋一看,着实吓了一跳,用`wc -l *`这个命令统计一下,12076行,晕死...

但是,也许,生活中总是充满了跌宕起伏.

认真看了一下Makefile和Kconfig之后,心情明显好了许多.

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值