aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/ru/books/handbook/usb-device-mode/_index.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/content/ru/books/handbook/usb-device-mode/_index.adoc')
-rw-r--r--documentation/content/ru/books/handbook/usb-device-mode/_index.adoc268
1 files changed, 268 insertions, 0 deletions
diff --git a/documentation/content/ru/books/handbook/usb-device-mode/_index.adoc b/documentation/content/ru/books/handbook/usb-device-mode/_index.adoc
new file mode 100644
index 0000000000..8278e3e2b2
--- /dev/null
+++ b/documentation/content/ru/books/handbook/usb-device-mode/_index.adoc
@@ -0,0 +1,268 @@
+---
+description: 'Эта глава посвящена использованию режима USB Device Mode и USB On The Go (USB OTG) в FreeBSD'
+next: books/handbook/partiv
+params:
+ path: /books/handbook/usb-device-mode/
+part: 'Часть III. Администрирование системы'
+prev: books/handbook/dtrace
+showBookMenu: true
+tags: ["OTG", "USB"]
+title: 'Глава 28. Режим USB-устройства / USB OTG'
+weight: 32
+---
+
+[[usb-device-mode]]
+= Режим устройства USB / USB OTG
+:doctype: book
+:toc: macro
+:toclevels: 1
+:icons: font
+:sectnums:
+:sectnumlevels: 6
+:sectnumoffset: 28
+:partnums:
+:source-highlighter: rouge
+:experimental:
+:images-path: books/handbook/usb-device-mode/
+
+ifdef::env-beastie[]
+ifdef::backend-html5[]
+:imagesdir: ../../../../images/{images-path}
+endif::[]
+ifndef::book[]
+include::shared/authors.adoc[]
+include::shared/mirrors.adoc[]
+include::shared/releases.adoc[]
+include::shared/attributes/attributes-{{% lang %}}.adoc[]
+include::shared/{{% lang %}}/teams.adoc[]
+include::shared/{{% lang %}}/mailing-lists.adoc[]
+include::shared/{{% lang %}}/urls.adoc[]
+toc::[]
+endif::[]
+ifdef::backend-pdf,backend-epub3[]
+include::../../../../../shared/asciidoctor.adoc[]
+endif::[]
+endif::[]
+
+ifndef::env-beastie[]
+toc::[]
+include::../../../../../shared/asciidoctor.adoc[]
+endif::[]
+
+[[usb-device-mode-synopsis]]
+== Обзор
+
+Эта глава посвящена использованию USB Device Mode и USB On The Go (USB OTG) в FreeBSD. В неё входят виртуальные последовательные консоли, виртуальные сетевые интерфейсы и виртуальные USB-накопители.
+
+При работе на оборудовании, поддерживающем режим USB-устройства или USB OTG, который встроен во многие материнские платы, стек USB FreeBSD может работать в _режиме устройства_. Режим устройства позволяет компьютеру представлять себя как различные классы USB-устройств, включая последовательные порты, сетевые адаптеры и устройства хранения данных, или их комбинацию. USB-хост, такой как ноутбук или настольный компьютер, может обращаться к ним так же, как к физическим USB-устройствам. Режим устройства иногда называют «режимом USB-гаджета».
+
+Существует два основных способа, которыми оборудование может обеспечивать функциональность режима устройства: с отдельным "клиентским портом", который поддерживает только режим устройства, и с портом USB OTG, который может обеспечивать как режим устройства, так и режим хоста. Для портов USB OTG стек USB автоматически переключается между режимом хоста и режимом устройства в зависимости от того, что подключено к порту. Подключение USB-устройства, такого как флеш-накопитель, приводит к переключению FreeBSD в режим хоста. Подключение USB-хоста, например компьютера, приводит к переключению FreeBSD в режим устройства. Однонаправленные "клиентские порты" всегда работают в режиме устройства.
+
+То, что FreeBSD предоставляет USB-хосту, зависит от параметра `hw.usb.template` в sysctl. Некоторые шаблоны предоставляют одно устройство, например, последовательный терминал; другие предоставляют несколько устройств, которые можно использовать одновременно. Примером является шаблон 10, который предоставляет устройство хранения данных, последовательную консоль и сетевой интерфейс. Список доступных значений смотрите в man:usb_template[4].
+
+Обратите внимание, что в некоторых случаях, в зависимости от оборудования и операционной системы хоста, для того чтобы хост заметил изменение конфигурации, может потребоваться либо физическое отключение и повторное подключение, либо принудительное повторное сканирование шины USB способом, зависящим от системы. Если на хосте запущена FreeBSD, можно использовать man:usbconfig[8] `reset`. Это также необходимо сделать после загрузки [.filename]#usb_template.ko#, если USB-хост уже был подключен к разъему USBOTG.
+
+Прочитав эту главу, вы будете знать:
+
+* Как настроить функциональность USB Device Mode в FreeBSD.
+* Как настроить виртуальный последовательный порт на FreeBSD.
+* Как подключиться к виртуальному последовательному порту из различных операционных систем.
+* Как настроить FreeBSD для предоставления виртуального USB-сетевого интерфейса.
+* Как настроить FreeBSD для предоставления виртуального USB-накопителя.
+
+[[usb-device-mode-terminals]]
+== Виртуальные последовательные порты USB
+
+=== Настройка последовательных портов в режиме USB-устройства
+
+Поддержка виртуальных последовательных портов предоставляется шаблонами 3, 8 и 10. Обратите внимание, что шаблон 3 работает с Microsoft Windows 10 без необходимости в специальных драйверах и INF-файлах. Другие операционные системы хоста работают со всеми тремя шаблонами. Необходимо загрузить оба модуля ядра man:usb_template[4] и man:umodem[4].
+
+Чтобы включить последовательные порты в режиме устройства USB, добавьте следующие строки в [.filename]#/etc/ttys#:
+
+[.programlisting]
+....
+ttyU0 "/usr/libexec/getty 3wire" vt100 onifconsole secure
+ttyU1 "/usr/libexec/getty 3wire" vt100 onifconsole secure
+....
+
+Затем добавьте следующие строки в [.filename]#/etc/devd.conf#:
+
+[.programlisting]
+....
+notify 100 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "CREATE";
+ match "cdev" "ttyU[0-9]+";
+ action "/sbin/init q";
+};
+....
+
+Перезагрузите конфигурацию, если man:devd[8] уже запущен:
+
+[source, shell]
+....
+# service devd restart
+....
+
+Убедитесь, что необходимые модули загружены, и правильный шаблон установлен при загрузке, добавив следующие строки в [.filename]#/boot/loader.conf#, создав его, если он ещё не существует:
+
+[source, shell]
+....
+umodem_load="YES"
+hw.usb.template=3
+....
+
+Для загрузки модуля и установки шаблона без перезагрузки используйте:
+
+[source, shell]
+....
+# kldload umodem
+# sysctl hw.usb.template=3
+....
+
+=== Подключение к последовательным портам в режиме USB-устройств из FreeBSD
+
+Для подключения к плате, настроенной для предоставления последовательных портов в режиме USB-устройства, подключите USB-хост, например ноутбук, к USB OTG или клиентскому USB-порту платы. Используйте команду `pstat -t` на хосте для вывода списка терминальных линий. В конце списка должен отобразиться USB-последовательный порт, например "ttyU0". Для установки соединения используйте:
+
+[source, shell]
+....
+# cu -l /dev/ttyU0
+....
+
+После нажатия клавиши kbd:[Enter] несколько раз вы увидите приглашение для входа в систему.
+
+=== Подключение к последовательным портам в режиме USB-устройства из macOS
+
+Для подключения к плате, настроенной для предоставления последовательных портов в режиме USB-устройства, подключите USB-хост, например ноутбук, к USB OTG или клиентскому USB-порту платы. Чтобы открыть соединение, используйте:
+
+[source, shell]
+....
+# cu -l /dev/cu.usbmodemFreeBSD1
+....
+
+=== Подключение к последовательным портам в режиме USB-устройства из Linux
+
+Для подключения к плате, настроенной для предоставления последовательных портов в режиме USB-устройства, подключите USB-хост, например ноутбук, к USB OTG или клиентскому USB-порту платы. Чтобы открыть соединение, используйте:
+
+[source, shell]
+....
+# minicom -D /dev/ttyACM0
+....
+
+=== Подключение к последовательным портам в режиме USB-устройства из Microsoft Windows 10
+
+Для подключения к плате, настроенной для предоставления последовательных портов в режиме USB-устройства, подключите USB-хост, например ноутбук, к USB OTG или клиентскому USB-порту платы. Чтобы открыть соединение, вам понадобится программа для работы с последовательным портом, например PuTTY. Для проверки имени COM-порта, используемого Windows, запустите Диспетчер устройств, раскройте раздел "Порты (COM и LPT)". Вы увидите имя, похожее на "USB Serial Device (COM4)". Запустите выбранную программу для работы с последовательным портом, например PuTTY. В диалоговом окне PuTTY установите "Connection type" в значение "Serial", введите COMx (полученный из Диспетчера устройств) в поле "Serial line" и нажмите "Open".
+
+[[usb-device-mode-network]]
+== Сетевые интерфейсы в режиме USB-устройства
+
+Поддержка виртуальных сетевых интерфейсов обеспечивается шаблонами 1, 8 и 10. Обратите внимание, что ни один из них не работает с Microsoft Windows. Другие операционные системы хоста работают со всеми тремя шаблонами. Необходимо загрузить оба модуля ядра: man:usb_template[4] и man:if_cdce[4].
+
+Убедитесь, что необходимые модули загружены, и правильный шаблон установлен при загрузке, добавив следующие строки в [.filename]#/boot/loader.conf#, создав его, если он ещё не существует:
+
+[.programlisting]
+....
+if_cdce_load="YES"
+hw.usb.template=1
+....
+
+Для загрузки модуля и установки шаблона без перезагрузки используйте:
+
+[source, shell]
+....
+# kldload if_cdce
+# sysctl hw.usb.template=1
+....
+
+[[usb-device-mode-storage]]
+== Виртуальное устройство хранения данных USB
+
+[NOTE]
+====
+Драйвер man:cfumass[4] — это драйвер режима USB-устройства, впервые появившийся в FreeBSD 12.0.
+====
+
+Целевое устройство хранения данных (Mass Storage) предоставляется шаблонами 0 и 10. Необходимо загрузить оба модуля ядра: man:usb_template[4] и man:cfumass[4]. Модуль man:cfumass[4] взаимодействует с подсистемой CTL, той же самой, что используется для целевых устройств iSCSI или Fibre Channel. Со стороны хоста инициаторы USB Mass Storage могут обращаться только к одному LUN — LUN 0.
+
+=== Настройка USB-накопителя с использованием стартового скрипта cfumass
+
+Самый простой способ настроить USB-накопитель только для чтения — использовать скрипт [.filename]#cfumass#. Для этого скопируйте файлы, которые должны быть доступны на USB-хосте, в директорию `/var/cfumass` и добавьте следующую строку в [.filename]#/etc/rc.conf#:
+
+[.programlisting]
+....
+cfumass_enable="YES"
+....
+
+Для настройки цели без перезагрузки выполните следующую команду:
+
+[source, shell]
+....
+# service cfumass start
+....
+
+В отличие от последовательных и сетевых функций, шаблон не следует устанавливать в 0 или 10 в [.filename]#/boot/loader.conf#. Это связано с тем, что LUN должен быть настроен до установки шаблона. Скрипт запуска cfumass автоматически устанавливает правильный номер шаблона при запуске.
+
+=== Настройка USB-накопителей с использованием других методов
+
+Оставшаяся часть этой главы содержит подробное описание настройки цели без использования файла `cfumass rc`. Это необходимо, например, если требуется предоставить доступную для записи LUN.
+
+USB-накопитель не требует работы демона man:ctld[8], хотя его можно использовать при необходимости. Это отличается от iSCSI. Таким образом, есть два способа настройки цели: man:ctladm[8] или man:ctld[8]. Оба способа требуют загрузки модуля ядра [.filename]#cfumass.ko#. Модуль можно загрузить вручную:
+
+[source, shell]
+....
+# kldload cfumass
+....
+
+Если модуль [.filename]#cfumass.ko# не встроен в ядро, можно настроить [.filename]#/boot/loader.conf# для его загрузки при старте системы:
+
+[.programlisting]
+....
+cfumass_load="YES"
+....
+
+LUN может быть создан без использования демона man:ctld[8]:
+
+[source, shell]
+....
+# ctladm create -b block -o file=/data/target0
+....
+
+Это предоставляет содержимое файла образа [.filename]#/data/target0# как LUN для USB-хоста. Файл должен существовать до выполнения команды. Чтобы настроить LUN при загрузке системы, добавьте команду в [.filename]#/etc/rc.local#.
+
+man:ctld[8] также может использоваться для управления LUN. Создайте файл [.filename]#/etc/ctl.conf#, добавьте строку в [.filename]#/etc/rc.conf#, чтобы убедиться, что man:ctld[8] автоматически запускается при загрузке, а затем запустите демон.
+
+Вот пример простого файла конфигурации [.filename]#/etc/ctl.conf#. Полное описание параметров можно найти в man:ctl.conf[5].
+
+[.programlisting]
+....
+target naa.50015178f369f092 {
+ lun 0 {
+ path /data/target0
+ size 4G
+ }
+}
+....
+
+Пример создает одну цель с одним LUN. `naa.50015178f369f092` — это идентификатор устройства, состоящий из 32 случайных шестнадцатеричных цифр. Строка `path` определяет полный путь к файлу или zvol, который используется для LUN. Этот файл должен существовать до запуска man:ctld[8]. Вторая строка необязательна и указывает размер LUN.
+
+Чтобы убедиться, что демон man:ctld[8] запускается при загрузке, добавьте следующую строку в [.filename]#/etc/rc.conf#:
+
+[.programlisting]
+....
+ctld_enable="YES"
+....
+
+Чтобы запустить man:ctld[8] сейчас, выполните следующую команду:
+
+[source, shell]
+....
+# service ctld start
+....
+
+При запуске демона man:ctld[8] он читает файл [.filename]#/etc/ctl.conf#. Если этот файл отредактирован после запуска демона, перезагрузите изменения, чтобы они вступили в силу немедленно:
+
+[source, shell]
+....
+# service ctld reload
+....