Меню Рубрики

Установка pos терминала на linux

Amin ‘s Blog

Рубрики

Метки

Последние комментарии

alex к записи Вирус CrysisHorseFucker мутиро…
Вирус CrysisHorseFuc… к записи Double Kill 🔫🔫 .
alex к записи кодировки, бÏýãÐð
Amin к записи 🍏 самые гламурные никсы 🍏
Kirill к записи 🍏 самые гламурные никсы 🍏
Amin к записи 📱 Android сдурел слегка, …
Amin к записи Double Kill 🔫🔫 .

Установка Linux на платежный терминал

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

Итак, поступило мне задание — поднять платежный терминал на программном комплексе RedSystem. Это важно, поскольку терминал может работать под управлением специального софта от самых разных производителей, и у каждого производителя — свои тараканы свой подход к архитектуре системы, поддерживаемым платформам и совместимому оборудованию.

Для начала пару слов о том, как устроен такой терминал. Внутри у него — обычный x86-компутер, часто — на каком-либо малопотребляющем процессоре типа Intel Atom, поскольку внутри терминала с охлаждением обычно мягко скажем не очень хорошо. Памяти — минимум (в 2012 году это правда 1 Gb), винт самый мелкий из возможных (160 Gb). А вот периферия — куда интереснее. В качестве устройств ввода — сенсорный экран и баблосос купюроприёмник, а в качестве вывода — ЖК-дисплей и термопринтер для печати чеков. Вот с этой-то периферией самые знатные траблы и обнаружились. Но обо всем по порядку. Работать стоя у сенсорного экрана — очень некомфортно, поэтому я настоятельно рекомендую воткнуть в терминал вместо сенсорной панели провод от KVM-свитча.

Как мы видим на сайте разработчика, на терминал можно поставить либо виндовс, либо линукс. Ну, с виндовс на терминале все очень и очень плохо (а где с ней хорошо-то ?!). Во-первых обычные и привычные версии ставить нельзя вообще — в Сибирь ушатают, на корм тиграм да медведям :D. Embedded версия винды для платежной системы лицензируется по совершенно зверским ценам — 5000 рублей. Каждый месяц, а вовсе не разово, как вы сперва подумали. Так что виндовс идет далеко и нахуй — 60 000 р. каждый год некрофосту только за прием платежей от наших же клиентов — это им точно жирно будет, перебьются. И если аренда специализированного платежного софта — ещё более-менее приемлима, то аренда спец-винды под это — уже мягко скажем не очень.

Что касается линукса, то меня смутило, что они рекомендуют весьма старый дистриб — Ubuntu 10.04 (Lucid Lynx). Смутило меня это совершенно не просто так. Мало того, что на заданной системе оно ни в какую не хотело ставиться по сети (PXE) и с USB-флешки. Поcле того, как установку удалось выполнить с USB-CDROM — система после ребута на второй секунде загрузки озадачила меня ядерной паникой. Было это в шестом часу вечера в пятницу, и потому мой звонок в их поддержку был не особо радостен. Но как выяснилось, на 10.04 они просто тестили софт до этого, а вообще им пригоден любой дистрибутив, где есть X-сервер, браузер и возможность достучаться до периферии. Поскольку периферия там крива как сам пиздецЪ, то я решил поставить Fedora 16 — систему на вполне свежем ядре и бинарных пакетах, поскольку в пятницу вечером красноглазить над тини-коре или спец-сборками совершенно не хотелось.

В отличие от «ч0ткой ебунты рыси», FC16 без проблем поставилась в минимальном варианте с графикой (т.н. Gnome-minimal) через PXE. Хороший совет — сразу снести оттуда тяжелый хлам типа evolution (хз, зачем оно там по-умолчанию), после чего сразу же обновить систему и ребутнуться уже на новом ядре. Дальше я просто по шагам опишу свои действия. Конечно, у разработчиков есть инструкции к системе, но местами они не очень внятно написаны и на мой взгляд требуют доработки.
Cтавим пакеты, которые могут пригодиться при диагностике и поиске проблем:

Проверяем, что увиделся контроллер RS232-портов:

Как и ожидалось, свежие ядра тянут это без проблем. Теперь создаем пользователя terminal и распаковываем клиентскую часть для линукс-терминала в /home/terminal/RedSystem. Пути менять не рекомендуется. То, что архив под убунту — переживать не надо, скрипты там тривиальны и адаптируются под FC16 буквально за час со вдумчивым раскуриванием манов за кружкой чая. Должно получиться примерно следующее:

Проверяем, что у нас в системе есть COM-порты:

