Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    RTL_433 в не привелигерованном LXC контейнере, с автоматическим изменением пути к устройству.

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    RTL_433 в не привелигерованном LXC контейнере, с автоматическим изменением пути к устройству., Proxmox Виртуальная Среда
     
    spiralsugarcane
    Guest
    #1
    0
    10.11.2024 00:51:00
    Моё решение для автоматического обновления пути к устройству проброшенного RTL SDR USB. Приложение, работающее в контейнере, в моём случае rtl_433, не может читать символическую ссылку на USB-устройство. Ему нужно, чтобы его распознавал libusb, и я не смог добиться этого никаким другим способом, кроме как передавать полный путь к устройству, например: Код: /dev/bus/usb/001/001. Добавьте устройство в графический интерфейс Proxmox, указав полный путь к нему. (Возможно, это не нужно?) #Создайте правило UDEV по адресу: Код: /etc/udev/rules.d/20.rtlsdr.rules Код: SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE="0666", SYMLINK+="rtl_sdr", RUN="/usr/share/lxc/lxc-<CT_ID>-read-link.sh" #Создайте bash-скрипт по адресу: Код: /usr/share/lxc/lxc-<CT_ID>-read-link.sh Код: #!/bin/bash
    pct set <CT_ID> --dev0 path=$(readlink -f /dev/rtl_sdr)
    exit 0 #Сделайте скрипт исполняемым: Код: chmod +x /usr/share/lxc/lxc-<CT_ID>-read-link.sh #Добавьте строку в /etc/pve/lxc/<CT_ID>.conf Код: lxc.hook.pre-start: "udevadm control --reload-rules && udevadm trigger" Эта строка обновляет правила udev перед запуском контейнера. Я не смог заставить это работать, просто вставив Код: "bash -c "pct set 503 --dev0 path=$(readlink -f /dev/rtl_sdr)"" или даже команду pct в bash-скрипт. Только метод, при котором правило udev запускает скрипт, обновляющий путь к устройству для контейнера, сработал. Чтобы контейнер распознавал устройство при загрузке хоста, мне пришлось установить строку, обновляющую правила udev, в файле конфигурации lxc. Есть какие-нибудь комментарии или улучшения? Я могу отсоединить и снова подключить устройство, даже позволить его вставлять при загрузке хоста, и контейнер запускается нормально. Но если я удаляю и снова вставляю устройство, контейнер должен быть перезапущен.
     
     
     
    albertososa
    Guest
    #2
    0
    14.12.2024 15:00:00
    Привет! На мой взгляд, это самое лучшее решение. Простое, функциональное и элегантное. Но, я следую этим шагам, а скрипт не запускается при старте CT. Если я запускаю команду `udevadm control --reload-rules && udevadm trigger` на хосте PVE, то скрипт выполняется без проблем.
     
     
     
    spiralsugarcane
    Guest
    #3
    0
    14.12.2024 22:05:00
    Привет! Можешь попробовать написать bash-скрипт где-то в /usr/share/lxc/lxc-<CT_ID>-udev.sh?

    Код:
    #!/bin/bash
    udevadm control --reload-rules && udevadm trigger

    Сделай его исполняемым:
    chmod +x /usr/share/lxc/lxc-<CT_ID>-udev.sh

    А потом обратись к скрипту в хуке lxc как-то так:
    lxc.hook.pre-start: "chmod +x /usr/share/lxc/lxc-<CT_ID>-udev.sh"
     
     
     
    albertososa
    Guest
    #4
    0
    15.12.2024 00:52:00
    Основная проблема в том, что перед началом CT не вызывается ни один скрипт. Без разницы, какой именно скрипт. Ну, конечно, он рабочий.
     
     
     
    spiralsugarcane
    Guest
    #5
    0
    24.12.2024 22:01:00
    Возможно, стоит использовать команду `pct create` вместо создания контейнера через графический интерфейс. Тогда можно указать флаг `--hookscript` согласно документации к команде `pct`:
     
     
     
    mmx4realz
    Guest
    #6
    0
    03.04.2025 00:24:00
    Спасибо за это! Это именно то, что я искал. Я использовал эту технику, чтобы настроить пути USB для двух устройств, которые передаются в контейнер после перезагрузки хоста. Не могу понять, почему не работает pre-start hook в моей настройке. Не знаю, может быть, из-за того, что мой контейнер не имеет прав. В итоге я просто добавил команды udevadm reload/trigger в скрипт перезагрузки хоста, который создал в cron job. Сделал так и поставил небольшую паузу перед запуском контейнера. Работает идеально! Еще раз спасибо.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры