18.5. USB устройства хранения

Предоставил Marc Fonvieille.

Множество современных устройств хранения используют Universal Serial Bus (USB): жесткие диски, брелоки USB, CD-R приводы, и т.д. FreeBSD предоставляет поддержку этих устройств.

18.5.1. Настройка

Драйвер umass(4) предоставляет поддержку устройств хранения USB. Если вы используете GENERIC ядро, изменять что-либо в настройках не потребуется. Если вы используете настроенное ядро, убедитесь, что в файле настройки присутствуют следующие строки:

device scbus
device da
device pass
device uhci
device ohci
device ehci
device usb
device umass

Для доступа к устройствам хранения USB драйвер umass(4) использует подсистему SCSI, ваши устройства USB будут видны системе как SCSI устройства. В зависимости от чипсета USB на материнской плате, для включения поддержки USB 1.X вам потребуется только один из параметров device uhci или device ohci. Однако, наличие обоих этих параметров не помешает. Поддержка контроллеров USB 2.0 предоставляется драйвером ehci(4) (строка device ehci). Не забудьте скомпилировать и установить новое ядро после добавления каких-либо строк.

Замечание: Если ваше USB устройство это пишущий привод CD-R или DVD, необходимо добавить в ядро SCSI CD-ROM драйвер, cd(4), следующей строкой:

device cd

Поскольку устройство записи видно как SCSI диск, драйвер atapicam(4) не должен использоваться в файле настройки.

18.5.2. Тестирование конфигурации

Конфигурация готова к тестированию, подключите устройство USB, и в буфере системных сообщений (dmesg(8)), диск должен отобразиться примерно так:

umass0: USB Solid state disk, rev 1.10/1.00, addr 2
GEOM: create disk da0 dp=0xc2d74850
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
da0: 1.000MB/s transfers
da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)

Конечно, производитель, имя устройства (da0) и другие детали могут отличаться в зависимости от конфигурации.

Поскольку устройство USB видится как SCSI, команда camcontrol может быть использована для вывода списка устройств хранения USB, подключенных к системе:

# camcontrol devlist
<Generic Traveling Disk 1.11>      at scbus0 target 0 lun 0 (da0,pass0)

Если на диске есть файловая система, у вас должна быть возможность смонтировать ее. Разд. 18.3 поможет вам создать и отформатировать разделы на диске USB если потребуется.

Внимание: Ниже описанный механизм (vfs.usermount), допускающий монтирование случайных носителей пользователями, не являющимися доверенными, считается небезопасным. Большинство файловых систем во FreeBSD никак не ограждено от возможности несанкционированного монтирования устройств.

Чтобы это устройство мог смонтировать обычный пользователь, необходимо выполнить определенные действия. Для начала, необходимо дать обычным пользователям доступ к устройствам, создаваемым при подключении USB устройства. Решение состоит во включении всех пользователей данных устройств в группу operator. Это делается утилитой pw(8). Затем, когда устройства созданы, у группы operator должен быть доступ на чтение и запись для этих устройств. Это выполняется путем добавления следующих строк в /etc/devfs.rules:

[localrules=5]
add path 'da*' mode 0660 group operator

Замечание: Если к системе подключены SCSI диски, это должно быть сделано немного иначе. Так, если в системе уже есть диски с da0 по da2, вторая строка должна выглядеть так:

add path 'da[3-9]*' mode 0660 group operator

Это исключит уже существующие диски из группы operator.

Вам также потребуется включить набор правил devfs.rules(5) в файл /etc/rc.conf:

devfs_system_ruleset="localrules"

Затем, ядро необходимо настроить так, чтобы оно позволяло обычным пользователям монтировать файловые системы. Простейший способ сделать это - добавить в файл /etc/sysctl.conf следующую строку:

vfs.usermount=1

Этот параметр установится только после последующей перезагрузки. Для установки этой переменной можно также использовать sysctl(8).

Последний шаг - создание каталога, куда будет монтироваться файловая система. Каталог должен принадлежать пользователю, монтирующему файловую систему. Один из способов сделать это под пользователем root - создать каталог /mnt/username (замените username именем пользователя, а usergroup — именем главной группы пользователя):

# mkdir /mnt/username
# chown username:usergroup /mnt/username

Предположим, что USB брелок подключен, и появилось устройство /dev/da0s1. Поскольку эти устройства обычно поставляются форматированными с файловой системой FAT, их можно смонтировать так:

% mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/username

Если вы отключите устройство (диск должен быть сначала размонтирован), вы должны увидеть в буфере системных сообщений что-то подобное:

umass0: at uhub0 port 1 (addr 2) disconnected
(da0:umass-sim0:0:0:0): lost device
(da0:umass-sim0:0:0:0): removing device entry
GEOM: destroy disk da0 dp=0xc2d74850
umass0: detached

18.5.3. Дополнительная информация

Помимо разделов Добавление дисков и Монтирование и размонтирование файловых систем, также может быть полезно чтение различных страниц справочника: umass(4), camcontrol(8), и usbconfig(8) для FreeBSD  8.X или usbdevs(8) для более ранних версий FreeBSD.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.