Отлично, порты есть. Но!! Мы не будем следовать дурному принципу «запустим наше говнише от рута и ниипет». Мы будем следовать принципу необходимого минимума привилегий, поэтому добавляем пользователя terminal в группу dialout, чтобы он смог общаться по COM-портам. Теперь важный момент. Очень рекомендую снести NetworkManager с его ModemManager, оставив только службу network. Дело в том, что ModemManager очень любит занять ком-порт и проверить, а не поставили ли вы там модем, а поскольку текущая версия утилиты для обнаружения спец-оборудования(redtdetect_sh.sh) не пишет нормальных логов при детекте — можно убить много времени и нервов, прежде чем понять, почему не виделось оборудование. Это халявный нищебродский minicom вам сразу напишет, что порт кем-то занят, а тут труЪ-ЫнтырпрайZzz-соВт, так что прокачивайте телепатию и навык вдумчивого курения логов 😀 😀

Читайте также:  Установка разъединительных пунктов на вл

Ах да, про оборудование, оно заслуживает несколько особо матерных ласковых слов.
Термо-принтер Custom для печати чеков и баблосос CashCode — работают по закрытым проприетарным бинарным протоколам, причем у каждого производителя железа эти протоколы свои. Так что даже если вы minicom-у правильно укажите порт и его параметры, то ни байта внятного вывода вы от них не получите. Это вам не сиски мять и не можжевельник курить. Правда, после того, как я в миникоме отправил принтеру Custom три нажатия [Enter], он мне выдал совершенно изумительный чек:

Так что на привычную диагностику особо не рассчитываем, ком-порты держим свободными.

Распаковываем ключи терминала, выгруженные в .tar.gz-архиве на нашем сервере платежной системы. Важно помнить, что как идентификация каждого конкретного терминала, так и защита данных основаны на SSL-ключах (клиентских сертификатах), а потому а). Ключи не должны быть перепутаны 😀 б). Они должны быть от того сервера 😀 😀 в) сервер надо бэкапить 😀 😀 😀 Должно получиться примерно такое:

Запускаем тулзу redtdetect_sh, она должна нам сгенерить ini-файл примерно такого содержания:

Как видим, обнаружено наличие сети (возможность работы через SSL), принтер для чеков и купюроприёмник. Если у вас в терминале есть считыватель смарт-карт, сканер штрих-кода или монетоприёмник — тут они должны появиться в виде своих групп строчек. Озадачиваться настройкой их поддержки в основной системе — не нужно и даже вредно. Задача ОС — отдать программе доступ к ком-портам, а уж RedSystem сам разберется, кто из них кто и каким бинарным мусором кого кормить.

Дальше настраиваем систему. Нам надо сделать максимально легковесным графическое окружение. А потому можно смело снести gdm и все его зависимости, пульсаудио, и все лишнее. Всё, что нам надо — чтобы запускался X-сервер, а в нем — либо браузер в киоск-режиме, либо xterm, если нам надо что-то отладить.

Сперва согласно инструкции в /etc/inittab делаем по умолчанию 3-й ранлевел:

Теперь надо обеспечить запуск от рута мини-вебсервера RedSystem, который собственно будет рисовать морду на киоске:

Сделано оно так потому, что у RedSystem веб-сервер висит но порту TCP:88, и это жестко прошито в коде текущей версии. Если это исправят — можно будет вообще целиком работать под обычным пользователем. Кроме того, надо отключить гашение экрана — иначе создается впечатление, что терминал не работает. Управляется оно для консоли и для графики отдельно. Я для надежности вырубил и там, и там.

Теперь надо сделать ещё пару подготовительных шагов.
Дело в том, что а). сенсорные экраны требуют калибровки и б). дизайн киоска жестко заточен под разрешение 1024×768, а у нас матрица под сенсорным дисплеем — 1280×1024. Для этого поставим следующие вспомогательные утилиты:

Теперь залогинимся пользователем terminal, и дадим команду startx. Должен будет загрузиться очень сильно кастрированный Gnome. С помощью Alt-F2 или менюшки (по правой кнопке) запустим xterm или gnome-terminal.

Сперва запускаем xrandr, который должен выдать нам список режимов и имя текущего видеовыхода:

Если бы разработчики не делали дизайн жестко под 1024×768 — эта камасутра нам бы не пригодилась. Если этот шаг пропустить — то работать все конечно будет, на экране 1280×1024 останется большая черная область снизу и справа, что не красиво. Нужная нам инфа — что видеовыход у нас называется VGA1, и разрешение 1024×768 дисплеем поддерживается.

