免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5897 | 回复: 8
打印 上一主题 下一主题

求助,U盘在linux上的识别问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-01 10:19 |只看该作者 |倒序浏览
10可用积分
小弟最近帮公司的人装了一台linux的workstation。硬件是DELL Precision 690,软件是RedHat WS 4 64bit。除了不带一些网络服务(vsftpd等),WS版本和AS差不多。由于该workstation是SAS硬盘,所以系统里自动占用了/dev/sda文件。
[root@test /]# fdisk -l

Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            5410        6046     5116702+  83  Linux
/dev/sda2   *           7        5409    43399597+   7  HPFS/NTFS
/dev/sda3            6047        7066     8193150   82  Linux swap
/dev/sda4            7067       17849    86614447+   5  Extended
/dev/sda5            7067        7703     5116671   83  Linux
/dev/sda6            7704        7830     1020096   83  Linux
/dev/sda7            7831       17849    80477586   83  Linux

Partition table entries are not in disk order

看不到U盘的信息。
[root@test /]# dmesg | grep usb
usbcore: registered new driver usbfs
usbcore: registered new driver hub
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
usb 2-1: new low speed USB device using address 2
input: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:1d.0-1
usb 2-2: new low speed USB device using address 3
input: USB HID v1.11 Mouse [USB Optical Mouse] on usb-0000:00:1d.0-2
drivers/usb/input/hid-input.c: event field not found
usbcore: registered new driver usb-storage
usb 1-8: new high speed USB device using address 4
usb 1-8: USB disconnect, address 4
usb 1-8: new high speed USB device using address 5

内核应该加载了USB的模块。
[root@test /]# cd /proc/bus/usb
[root@test usb]# ls
001  002  003  004  005  devices
[root@test /]# ls -l /dev/ | grep "sd"
brw-rw----  1 root     disk   8,   0 Aug  1 00:02 sda
brw-rw----  1 root     disk   8,   1 Aug  1 00:02 sda1
brw-rw----  1 root     disk   8,   2 Aug  1 00:02 sda2
brw-rw----  1 root     disk   8,   3 Aug  1 00:02 sda3
brw-rw----  1 root     disk   8,   4 Aug  1 00:02 sda4
brw-rw----  1 root     disk   8,   5 Aug  1 00:02 sda5
brw-rw----  1 root     disk   8,   6 Aug  1 00:02 sda6
brw-rw----  1 root     disk   8,   7 Aug  1 00:02 sda7

没有其他的sdb, sdc or sd*

尝试手动加载usb块文件:
[root@test dev]# mknod -m 660 sdb b 8 8
[root@test /]# mount /dev/sdb /mnt/usb
mount: /dev/sdb is not a valid block device
[root@test dev]# rm -f sdb
[root@test dev]# cat /proc/devices | more
Block devices:
  1 ramdisk
  2 fd
  3 ide0
  8 sd
  9 md
65 sd
66 sd
67 sd
.......
[root@test dev]# mknod -m 660 sdb b 65 0
[root@test /]# mount /dev/sdb /mnt/usb
mount: /dev/sdb is not a valid block device

手动做硬件设备的nod文件不成功,我再想不出什么好办法了。在CENTOS 5 上一插U盘,系统就会有提示的。我不知道问题出在那儿?请高手帮助!

[root@test /]# cd /lib/modules/`uname -r`
[root@test 2.6.9-22.ELsmp]# ls -l mod* | grep usb
-rw-r--r--  1 root root 155306 Jul 25 23:36 modules.usbmap
[root@test storage]# insmod /lib/modules/2.6.9-22.ELsmp/kernel/drivers/usb/storage/usb-storage.ko
insmod: error inserting '/lib/modules/2.6.9-22.ELsmp/kernel/drivers/usb/storage/usb-storage.ko': -1 File exists
[root@test etc]# cat modprobe.conf | grep usb
alias usb-controller ehci-hcd
alias usb-controller1 uhci-hcd
[root@test dev]# lsusb
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 003: ID 0461:4d15 Primax Electronics, Ltd
Bus 002 Device 002: ID 413c:2003 Dell Computer Corp.
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 005: ID 0781:5406 SanDisk Corp.
Bus 001 Device 001: ID 0000:0000
[root@test etc]# usbmodules --device /proc/bus/usb/001/005
usb-storage


[root@test /]# cat /proc/partitions
major minor  #blocks  name

   8     0  143374740 sda
   8     1    5116702 sda1
   8     2   43399597 sda2
   8     3    8193150 sda3
   8     4          1 sda4
   8     5    5116671 sda5
   8     6    1020096 sda6
   8     7   80477586 sda7
   8    16    1003336 sdb
   8    17    1003305 sdb1
奇怪了,这为什么有sdb和sdb1??但是在/dev/下,并没有啊.

信息就这么多了。

