Продукты

Все продукты

				20.06.2013
				

Методы взаимодействия с целевой системой QNX4 по сети

О. Большаков 

В статье будут рассмотрены распространённые методы сетевого взаимодействия инструментальной и целевой систем, приведены сетевые протоколы и примеры использования программ.


В статье говорится о целевой системе ОСРВ QNX4, но точно также можно рассматривать целевую систему на базе ЗОСРВ КПДА.00002-01. Везде, где говорится о целевой системе, под таковой можно понимать как QNX4, так и КПДА.00002-01.

Типы инструментальных систем

ОСРВ QNX4 является self-hosted системой, т.е. предполагается, что разработка ПО и подготовка целевых систем должна вестись также в QNX4. И это действительно так, поскольку средства разработки такие как Watcom C/C++ и Photon Application Builder работают в QNX4. Так что инструментальная система на базе QNX4 является самой популярной и долгое время была самой удобной.


В последнее время к инструментальной системе предъявляются дополнительные требования, которые не могут быть выполнены в QNX4. Например, чтение документации в формате PDF, работа с офисными приложениями, электронной почтой и интернет. Всё это может быть затруднительно в QNX4.


Одним из вариантов решения вышеописанных трудностей является использование в качестве инструментальной системы MicroSoft Windows или GNU/Linux. Такое решение стало возможным благодаря тому, что компилятор OpenWatcom поддерживает кросс-компиляцию для QNX4. Настройка и работа OpenWatcom в Windows и Linux для QNX4 описана на форуме «СВД Встраиваемые Системы»:

Таким образом, можно считать, что системы общего назначения Windows и Linux могут выступать в качестве инструментальных систем. Однако, следует помнить, что есть ряд особенностей в работе с такими системами. Например, компилятор OpenWatcom некорректно работает с разделяемыми библиотеками QNX4, что сказывается при разработке программ для Photon. Да и сама разработка для графической среды Photon в Photon Application Builderневозможна. Также нет возможности готовить загрузочные образы.


Отдельно хотелось бы отметить использование в качестве инструментальной системы ОСРВ QNX4, установленную в виртуальную машину под Windows или Linux. При этом в качестве инструментальной системы рассматривается комплекс из «реальной» ОС Windows или Linux и «виртуальной» ОСРВ QNX4. В качестве виртуальной машины могут выступать, например,VmWare, Virtual PC, VirtualBox, Qemu и другие. По моему мнению, продукты VmWare Workstationи WmWare Player самые удобные для работы, а в QNX4 присутствуют все необходимые для них драйверы. В некоторых случаях использование Qemu может иметь свои преимущества. На форуме «СДВ Встраиваемые Системы» есть темы с обсуждением работы QNX в виртуальных машинах:

Имея опыт работы с QNX и опыт разработки для QNX, считаю что использование виртуальной машины с QNX4 в среде Windows или Linux позволяет избежать перечисленных выше недостатков работы в инструментальной системе основанной на «реальной» системе QNX4.

Виды сетевого взаимодействия инструментальной и целевой систем

В зависимости от класса решаемых задач могут применяться различные виды взаимодействия инструментальной системы с целевой. Наиболее очевидные классы задач это – удалённая сборка и отладка приложений, настройка и сопровождение целевой системы, обмен файлами. Перечисленный ряд задач может быть решён при применении следующих видов сетевого взаимодействия:

  • обмен файлами (FTP, SCP/SFTP)
  • доступ к удалённой файловой системе (NFS, SMB)
  • удалённый доступ к системе (Telnet, SSH, ditto)
  • удалённый доступ к рабочему столу (Phindows, PhinX, phditto)
  • удалённая отладка (Watcom Debugger)

С другой стороны, в зависимости от типа инструментальной системы могут быть использованы различные сетевые протоколы. QNX4 поддерживает TCP/IP и FLEET, в то время как Windows иLinux не умеют работать с FLEET. Хотелось бы отдельно отметить этот протокол, который обеспечивает сетевую прозрачность в среде QNX4, позволяет программам работать с ресурсами на удалённом узле точно также, как с локальными. Такая уникальная особенность позволяет решить широкий ряд задач. Передача файлов, доступ к удалённой файловой системе и удалённая отладка приложений становятся такими же простыми, как и аналогичные локальные действия. Благодаря чему, инструментальные системы построенные на QNX4 (в том числе и на QNX4 в виртуальной машине) обладают преимуществами перед Windows и Linux.

Обмен файлами между целевой и инструментальной системами

Одна из типичных ситуаций взаимодействия инструментальной и целевой систем это обмен файлами. Обмен файлами может понадобится в различных ситуациях, например, при обновлении ПО или конфигурационных файлов целевой системы или получении файлов с отчётами.


