Показано с 1 по 10 из 67

Тема: CoDeSys + Linux

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    При связи по TCP/IP из под wine проблема в том, что CODESYS пытается перед подключением пинговать ПЛК. Для выполнения этой операции (посылка ICMP-пакета) программа должна быть запущена с повышенными привелегиями. Чтобы не наделять ее полными привелегиями рута, можно ей явно разрешить raw доступ к сети. Это делается с помощью механизма capabilities, а именно нужна cap_net_raw.

    Для себя я написал небольшую программку для запуска CODESYS c cap_net_raw, а утилитам wine & wine-preloader разрешил наследовать cap_net_raw от родительского процесса и передавать ее дочернему процессу.
    В Debian Jessie делается это следующими командами:

    sudo setcap cap_net_raw+eip ./run_codesys
    sudo setcap cap_net_raw+ei /usr/lib/i386-linux-gnu/wine/bin/wine
    sudo setcap cap_net_raw+ei /usr/lib/i386-linux-gnu/wine/bin/wine-preloader

    Исходник программки прилагаю. Вдруг кому-нибудь будет полезно.
    Вложения Вложения

  2. #2
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от AndreyS Посмотреть сообщение
    В Debian Jessie делается это следующими командами:

    sudo setcap cap_net_raw+eip ...
    ...
    Не знаю, что за фигня. Делал и так, делал и сразу на вайн:
    Код:
    sudo setcap cap_net_raw+eip /usr/bin/wine
    sudo setcap cap_net_raw+eip /usr/bin/wine-preloader
    а не работает.

    Всего-то ничего нужно, дать команду
    Код:
    plc_io /TCP192.168.0.199 /get file.bin
    Из виртуальной хрюши запускается, из линукс-минт под вайном - не хочет ни в какую.
    Самое обидное - когда-то вроде пошло, я решил, что дело в шляпке, написал скриптик на пайтоне, куда включил (через модуль subprocess32) запуск wine с указанной строкой аргументов. Вдруг не стало работать. Разбирался с subprocess32, терял время зря, потом вернулся к терминалу, смотрю - агашеньки, а просто команда
    Код:
    wine plc_io /TCP192.168.0.199 /get file.bin
    уже и не работает.
    Стал все эти танцы с capabilities выплясывать - не помогает.
    Выпрашивать у коллеги Yegor-а, чтобы он добил свой кряк кодесисного протокола до читалки файлов? Насиловать вайн суперюзером? Напиться и забить? О, это идея...

  3. #3

    По умолчанию

    На slackware (porteus) не работали команды:
    sudo setcap cap_net_raw+eip /usr/bin/wine
    sudo setcap cap_net_raw+eip /usr/bin/wine-preloader.
    Пришлось включить опцию ядра
    CONFIG_AUFS_XATTR=y
    После сборки ядра, все ок. Codesys нормально заливает в контроллер через эзернет под обычным пользователем.

  4. #4
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Спасибо за інфу!

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •