|
|
以下是我今天配置USB的过程,其中难免有些理解上的错误,还望指正
原LFS系统中,插入U盘,UDEV没有自动加载usb-storage, sd_mod, scsi_mod模块.(只要加载usb-storage模块,根据依赖关系,可自动加载后面两个), 也没有在/dev目录下创建sda或 sda1节点.U盘不能使用.
手动加载usb-storage模块,插上U盘,可以自动创建sda1 sda节点.U盘可以使用
根据LFS-6.0BOOK中关于UDEV的描述:
---------------------------------------------------------------
"处理可热插拔/动态设备
当您插入一个设备,例如一个 USB(Universal Serial Bus 通用串行总线) 接口的 MP3 播放器,内核会检测到设备连接,并产生一个热插拔事件,如果驱动程序已经加载(要么是因为驱动已经编入内核,要么是已经通过 S05modules 启动脚本加载了),udev 将被调用,根据 /sys 目录下的 sysfs 数据来创建相应的设备节点。如果该设备的驱动是一个未加载的模块,将设备连接到系统上只会让内核的总线驱动产生一个热插拔事件,通知用户空间有新设备连接,但并不加载驱动。事实上,什么都没有做,设备仍然不能使用。
----------------------------------------------------------------------
USB驱动是usb-storage模块,我想这里是属于第二种情况, dmesg显示有"kobject_hotplug: /sbin/udevsend....................."说明产生了一个热插拔事件,但未加载驱动.
在BOOK中还有如下内容:
----------------------------------------------------------------
创建设备的问题
自动创建设备节点的时候,存在一些已知的问题:
1) 某个内核驱动可能没有将其数据导出到 sysfs。
这个问题在内核源代码树之外的第三方驱动程序上尤其常见,结果是这些驱动无法创建其设备节点。用 /etc/sysconfig/createfiles 配置文件手动创建这些设备,参考内核文档里的 devices.txt 文件或者该驱动的文档以获得正确的主/次设备号。
-----------------------------------------------------------------
这里没有加载驱动,应该不是"没有将数据导出到sysfs
安装HOTPLUG.
直接"make install"安装
LFS中是用S10udev初初始化脚本负责在 Linux 启动的时候创建设备节点,该脚本首先将 /sbin/udev 注册为热插拔事件处理程序。
该脚本中有一行:
echo /sbin/udevsend > /proc/sys/kernel/hotplug
注释掉,修改为
echo /sbin/hotplug > /proc/sys/kernel/hotplug
启动LFS,插上U盘,自动创建节点,加载模块,U盘可以使用 |
|