Не будет рассматриваться утилита rcp, т.к. семейство утилит rlogin/rsh/rcp не пользуется большой популярностью в наше время и практически вытеснены набором защищённых утилитssh/scp.


Забегая вперёд, хочу отметить, что обмениваться файлами можно при помощи сетевых файловых систем, таких как SMB и NFS. Однако, такой вид взаимодействия выделен в отдельную группу поскольку предоставляет более богатые возможности.


Обмен файлами по протоколу FTP самый распространённый способ передачи файлов. И это неудивительно, т.к. протокол FTP один из старейших прикладных протоколов и появился в далёком 1971 году. С тех пор выпускались RFC с обновлениями и уточнениями протокола, но факт остаётся фактом – прошло уже четыре десятка лет, а протокол FTP всё также популярен как в сети Intenet, так и в локальной сети. Практически все современные браузеры поддерживают протокол FTP, программа-клиент ftp присутствует как в Windows, так и в Linux.


Целевая система QNX4 имеет всё необходимое для организации работы по протоколу FTP. Функции сервера выполняет программа ftpd, а клиентом выступает – ftp. Рекомендуется ознакомиться с порядком запуска и работы программ ftpd и ftp во встроенной справочной системе QNX4. В ближайшее время планируется подготовить руководство, по настройке и использованию FTP сервера и клиента.


Обмен файлами по протоколу SSH предоставляет возможность шифровать передаваемые данные. Существует два способа передачи файлов – по протоколам SFTP и SCP. Для операционной системы Windows удобнее всего использовать программу PuTTY, а для Linux –OpenSSH. Стоит отметить, что PuTTY это клиентское ПО, которое поддерживает несколько протоколов помимо SSH. В тоже время OpenSSH содержит как клиентские приложения (ssh, scp,sftp) так и серверную часть (sshd). Протокол SFTP можно представить как защищённый вариант протокола FTP, в то время как SCP (утилита scp) является как бы защищённым вариантом утилиты rcp.


В стандартную поставку QNX4 не входят средства поддержки SSH. Однако, пакет программOpenSSH был собран для QNX4 энтузиастами и доступен на форуме «СВД Встраиваемые Системы» в теме OpenSSH для QNX4. Помимо этого, на форуме в теме FAQ по QNX есть два вопроса по SSH:

Обмен файлами по протоколу FLEET выполняется проще, чем по протоколам FTP и SSH. Поскольку FLEET предоставляет сетевую прозрачность, то все программы работают с удалёнными файлами также, как с локальными. Например, чтобы скопировать файл с инструментальной системы на целевую (узел 1) достаточно выполнить следующую команду:

 # cp /bin/ls //1/bin/ 


Аналогичным образом работают и другие программы, достаточно только подставить префикс//<номер_узла> перед полным именем и файл будет доступен по сети. При этом никаких модификаций в коде программы делать не нужно, т.к. сетевая подсистема QNX4 всё сделает сама.


Пожалуй, работа по FLEET самый удобный способ взаимодействия с целевой системой, но, к сожалению, не всегда возможный, поскольку FLEET поддерживается только в QNX4 и работает на сетевом уровне модели OSI, т.е. взаимодействующие системы должны находиться в одной сети. К сожалению, из-за этих причин иногда приходится полностью отказываться от применения FLEET.

Доступ к удалённой файловой системе

Доступ к удалённой файловой системе целевой системы был вынесен в отдельный вид взаимодействия, т.к. предоставляет больше возможностей по работе с файлами. Например, можно редактировать текстовый файл (с настройками приложения) без предварительного копирования на инструментальную машину. Также можно устанавливать атрибуты доступа к файлу.


Существует несколько различных файловых систем, но наибольший интерес для нас будут представлять две из них: SMB – сетевая файловая система Windows и NFS – сетевая файловая система Linux (и многих UNIX-подобных операционных систем).


Следует отметить, что существуют решения позволяющие представлять FTP как файловую систему. Стоит обратить внимание на программы WebDrive и FTPDrive для Windows и CurlFtpFSдля работы через FUSE в Linux.


Протокол SMB (Server Message Block) изначально был разработан компаниями IBM, Microsoft,Intel и 3COM. Этот протокол используется в Windows для организации «Сети Microsoft Windows» и «Совместного использования файлов и принтеров». Позже протокол многократно дорабатывался Microsoft, в Windos NT 4.0 протокол стал называться CIFS (Common Internet File System), а для Windows Vista был выпущен SMB 2.0. Также существует реализация протокола SMB для Linux – SAMBA, изначально разрабатывавшийся для SunOS.


