История о том, как я настраивал USB flash-memory-drive в Linux

Итак, купил я себе замечательную вещь, USB Flash Memory Drive, в народе называется просто "флешка". Ну что тут можно сказать.. В WindowsXp определялась сразу и без проблем как "USB DiSK", в Windows98 была заморочка, драйвер корявый - ничего не работало, худо бедно, но запихал и туда.

Как всегда ночью полез в Linux, полюбовался грамотно настроенной системой (не факт, но все работало (ни много ни мало FTP, Samba, Sendmail, NFS, BIND, squid, Apache, ssh) и ничего не сбоило). И тут я вспомнил о своем приобретении... Интернета у меня временно нет, и желание скачать документацию и "сделать все как написано" сразу пропало, и появилось желание поэкспериментировать..

Настраивал я на RedHat Linux 8.0, по неподтвержденным данным на 7.3 все работает аналогично, да вообще везде работает! Первым делом я залогинился под root и просто воткнул флешку в USB порт.. и мне сразу выдалась такая штучка:

[root@etest mnt]# usb.c: USB device 3 (vend/prod 0xd7d/0x100) is not claimed by
                any active driver.
                  Vendor:           Model: USB DISK          Rev: 3.02
                  Type:   Direct-Access                      ANSI SCSI revision: 02

так-как больше ничего не появилось, я полез в файлы /etc/fstab и /etc/mtab, ну в первом ничего измениться не могло по определению, а во втором появилась интересная надпись: "usbdevfs /proc/bus/usb usbdevfs rw 0 0", я смекнул, что в директории /proc/bus/usb могут быть только драйвера и служебная информация, но все-таки я проверил:

[root@etest usb]# ls
001  devices  drivers
Не надеясь на успех я набрал такую команду:
[root@etest mnt]# mkdir /mnt/test
[root@etest mnt]# mount -t usbdevfs /proc/bus/usb /mnt/test

все было спокойно, тогда я проверил что у нас в /mnt/test:
[root@etest mnt]# ls /mnt/test
001  devices  drivers

ну вот получилось то что я и предполагал, но проверить никогда не помешает! Кстати если кому не понятен синтаксис команды mount почитайте мануал, там все очень хорошо расписано "man 8 mount". На самом деле мы имеем право монтировать лишь блочные устройства(к примеру наберите mount -t auto /proc/bus/usb /mnt/test и вы убедитесь в этом), а как известно все они находятся в директории /dev, но там их ой как много, теперь предстояло узнать какой именно наш. Я немного смутился, но решение пришло само собой. Полез я обратно в директорию драйверов, почитать что там пишут... Напомню путь был /proc/bus/usb ничего там интересного не было кроме файла drivers:

[root@etest usb]# cat drivers
         usbdevfs
         hub
 96-111: hiddev
         hid
         usb-storage

Storage - хранение, подумал я и набрал:
[root@etest /]# find /proc/. -name *storage*
/proc/./scsi/usb-storage-0

хи, подумал я набирая:
[root@etest /]# cd /proc/scsi/usb-storage-0
[root@etest usb-storage-0]# ls
0
[root@etest usb-storage-0]# cat 0
   Host scsi0: usb-storage
       Vendor:
      Product: USB Disk
Serial Number: 07310E0900B7
     Protocol: Transparent SCSI
    Transport: Bulk
         GUID: 0d7d0100000007310e0900b7
     Attached: Yes

Ну вот все и прояснилось флешка работает не через /dev/usb а через эмуляцию scsi(ANSI SCSI revision: 02 - эта строчка появилась как только я вставил флешку.. но почему-то я не заметил этого), значит это устройство находится в /dev и начинается на букву 'sda', у меня оно оказалось /dev/sda1.

Неплохо бы его еще прописать в /etc/fstab, например так "/dev/sda1 /mnt/usb-flash vfat noauto,rw,user 0 0"

И в итоге команда монтирования: mount -t auto /dev/sda1 /mnt/usb-flash, или просто mount /mnt/usb-flash(т.к. в /etc/fstab все прописано) и в вашем .bash_profile: "alias usbmount="mount -t auto /dev/sda1 /mnt/usb-flash"", все теперь набрав usbmount вы получаете полноценный доступ к информации, находящейся на вашем "usb-storage". Вместо -t auto можете писать -t vfat - все равно туда куда вы с ним пойдете будет именно vfat.

Да, вот еще, не всегда ведь возможно авторизоваться как супер-пользователь, чтобы монтировать USB disk из-под любого зарегистрированного пользователя надо в /etc/fstab дописать строчку user, вот как она теперь выглядит:

"/dev/sda1      /mnt/usb-flash  vfat    noauto,rw,user  0 0"

Монтируйте хоть от пользователя ssh.

Может статья немного и сумбурная, но я, как наверно многие из вас, все привык делать по описанию, и это был первый шаг, пусть робкий, но шаг к самостоятельности, к изучению и познанию, чего и вам желаю.

Автор: Кучумов Александр [email protected] 16.02.2003