Вопрос или проблема
Я настраиваю принтер в образе Debian LXC на Proxmox. Я определил принтер в lsusb
:
Шина 001 Устройство 007: ID 04f9:01ea Brother Industries, Ltd DCP-7030
и перенаправил его в Proxmox (устройство /dev/bus/usb/001/007
).
Как только я отключаю принтер и снова подключаю его, он всегда получает новый ID, например:
Шина 001 Устройство 005: ID 04f9:01ea Brother Industries, Ltd DCP-7030
Принтер не отображается в /dev/serial/*
.
Я могу подумать о трех возможных решениях:
- Как-либо зафиксировать ID, чтобы я мог перенаправлять его статически
- Перенаправить все USB-устройства
- Ссылаться на принтер как на символьную ссылку (правило udev
TTRS{idVendor}=="04f9", ATTRS{idProduct}=="01ea", SYMLINK+="brother_printer"
работает, но CUPS/SANE не могут обнаружить его как принтер)
Я не уверен, какой из этих путей является наиболее многообещающим и как с ним продвигаться.
Ответ или решение
Проблема с перенаправлением USB-устройства в LXC-контейнер Proxmox при изменении ID
При работе с USB-принтером в LXC-контейнере Proxmox может возникнуть проблема, связанная с изменением идентификатора устройства (ID) каждый раз, когда принтер отключается и снова подключается. Рассмотрим основные аспекты данной проблемы и возможные решения.
Описание проблемы
При идентификации USB-принтера с помощью команды lsusb
, вы получаете строки, содержащие идентификатор устройства, который меняется при каждом подключении:
Bus 001 Device 007: ID 04f9:01ea Brother Industries, Ltd DCP-7030
После отключения и повторного подключения принтера идентификатор может измениться, как показано ниже:
Bus 001 Device 005: ID 04f9:01ea Brother Industries, Ltd DCP-7030
Это приводит к тому, что статическая привязка устройства, например, через /dev/bus/usb/001/007
, становится неработоспособной. Данная проблема требует пересмотра подхода к настройке устройства в LXC-контейнере.
Возможные решения
-
Фиксация идентификатора устройства:
Статическое перенаправление USB-устройства возможно, если использовать udev для создания символической ссылки на устройство. Вы можете создать правило udev, которое будет сохранять стабильный набор символических ссылок. Пример правила:SUBSYSTEM=="usb", ATTR{idVendor}=="04f9", ATTR{idProduct}=="01ea", SYMLINK+="brother_printer"
После создания правила, устройство будет доступно по символической ссылке
/dev/brother_printer
. Однако, стоит отметить, что CUPS и SANE могут не распознавать устройство по символической ссылке. Для решения этой проблемы можно использовать инструментlpadmin
для указания нужного устройства. -
Перенаправление всех USB-устройств:
Если у вас нет строгих требований к безопасности или операционной принципам, вы можете воспользоваться перенаправлением всех USB-устройств в LXC-контейнер. Это делается путем добавления следующей строки в конфигурацию контейнера (например,/etc/pve/lxc/CTID.conf
):lxc.mount.entry = /dev/bus/usb dev/bus/usb none bind,optional,create=dir
Этот подход удобно использовать, но он может быть не самым безопасным, так как все подключенные USB-устройства будут доступны в контейнере.
-
Использование виртуальных устройств:
В качестве альтернативы рассмотрите возможность создания виртуального USB-устройства с помощью программного обеспечения, такого какusbredir
. Это решение может быть более сложным, но позволит создать стабильное подключение к вашему принтеру без необходимости постоянно перенаправлять USB-устройства.
Заключение
При решении проблемы с перенаправлением USB-устройства в Proxmox LXC, вам следует учитывать баланс между удобством и безопасностью. Наиболее оптимальные пути — использование правил udev для создания символической ссылки или перенаправление всех USB-устройств, если это допустимо в вашем окружении. Убедитесь, что ваш принтер подключен правильно и что у вас установлены все необходимые драйверы в контейнере, чтобы он мог корректно функционировать.
Если у вас остались вопросы или требуется дальнейшая помощь в реализации одного из предложенных решений, не стесняйтесь обращаться за поддержкой.