添加一下内容到/etc/udev/rules.d/10-my-udev.rules里
KERNEL=="sd[b-z]", NAME="%k", SYMLINK+="usbhd-%k", GROUP="users",
OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[b-z][0-9]", SYMLINK+="usbhd-%k",
GROUP="users", NAME="%k"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mkdir -p
/media/usbhd-%k"
ACTION=="add", KERNEL=="sd[b-z][0-9]", PROGRAM=="/lib/udev/vol_id
-t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o
rw,utf8=true,codepage=936,noauto,flush,quiet,nodev,nosuid,noexec,noatime,dmask=000,fmask=111
/dev/%k /media/usbhd-%k", OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mount -t auto -o
rw,locale=zh_CN.UTF-8,noauto,sync,dirsync,noexec,nodev,noatime
/dev/%k /media/usbhd-%k", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/umount -l
/media/usbhd-%k"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rm -rf
/media/usbhd-%k", OPTIONS="last_rule"
14.6.1
IDE硬盘
基本上所有的IDE硬盘都会被Linux系统识别并且驱动,如果没有驱动程序,我们还可以按照前面所述的方法去试着寻找。在IDE硬盘被驱动之后,在软件中的设置一般首先是用/dev/MAKEDEV创建硬盘设备(如果当前系统中不存在的话)。例如添加一个IDE硬盘设备:
cd /dev
# ./MAKEDEV hdc
然后创建分区设备:
# ./MAKEDEV hdc1
# ./MAKEDEV hdc2
注意分区设备在Linux中一般是以1开始的。其余的操作还包括利用fdisk或者parted对/dev/hdc进行分区及格式化等操作,这些详细操作在第十一章《文件系统》中已经描述得很清楚,就不再赘述了。
14.7 USB硬盘
USB移动硬盘以其易用性和方便性受到广大计算机使用者的欢迎,当前版本的Linux一般都支持USB设备的即插即用,插到系统中之后就可以自动识别。我们在使用USB硬盘的时候,可以在插上之后直接用第小节的介绍的方法去挂接USB盘,如果不成功,再回头来看一看USB检测小节的内容是否可以解决问题。
14.7.1
USB硬盘的检测
USB设备检测也是通过/proc目录下的USB文件系统进行的。为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块。在检测开始时,一般要先检测是否存在/proc/bus/usb目录,若不存在则尝试插入USB桥接模块。
现在一般的USB桥接器模块有三种类型,UHCI、OHCI和EHCI。在决定插入那一个桥接器模块时,可以察看/proc/pci文件来决定。打开此文件如果发现USB节为
I/O at
0xHHHH格式(例如“I/O at 0xe000 [0xe01f]”),HHHH为16进制数,则桥接器类型为UHCI。如果是32 bit memory at 0xHH000000形式(例如“32 bit memory at 0xee000000”),HH为16进制数,则桥接器类型为OHCI。EHCI是USB2.0版本的类型,如果使的是USB2.0版本,则需要选用这个选项。如果我们的桥接器类型不满足上述任何一种情况,唯一的解决办法就是分别尝试插入这两种模块,直到成功为止。一般而言,UHCI类型桥接器的插入模块是uhci或usb-uhci(由内核版本决定);而对于OHCI类型的桥接器插入模块是ohci或usb-ohci。
我们在正确的插入了桥接器模块之后,/proc文件系统下就会出现USB设备目录,不过此时这个目录是空的,没有任何文件。下一步是挂接usbdevfs文件系统,然后通过此文件系统检测连接的设备。挂接usbdevfs文件我们可以通过如下操作实现:
# mount -t usbdevfs none
/proc/bus/usb
如果成功挂接,就会生成文件/proc/bus/usb/devices,/proc/bus/usb/drivers和目录/proc/bus/usb/busNo。下面查看一下USB模块:
# lsmod
Module
Size Used by
Not tainted
nls_iso8859-1
3516
1 (autoclean)
nls_cp437
5116
1
(autoclean)
vfat
13004
1
(autoclean)
fat
38808
0
(autoclean) [vfat]
usb-storage
69332 1
sd_mod
13516 2
(autoclean)
scsi_mod
107160
2
(autoclean) [usb-storage sd_mod]
autofs
13268 0
(autoclean) (unused)
e100
60644
1
keybdev
2944 0
(unused)
mousedev
5492
0
(unused)
hid
22148
0
(unused)
input
5856
0
[keybdev mousedev hid]
usb-uhci
26348 0
(unused)
usbcore
78784
1
[usb-storage hid usb-uhci]
ext3
70784
2
jbd
51892
2
[ext3]
如果列表中不存在上面所显示的usb-storage、usb-uhci、usbcore等模块,说明还没有加载。那么我们用modprobe加载:
# modprobe usb-storage
# modprobe scsi_mod
# modprobe sd_mod
下一步就可以尝试插入USB硬盘并使用了。
14.7.2
USB硬盘的使用
将USB硬盘插到计算机上之后,会被自动识别,USB设备文件与SCSI一样,是sd开头。我们输入fdisk –l可以查看到已经连接成功的USB硬盘的情况:
# fdisk -l |more
Disk /dev/sda: 10.0 GB, 10056131072
bytes
255 heads, 63 sectors/track, 1222
cylinders
Units = cylinders of 16065 * 512 = 8225280
bytes
Device Boot
Start
End
Blocks Id System
/dev/sda1
1
1222
9815683+
c Win95 FAT32
(LBA)
这说明USB硬盘大小是10G,上面有一个分区是/dev/sda1,文件系统类型是FAT32。使用USB硬盘与其他类型的硬盘一样,也需要挂接然后访问。
# mkdir /mnt/usb
# mount –t vfat /dev/sda1 /mnt/usb
然后从/mnt/usb挂接点就可以访问USB盘了,注意由于此USB盘使用的是FAT32格式,所以内核也必须支持FAT32才行。