В стандартную поставку QNX4 входят программные компоненты для реализации функций клиента SMB – это SMBfsys, mount_smb и user_smb. С помощью этих программ можно подмонтировать папку Windows или Linux (через SAMBA). Рекомендуется ознакомиться с порядком запуска и работы этих программ во встроенной справке QNX4. В ближайшее время будет подготовлено руководство, по настройке и использованию SMB клиента.


Сервер SMB не входит в стандартную поставку QNX4, но можно скачать портированный сервер SAMBA с FTP-сервера QSS:

Помимо этого, на форуме «СВД Встраиваемые Системы» подготовлена более новая версия SAMBA 2.2.12:

Протокол NFS (Network File System) разрабатывался Sun Microsystems, было выпущено четыре версии протокола NFS. NFSv1 не был опубликован и работа над ним привела к созданию NFSv2, который использовался уже не только в Sun Microsystems. Протокол NFSv3 является доработанным и улучшенным вариантом NFSv2 и также используется в различных ОС. В свою очередь, в протоколе NFSv4 была улучшена производительность и улучшена безопасность, также появилась спецификация pNFS (Parallel NFS) – механизм параллельного доступа к распределённым NFS-серверам. Протокол NFS изначально разрабатывался как протокол независящий от типа операционной системы на клиентской и серверной сторонах и типа файловой системы, поэтому реализации NFS существуют не только для UNIX-подобных систем, таких как Linux, FreeBSD, Solaris и т.д., но и для Windows и Mac OS. Однако, наибольшую популярность NFS имеет именно в UNIX-подобных системах. В то время как в Windows чаще используется SMB.


В QNX4 есть поддержка как клиентской, так и серверной части протокола NFS. Программа Nfsdявляется сервером NFSv2 и NFSv3, а программа NFSfsys – клиентом NFSv2. Рекомендуется ознакомиться с описанием этих программ во встроенной справке QNX4. В ближайшее время планируется публикация руководства по настройке клиента и сервера NFS в QNX4.


Доступ к удалённой файловой системе по протоколу FLEET осуществляется гораздо проще, чем по протоколам SMB и NFS, т.к. не требует дополнительных настроек или запуска специального ПО. Достаточно того, чтобы компьютеры с QNX4 находились в одной сети. Для доступа к любому файлу или каталогу на удалённой файловой системе надо указать префикс//<номер_узла> перед именем файла или каталога. Программы из стандартной поставки или разработанное ПО не требует модификации или дополнительных опций при запуске. Например, чтобы посмотреть файл инициализации целевой системы (на узле 1), достаточно выполнить команду:


 # less //1/etc/config/sysinit.1 


Единственным недостатком протокола FLEET можно считать то, что он поддерживается только в ОСРВ QNX4 и не может маршрутизироваться или туннелироваться по TCP/IP. Т.о. при взаимодействии целевой системы с системами на базе Windows или Linux следует выбирать протокол SMB или NFS соответственно. В тех случаях, если не требуется доступ к файловой системе, то можно построить взаимодействие на основе протоколов FTP или SSH.

Удалённый доступ к операционной системе

Зачастую для настройки или диагностики целевой системы требуется доступ к её консоли. Но что делать если такой доступ в силу ряда причин невозможен? В таких случаях можно воспользоваться удалённым доступом к системе. На этапе разработки или настройки целевой системы удалённый доступ может быть удобнее даже в том случае, если целевая система расположена на том же рабочем месте, что и инструментальная.


Наиболее распространённые способы доступа к удалённой системе это Telnet и SSH. Существуют также утилиты rlogin и rsh, но они не обладают преимуществами перед Telnet и имеют малую популярность. В свою очередь, протокол SSH защищает соединение, что в некоторых случаях может быть важно.


Программа ditto наиболее удобна, если инструментальная система взаимодействует с целевой по протоколу FLEET. Для доступа к целевой системе (на узле 1) достаточно выполнить команду:


 # ditto -kn 1 


В этом случае будет предоставлен полный удалённый доступ к первой консоли узла 1.


Программа telnet входит в поставку QNX4 и позволяет получить доступ к удалённой системе по протоколу TCP/IP. На удалённой системе должен быть разрешён и настроен доступ по протоколу Telnet. Такой способ доступа к удалённой системе является одним из самых популярных и поддерживается всеми UNIX-подобными системами. Основным недостатком является то, что передаваемая информация никак не шифруется и может быть перехвачена в сети. Поэтому при доступе к целевой системе через глобальную сеть Internet следует выбирать другой протокол, например SSH.


