sleeping.<7>[ 174.547697] usb-storage 6-2:1.0: device found<7>[ 174.547700] usb-storage 6-2:1.0: waiting called<7>[ 179.554294] usb-storage: Status code 0; transferred 31/31<7>[ 179.554296] usb-storage: -- ] usb-storage: -- transfer complete<7>[ 179.558290] usb-storage: Bulk status result = 0<7>[ 179.558298 ] usb-storage: Bulk Status S 0x53425355 T 0x3 R 0 Stat 0x0<7>[ 179.558300] usb-storage: -- Result from : queuecommand called<7>[ 179.558398] usb-storage: *** thread awakened.<7>[ 179.558401] usb-storage:
方法 1:伪安装 在本方法中,我们往配置文件中添加一行 install usb-storage /bin/true, 这会让安装 usb-storage 模块的操作实际上变成运行 /bin/true, window.adsbygoogle || []).push({}); $ sudo vim /etc/modprobe.d/block_usb.conf 然后将下行内容添加进去: install usb-storage 但是这个方法有一个小问题,那就是当系统内核更新的时候,usb-storage 模块会再次出现在它的默认位置。 方法 3:将 USB 存储器纳入黑名单 我们也可以通过 /etc/modprobe.d/blacklist.conf 文件将 usb-storage 纳入黑名单。 usb-storage 就在就会被系统阻止加载,但这种方法有一个很大的缺点,即任何特权用户都可以通过执行以下命令来加载 usb-storage 模块, $ sudo modprobe usb-storage
最开始注册hub部分: 需要关注注册驱动的有hub, usb, usb-storage。 hub中用来做检测usb口是否有OTG的东东接入,usb是所有usb接入设备的老大哥,usb-storage只是usb的一个小老弟。 注册usb-storage部分: 打开usb\storage\usb.c,这里注册了usb-storage的驱动,这个驱动就是与U盘节点有关的。 至于usb_register,最后也就是把usb-storage驱动添加到一个链表中,等待着遍历执行的时刻。 3. 当一个U盘插入linux设备后: a. 在usb_set_configuration或者之前,肯定有一个获取usb-storage驱动信息的过程,总之这次的probe会进入usb_probe_interface,驱动就是之前注册的usb-storage
示例:手动加载驱动:sudo modprobe usb-storage 示例:更新内核以获取最新驱动支持:sudo apt-get updatesudo apt-get upgradesudo apt-get 示例:编辑驱动配置文件:sudo nano /etc/modprobe.d/usb-storage.conf 示例:添加或修改配置项:options usb-storage quirks=1234:5678
1、modprobe usb-storage #初始化挂载新模块 2、然后插入 u盘 3、fdisk -l #进行查看U盘盘符,sdb或者sdb1 4、mount /dev/sdb1 /mnt
是自动解决依赖关系,所以这个命令知道就行了; 模块之前也有依赖关系,比如我们想驱动USB移动硬盘,目前有两种驱动,一种是udev,在内核中有,但目前不太稳定;另一种办法是用usb- storage驱动,而usb-storage 依赖的模块是scsi模块,所以我们要用usb-storage的模块,也得把scsi安装该命令为 modules.dep文件或映射文件创建依赖关系,modules.dep文件位于/lib/modules/
发行版所用的内核是2.6x版本,是自动解决依赖关系,所以这个命令知道就行了;模块之前也有依赖关系,比如我们想驱动USB 移动硬盘,目前有两种驱动,一种是udev ,在内核中有,但目前不太稳定;另一种办法是用usb-storage 驱动,而usb-storage 依赖的模块是scsi 模块,所以我们要用usb-storage 的模块,也得把scsi 编译安装; 再举个例子:sata的硬盘,在 Linux中的设备表示的是/dev/sd
三、使用计数的典型应用场景 3.1 驱动模块的依赖管理 USB 核心驱动(usbcore)被众多 USB 设备驱动依赖: 当插入 U 盘时,usb-storage驱动加载,usbcore计数 + 1 再插入 USB 鼠标,usbhid驱动加载,usbcore计数 + 1 拔出 U 盘,usb-storage卸载,usbcore计数 - 1 只有当所有 USB 设备都拔出后,usbcore计数为 0,才能被卸载
sunxi-ohci [ 148.152449] usb 2-1.2: not running at top speed; connect to a high speed hub [ 148.173819] usb-storage 2-1.2:1.0: USB Mass Storage device detected [ 148.181455] scsi host0: usb-storage 2-1.2:1.0 [ 150.225528
*:modules=sd-mod,usb-storage,ext3,ext4:" /etc/update-extlinux.conf 26.更新引导配置 update-extlinux 27.将磁盘信息写到文件系统配置文件中
1, Class=root_hub, Driver=xhci_hcd/4p, 480M |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage
在Makefile文件里查找CONFIG_USB_STORAGE,从第9行得知,该选项对应的模块为usb-storage。
monitor none -device nec-usb-xhci,id=usb0,msi=off,msix=off -drive if=none,id=stick,file=file.img -device usb-storage monitor none -device nec-usb-xhci,id=usb0,msi=off,msix=off -drive if=none,id=stick,file=file.img -device usb-storage
举个实际例子: 当你把 U 盘插进 Linux 电脑,U 盘驱动(比如usb-storage)会先识别设备,然后告诉 devfs:“新硬盘来了,主设备号 8,次设备号 16(对应 sdb1),类型是块设备 设备号分配不灵活:“绑定” 驱动,难扩展 devfs 的设备号是 “跟驱动绑定” 的 —— 比如pl2303驱动只能用主号 188,usb-storage只能用主号 8。
can't setup: -19 isp1760 4f000000.usb: USB bus 1 deregistered usbcore: registered new interface driver usb-storage
install usb-storage /bin/true 9. 开启SELinux Security-Enhanced Linux (SELinux) 是内核提供的强制访问控制安全机制。
install usb-storage /bin/true 9.打开SELinux SELinux(安全增强linux)是linux内核提供的一个强制的访问控制安全机制。
还可以禁用USB设备来达到安全的目的: vim /etc/modprobe.d/stopusb install usb-storage /bin/true 或者使用下面的命令将USB的驱动程序删除 [root
还可以禁用USB设备来达到安全的目的: vim /etc/modprobe.d/stopusb install usb-storage /bin/true 或者使用下面的命令将USB的驱动程序删除 [root
[ 1.058476] hub 2-0:1.0: 1 port detected [ 1.065805] usbcore: registered new interface driver usb-storage