14 сентября 2009

Ubuntu 9.04 vs. фискальный регистратор (кассовый аппарат)

Настройка Linux
Доброго времени суток всему хабрасообществу.

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

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

Посему именно мне было поручено избавиться, наконец, от не совсем легальных копий Windows и поставить на рабочие машины Ubuntu 9.04.

Проблем особых не предвещалось — 1С давным-давно перенесена на терминальный доступ на далеком-далеком сервере с win 2k3 на борту, так что… установка, проверка работоспособности, «обработка напильником» — проприетарные драйвера и плагины, дополнительные драйвера на видео и аудио, сетевые принтеры, серверная smb-шара, терминал. Набор стандартный и отнюдь не пугающий.

А потом я вспомнил про приблизившийся ко мне с тылу геморрой в виде конторского фискального регистратора ПРИМ-07К, работавшего по ком-порту с древней-предревней DOS 'овской оболочкой.

Пришел час Ч, жесткие диски были цинично отформатированы, весело подмигивали лампочками cd-rom'ы, на машины шустро и бесконфликтно устанавливалось свободное ПО, а я сидел и думал…

  • Первая и очевидная мысль — WINE – повлекла за собой провал. WINE напрочь отказался загружать чертову программку. Я, конечно, догадывался, что MS-DOS мало имеет отношения к WinApi и DirectX, но надежда была… (напоминаю, что я чайник).
  • Следующей идеей и шагом был старый добрый DOSbox. Он все замечательно запускал и показывал, однако… функций связи с COM-портом я в нем не обнаружил (плохо искал? ), а потому — опять провал.
  • Третьей по счету, но, по идее, той, что должна была стать самой первой мыслью в голову закралось воспоминание о DOSEMU. Достал, установил, настроил как-никак (с мышкой и портами), но… запущенная в нем программа управления фискальным регистратором намертво висла после нажатия. Что бы я не пытался сделать. Провал. Расстроился. Приуныл.

Тут в голову, наряду с «а пошло оно все», заглянула еще одна идея, чем-то сродни охоте на тушканчиков при помощи ядерного оружия. И она, что характерно, сработала. Пните меня и скажите мне, что это не Ubuntu-Way, но… очень уж домой хотелось.

Итак. С официальных репозиториев был скачан и установлен пакет virtualbox-ose. На просторах дикого интернета найдена загрузоччная дискета ms-dos (с системными файлами от win98, Забрать здесь), с файловым менеджером, поддержкой мыши и русской консолью, а также установочные дискеты MSDOS 6.22 (Забрать здесь), предварительно, при помощи стандартного гномовского CD\DVD-burner'а в .iso записана программа управления фискальным регистратором.

Итак:
Let the lust begin!

$ virtualbox

Откроется, собственно, виртуализатор. В нем создаем новую машину, ставим ей тип Dos, 32mb оперативной памяти, создаем жесткий диск мегабайт на 50.
  • Подключаем флоппи-диском образ скачанной загрузочной дискеты и cd-rom'ом созданный образ .iso,
    Не забываем про подключение нужных портов. У меня это был первый и единственный COM, так что в портах virtualbox'a мне пришлось включить только com1, проассоциировать его с /dev/ttyS0 и не забыть проверить, что режим работы выбран в хост-устройство (это значит, что устройство само по мере надобности будет управлять портом).
  • Включам виртуальную машину, грузимся с дискеты, видим забытое, но до сих пор родное «starting ms-dos», на вопросы диспетчера отвчаем однозначно — ESC.
  • Запускаем fdisk, размечаем наш маленький виртуальный жесткий диск, возвращаемся к консоли.
  • Запускаем файловый менеджер (на этой дискете он в «BLOCK\hc.exe») и копируем нашу программу с подключенного образа в корень диска C: виртуальной машины.
  • Выключаем машину.
  • Монтируем флоппи диском первую дискету MS-DOS, включаем машину, ставим, следуя указаниям, дос, снова выключаем машину.
  • Снова монтируем скачанную загрузочную дискету, загружаемся с нее, запускаем файловый менеджер и при помощи него копируем в C:\ файлы keyrus.com и mouse.com (русификация консоли и драйвер мышки) с дискеты.
  • Делаем A:\SYS C: (копирование обновленных системных файлов с диска A: на C:. Без этого программа периодически уходила в глубокую депрессию и окончательно переставала со мной общаться).
  • Открываем для редактирования C:\autoexec.bat, (в файловом менеджере на F4), дописываем в конец этого файла:

    keyrus.com
    mouse.com
    исполняемый_файл_программы.exe (у меня это был frs.exe)


  • Сохраняем.
В принципе — все. Выключаем, в очередной раз, виртуальную машину, проходимся по опциям, убирая всякую ненужную мишуру, вроде сетевых интерфейсов, ненужных портов, смонтированных в эту гостевую систему устройств и прочая. Включаемся, смотрим на ВНЕЗАПНО промелькнувший бутскрин от windows 98, пускаем скупую слезу, с удовлетворением наблюдаем на загружающуюся консоль, которая сразу разворачивает вашу программу.

Испытываем программу, слышим такой желанный звук открывающего сеанс фискального регистратора… радуемся.

Ну и последний мелкий штришок — совсем уже глупый — создаем на рабочем столе кнопку запуска приложения, в поле «команда» для нее пишем:

virtualbox -startvm имя_машины

ставим имя «Касса» и… совсем все. Манагер работает с кассой почти точно так же, как работал с ней в Windows XP.

Извиняюсь за отсутствие скриншотов — материала под рукой нет, я дома, а он на работе ).

Как-то сумбурно получилось. И, в основном про DOS, но… надеюсь — кому-нибудь пригодится ). И еще — очень хотелось бы услышать справедливую критику в адрес такого решения, а также другие возможные варианты. Спасибо за внимание.

UPD: Спасибо НЛО за приглашение )
UPD1: Обещанные скриншоты:

Дос:
Дос
Запущенная программа:
Сама программа
О Боже! Что это? (:
)
Настроенная виртуальная машина:
Настроенная виртуальная машина
Кнопка запуска:
Настройки кнопки
Теги:ubuntu 9.04virtualboxvirtualizationdosdosbox
Хабы: Настройка Linux
+64
4,1k 25
Комментарии 39
Лучшие публикации за сутки

Минуточку внимания

Разместить