Теперь откалибруем тачскрин. Для этого сперва запустим в терминале утилиту xinput, и узнаем, какой у нас тачскрин и какой у него id:

Тачскрин нативно!! поддерживается ядром (виндузятники, убейтесь с горя :D) и его >

и на появившемся тест-экране очень аккуратно и максимально точно (мизинцем :cool:) нажмем в самый центр четырех калибровочных точек. После завершения калибровки программа создаст файл /home/terminal/touch.txt, из которого нам в будущем нужна будет вот эта строчка с параметрами калибровки тачскрина:

Читайте также:  Установка ip камеры optimus

Замечательно, у нас почти всё готово.

Решим вопрос с браузером. Разработчики рекомендуют на линукс-терминалах использовать гугло-хром, однако идущий в комплекте бинарь хрома у меня не запустился — ругнулся на отсутствие какой-то либы. Поскольку у них хром был старый, а ставить либу старой версии мне сильно не хотелось, я просто поставил свежайшую версию хрома. Не исключаю, что Опера или Фуррифокс тоже вполне пригодны для работы в таком режиме, но мне как-то было влом их тестировать.

Теперь самое время раскурить скрипты из RedSystem/misc, понять, что они слишком накручены (зачем сдвигать gdm в сторону, когда можно его просто не ставить ?). На основании полученных знаний прописываем в /home/terminal три следующих файла:

Задача этого скрипта проста — запустить графическую сессию пользователя, а если X-сервер аварийно выпадет (что правда очень маловероятно) — ребутнуть терминал. Вот такое вот у них решение предлагается 🙂

Тут все просто — на платежном терминале нам не нужен ни курсор мыши, ни сетевые фичи X-сервера. А вот дальше самое интересное — скрипт конфигурации иксов при старте:

Скрипт сперва очищает профиль гугло-хрома (видимо, склонен к ожирению), потом переводит экран на VGA1 в 1024х768, применяет ранее вычисленные нами параметры калибровки тачскрина (иначе пользователям будет не попасть в кнопки), отключает гашение экрана и энергосбережение в графике (чтобы клиенты не думали, что терминал не работает) и запускает гугло-хром в киоск-режиме, натравливая его на специализированный локальный веб-сервер RedSystem.

В данной статье я рассмотрел настройку именно платежного терминала. Предполагаю, что серверная часть у вас уже стоит, в ней настроены все параметры, сгенерированы ключи, настроена аутентификация админа и бухгалтера по клиентским SSL-сертификатам (а по другому он и не умеет), добавлен терминал и получатели платежей. Впрочем, настройка серверной части их инструкцией описана более-менее внятно.

Всё, ребутимся, ждем, радуемся жизни. Терминал должен дернуть купюроприемник и нарисовать морду. Берем несколько разных купюр и пробуем сделать два-три тестовых платежа, чтобы убедиться, что всё работает — купюры всех типов принимаются, чеки печатаются, платежи автоматом заносятся в базу данных на сервере.

источник

Работа в терминале Linux для начинающих

Все новички Linux уже, наверное, слышали про терминал, или как его еще называют командную строку. Ведь присутствие и сложность терминала — это один из основных аргументов оппонентов Linux. Возможно, вы уже сталкивались с командной строкой в Windows на практике и уже знаете что это такое.

Действительно, в операционной системе Linux есть терминал, где вы можете выполнять нужные вам команды, чтобы очень эффективно управлять своей системой. Но это вовсе не обязательно, многим вполне достаточно графического интерфейса. Сейчас использование терминала отошло на второй план, но он остается основным средством для доступа к удаленным серверам и инструментом для профессионалов.

Терминал Linux намного интереснее, чем командная строка Windows и в этой статье будет подробно рассмотрена работа в терминале Linux для начинающих, а также что такое терминал Linux и собственно, что он из себя представляет.

Что такое терминал Linux?

Применение терминала началось очень давно. Еще до того как была создана DOS и не существовало никакого графического интерфейса. В далеких восьмидесятых годах операционная система Unix только начинала развиваться. Пользователям нужно каким-то образом взаимодействовать с системой и самый простой способ — это использование команд. Вы вводите команду, система вам возвращает ответ.

С тех пор, такой способ ввода использовался во многих системах, в том числе DOS и OS/2 от Apple, пока не был придуман графический интерфейс. Затем текстовый режим терминала был успешно вытеснен, но его до сих пор продолжают использовать там, где это нужно.

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

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

Консоль — это физическое оборудование для управления сервером. Когда к серверу нет доступа из сети, для управления им можно использовать только консоль.