Программа ssh входит в пакет OpenSSH и предоставляет доступ к удалённой системе как иtelnet. Требования к протоколу те же, что и для Telnet, но, в свою очередь, SSH поддерживает шифрование трафика. В стандартную поставку QNX4 не входят средства поддержки SSH. Однако, пакет программ OpenSSH был собран для QNX4 энтузиастами и доступен на форуме «СВД Встраиваемые Системы» в теме OpenSSH для QNX4. Помимо этого, на форуме в темеFAQ по QNX есть два вопроса по SSH:

Существует возможность запуска программ на удалённой системе без доступа к удалённой консоли. При работе в сети FLEET такую возможность предоставляет утилита on. Программа onпозволяет запускать программу на другом узле и устанавливать такие параметры как корневую файловую систему, уровень приоритета и т.д. При работе в сети TCP/IP запустить процесс на удалённом хосте можно при помощи программы ssh.


Рекомендуется ознакомится с описанием программ ditto, telnet и on во встроенной справке QNX4.


При использовании Windows в качестве инструментальной машины может быть удобно использование программы PuTTY как клиента Telnet и SSH.

Удалённый доступ к рабочему столу

Одним из видов доступа к удалённой системе QNX4 является доступ к рабочему столу Photon. В QNX4 могут использоваться различные графические среды – Photon μGUI, QNX Windows, X Window. Однако, наибольшее распространение получила среда Photon.


Программа phditto используется для доступа к Photon целевой системы из графической средыPhoton инструментальной системы. Для работы phditto требуется запуск сервера phrelay. Взаимодействие может осуществляться как по стандартному для QNX4 протоколу FLEET, так и по наиболее популярному TCP/IP. Порядок запуска программ описан во встроенной справочной системе.


Программа phindows позволяет получить доступ к среде Photon из инструментальной машиныWindows. Программа phindows доступна в виде отдельного модуля для Windows и требует для свой работы лицензионный ключ.


Утилита phinx позволяет отобразить графическую среду Photon в окне X Window. В свою очередь, графическая система X Window может быть запущена как в Linux, FreeBSD и т.д., так и в QNX. Компания «СВД Встраиваемые Системы» произвела доработку программы PhinX для корректной работы с русскими символами, подробнее об этом можно почитать на форуме «СВД Встраиваемые Системы» в теме phinx-1.14 cyrfix. Программа PhinX поставляется в виде отдельного модуля для QNX4.

Удалённая отладка

При разработке ПО рано или поздно встаёт вопрос удалённой отладки. Наиболее типичный случай это разработка системного ПО, например драйверов. При правильно организованном процессе разработки, сама разработка ведётся на инструментальной системе, в то время как запуск и отладка разрабатываемого ПО осуществляется на целевой системе.


Разработка ПО для QNX4 осуществляется при помощи Watcom C/C++. В этот пакет программ помимо компилятора, линковщика, библиотекаря, дизассемблера и т.п. программ входит отладчик Watcom Debugger. Программа wd предоставляет богатые возможности по отладке ПО. При взаимодействии инструментальной и целевой систем по протоколу FLEET все эти возможности можно использовать при удалённой отладке приложений.


Варианты запуска отладчика wd на удалённой системе (узел 1) в сети FLEET могут быть следующие:


 # on -n1 wd ./my_driver

 

или


 # wd //1 ./my_driver 


Разница между этими вариантами в том, что в первом случае и отладчик wd, и программаmy_driver будут запущены на узле 1, а вывод будет осуществляться на консоль текущего узла. Во втором варианте, Watcom Debugger запускается на текущем узле, а отлаживаемая программа на узле 1.


Помимо удалённой отладки по сети FLEET отладчик wd позволяет организовать удалённую отладку по сети TCP/IP, а также через последовательный или параллельный порты. Эта возможность может быть полезна при кросс-платформенной разработке (если инструментальная система построена на базе Windows или Linux) или в том случае, если на целевой системе отсутствует сетевой адаптер.


Для организации процесса сетевой отладки по протоколу TCP/IP на целевой системе надо выполнить следующую команду:


 # tcpserv -tr=std 


На инструментальной надо запустить:


 # wd -tr=tcp\;172.16.22.121 my_driver 


Здесь 172.16.22.121 это IP-адрес целевой системы, а my_driver – отлаживаемая программа.

Выводы

В статье были рассмотрены основные виды взаимодействия инструментальной и целевой систем, с использование различных протоколов на основе FLEET и TCP/IP. Было показано, что для решения поставленных задач по обслуживанию целевой системы в качестве инструментальной системы может использоваться как QNX4, так и Windows или Linux.



				

Возврат к списку