Множество современных устройств хранения используют Universal Serial Bus (USB): жесткие диски, брелоки USB, CD-R приводы, и т.д. FreeBSD предоставляет поддержку этих устройств.
Драйвер 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) не должен использоваться в файле настройки.
Конфигурация готова к тестированию, подключите устройство 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)
Если на диске есть файловая система, у вас должна быть возможность смонтировать ее. Раздел 17.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
Помимо разделов Добавление дисков и Монтирование и размонтирование файловых систем, также может быть полезно чтение различных страниц справочника: umass(4), camcontrol(8), и usbconfig(8) для FreeBSD 8.X или usbdevs(8) для более ранних версий FreeBSD.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.