TTY — это файл устройства, который создается ядром и предоставляет доступ к терминалу для программ. Это могут быть файлы /dev/tty для постоянных текстовых терминалов и /dev/pts/* для эмуляторов терминалов. Вы можете выполнить команду или отправить сообщение просто записав данные в этот файл, и также получить результат, прочитав данные из этого файла.

Читайте также:  Установка птф с ходовыми огнями солярис

Эмулятор терминала — это графическая программа, которая предоставляет вам доступ к tty или pts терминалу. Например, Gnome Terminal, Konsole, Terminix, Xterm и многие другие.

Командная оболочка — устройство tty занимается только передачей и приемом данных, но все эти данные должен еще кто-то обрабатывать, выполнять команды, интерпретировать их синтаксис. Командных оболочек достаточно много, это bash, sh, zsh, ksh и другие, но чаще всего применяется Bash.

Ну и командная строка — это то место куда вы будете вводить свои команды, приглашение терминала для ввода.

Теперь, когда мы разобрались что такое терминал Linux и знаем все основные принципы, перейдем к практике работы с ним.

Как открыть терминал Linux?

Есть несколько способов получить доступ к терминалу. Ваша система инициализации по умолчанию создает 12 виртуальных терминалов. В одном из них — обычно седьмом, запущена ваша графическая оболочка, но все другие могут быть свободно использованы. Для переключения между терминалами можно использовать сочетания Ctrl+Alt+F1-F12. Для авторизации нужно будет ввести логин и пароль.

Это текстовые терминалы без графического интерфейса, в них может быть не совсем удобно работать, но, зато такие терминалы будут полезны, если графический интерфейс не работает.

Второй способ позволяет открыть виртуальный терминал прямо в графическом интерфейсе с помощью эмулятора терминала. Эмулятор терминала linux работает с файлами в каталоге /dev/pts/* и еще называется псевдотерминалом, потому что не использует tty.

В Ubuntu вы можете запустить терминал linux нажав сочетание клавиш Ctrl+Alt+T:

Также его можно найти в меню приложений Dash:

Как видите, открыть командную строку в linux очень просто.

Выполнение команд в терминале

Рассмотрим более подробно терминал Linux для начинающих. Как я уже говорил, терминал и файлы устройств tty отвечают только за передачу данных. За обработку команд отвечает командная оболочка, которой и передаются полученные от пользователя данные.

Вы можете набрать что-либо и убедиться, что это работает:

Чтобы выполнить команду достаточно написать ее и нажать Enter.

Более того, командная оболочка Bash поддерживает автодополнение, поэтому вы можете написать половину команды, нажать TAB и если на такие символы начинается только одна команда, то она будет автоматически дополнена, если же нет, то вы можете нажать два раза TAB, чтобы посмотреть возможные варианты.

Точно такая же схема работает для путей к файлам и параметров команд:

В Windows вы о таком и мечтать не могли. Чтобы выполнить команду можно указать имя ее исполняемого файла или полный путь к нему, относительно корневой или любой другой папки. Важно заметить, что командная оболочка Linux, в отличие от Windows, чувствительна к регистру, а поэтому будьте внимательны при вводе команд и их параметров.

По умолчанию работа в командной строке linux может выполняться с помощью большого количества команд, многие из них, например, для перемещения по каталогам, просмотра содержимого, установки ПО поставляются вместе с системой.

Экземпляр запущенной команды называется процесс. Когда в терминале Linux выполняется одна команда нам нужно подождать ее завершения, чтобы выполнить следующую.

Команды могут выполняться без параметров, что мы видели выше, или же с параметрами, которые позволяют указать данные, с которыми будет работать программа, также есть опции, с помощью которых можно настроить поведение. Большинство стандартных утилит придерживаются такого синтаксиса:

$ команда опции параметр1 параметр2.

Опции часто необязательны и уточняют тот или иной аспект работы программы. Они записываются в форме черточка и символ или двойная черточка и слово. Например -o или —output. Приведем пример для команды ls. Без опций и параметров:

С параметром, указывающим какую папку посмотреть:

С опцией -l, вывести в виде списка:

Можно комбинировать две опции:

В основном, это все, что нужно знать про команды, чтобы продуктивно их использовать. Еще можно было бы рассказать про объединение команд и перенаправление вывода одной команды в другую, но это уже отдельная тема.

Выводы

В этой статье была рассмотрена работа в терминале linux для начинающих. Командная строка Linux может показаться сначала очень сложной, но это совсем не так, она намного проще в использовании чем в Windows и позволяет управлять системой более эффективно. Надеюсь, эта статья пролила немного света на эту очень большую тему.

источник

Добавить комментарий

Adblock
detector