[ 本帖最后由 johnzw 于 2007-8-1 11:12 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-08-01 11:11 |只看该作者
该问题已解决。
[root@test /]# cat /proc/partitions
major minor  #blocks  name

   8     0  143374740 sda
   8     1    5116702 sda1
   8     2   43399597 sda2
   8     3    8193150 sda3
   8     4          1 sda4
   8     5    5116671 sda5
   8     6    1020096 sda6
   8     7   80477586 sda7
   8    16    1003336 sdb
   8    17    1003305 sdb1
根据这个信息手动挂载nod文件
[root@test dev]# mknod -m 660 sdb b 8 16
[root@test dev]# mknod -m 660 sdb1 b 8 17
[root@test /]# ls -l /dev/ | grep "sd"
brw-rw----  1 root     disk   8,   0 Aug  1 00:02 sda
brw-rw----  1 root     disk   8,   1 Aug  1 00:02 sda1
brw-rw----  1 root     disk   8,   2 Aug  1 00:02 sda2
brw-rw----  1 root     disk   8,   3 Aug  1 00:02 sda3
brw-rw----  1 root     disk   8,   4 Aug  1 00:02 sda4
brw-rw----  1 root     disk   8,   5 Aug  1 00:02 sda5
brw-rw----  1 root     disk   8,   6 Aug  1 00:02 sda6
brw-rw----  1 root     disk   8,   7 Aug  1 00:02 sda7
brw-rw----  1 root     root   8,  16 Aug  1 18:57 sdb
brw-rw----  1 root     root   8,  17 Aug  1 18:58 sdb1
需要更改文件所属组。chown root.disk ./sdb*
不能mount sdb只能mount sdb1(哪位告诉我为什么?sdb表示整个u盘,sdb1表示u盘的1个分区,实际上应该是一样的啊)。
mount -vfat /dev/sdb1 /mnt/usb

OK. 自己解决了,积分就不送了。

求职 : Linux运维
论坛徽章:
0
3 [报告]
发表于 2007-08-01 15:48 |只看该作者
如果你学过一些solaris就可以明白多了,硬盘或U盘可看成一样的存储设备,存储设备分为b设备即块设备块设备有文件系统可以读写,C设备即裸设备是给底层硬件用的,不包括文件系统信息所以无法挂载,这和sda及sda1的道理差不多。形象点说就好像,你可以去饭店吃饭但是你不能说去吃饭店,虽然饭就是饭店做的!哈哈!

论坛徽章:
0
4 [报告]
发表于 2007-08-01 22:12 |只看该作者
mke2fs /dev/sdb
mount /dev/sdb /mnt

现在/dev下的设备文件都是由udevd管理的,如果没有设备对应文件,说明设备没有被认出来。
如果设备被认出来了,却没有文件,那说明udevd工作不正常了

论坛徽章:
0
5 [报告]
发表于 2007-08-03 09:55 |只看该作者
原帖由 tsadmin 于 2007-8-1 15:48 发表
如果你学过一些solaris就可以明白多了,硬盘或U盘可看成一样的存储设备,存储设备分为b设备即块设备块设备有文件系统可以读写,C设备即裸设备是给底层硬件用的,不包括文件系统信息所以无法挂载,这和sda及sda1 ...


你的意思我明白,B是块设备,有一定大小的buff缓冲区,C设备是字符流设备。按你的意思是sda貌似一个名称而已,实际上真实设备还是sda1?

论坛徽章:
0
6 [报告]
发表于 2007-08-03 09:58 |只看该作者
原帖由 ttvast 于 2007-8-1 22:12 发表
mke2fs /dev/sdb
mount /dev/sdb /mnt

现在/dev下的设备文件都是由udevd管理的,如果没有设备对应文件,说明设备没有被认出来。
如果设备被认出来了,却没有文件,那说明udevd工作不正常了


你的话,不太同意,因为系统里默认的硬盘是sda,但是你fdisk -l只能看到sda1开始的分区,你看不到sda,实际上linux系统也是针对partition进行mount的,难道能对整个的硬盘mount吗?谁能解释一下?

论坛徽章:
0
7 [报告]
发表于 2007-08-08 00:24 |只看该作者
sda是一个块设备, sda1也是一个块设备. 区别是sda上可以分区成sda1 sda2... , sda1上不能再分区.

文件系统是建立在块设备上的, 所以不管你是sda还是sda1上都可以创建文件系统, 也可以被mount.

论坛徽章:
0
8 [报告]
发表于 2007-08-08 16:35 |只看该作者
原帖由 ttvast 于 2007-8-8 00:24 发表
sda是一个块设备, sda1也是一个块设备. 区别是sda上可以分区成sda1 sda2... , sda1上不能再分区.

文件系统是建立在块设备上的, 所以不管你是sda还是sda1上都可以创建文件系统, 也可以被mount.


我同意你的意见,但是我现在在redhat WS 4上 只能mount /dev/sdb1 不能mount/dev/sdb
在centos 5 上 测试:
  1. [root@wiki mnt]# mount -t vfat /dev/sdb /mnt/usb
  2. mount: wrong fs type, bad option, bad superblock on /dev/sdb,
  3.        missing codepage or other error
  4.        In some cases useful info is found in syslog - try
  5.        dmesg | tail  or so

  6. [root@wiki mnt]# mount -t vfat /dev/sdb1 /mnt/usb
  7. [root@wiki mnt]#
复制代码

论坛徽章:
0
9 [报告]
发表于 2007-08-12 10:49 |只看该作者
看来应该是后来改了,我前天弄一MP3,挂的时候只有SDB,没有SDB0,或者SDB1之类的,
我的系统是FC7,YUM UPDATE到最新了。
另外,你们说的好高深,我很想知道makenod的一切,有谁愿意帮忙介绍点书籍或者资料给我吗?谢谢了
不麻烦的话,最好E-MAIL:   aaniao002[a]163.com
来短信也可以,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP