Поддержка разработки для старых ОС

14

Я поддерживаю большую часть унаследованного кода, написанного на C. Этот код изначально был написан для компиляции с Windows 3 для рабочих групп, а затем была создана версия для NT. Это унаследованное приложение все еще используется сегодня, оно весело работает на рабочих станциях 3.11 и NT начала 90-х годов. Он работает, и он делает то, что должен, и причина, по которой они все еще живут, заключается в том, что драйверы для некоторого пользовательского оборудования, принадлежащего решению, не совместимы с более поздней Windows.

Существует также другое приложение, которое я утверждал, что по тем же причинам работает только на Win2k.

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

Таким образом, мой вопрос, учитывая, что сейчас 2016 год, каковы мои варианты для сохранения этой архаичной среды более стабильным образом? Можете ли вы перенести 3.11 на облачный хостинг?

Я пробовал виртуализацию, но из-за специфики настроек я не мог заставить ее работать с драйверами устройств, поэтому я думаю, что может потребоваться создать полный образ ОС как есть, а затем запустить его в ВМ для разработки программного обеспечения? Возможно ли такое для старых версий гостевых ОС, таких как Win3 и NT?

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

Моя цель - избавиться от старых физических машин и перейти на виртуализацию.

Ричард Тирегрим
источник
Какое программное обеспечение VM вы пробовали? VMware? Если нет, попробуйте, у меня есть по крайней мере один аппарат, для которого у меня есть драйверы, работающие только с этим программным обеспечением, но нет другого программного обеспечения VM.
Док Браун
Более того: какой будет наихудший сценарий, если завтра умирает аппаратное обеспечение, и у вас пока нет альтернативы? Ваша компания обанкротится?
Док Браун
Я пробовал VMware и VirtualBox. Из двух VirtualBox не удалось загрузить Win3, но удалось загрузить NT4, но без CD, изменения разрешения или поддержки мыши. VMWare загрузил Win3, но также не имел драйверов, поэтому экран был испорчен. Сейчас я перебираю эмуляцию, пробую PCem. Это работает лучше, но тогда я не получаю увеличения скорости по сравнению со старым оборудованием, и мне не хватает таких виртуальных
машин,
3
Честно говоря, когда становится трудно получить запасные части, пришло время подумать о замене старых вещей новым решением. В какой-то момент поддерживать эти старые вещи становится менее экономичным, чем создавать по крайней мере некоторые новые детали.
Док Браун
1
Где вы взяли драйверы для нестандартного оборудования?
ДжеффО

Ответы:

4

драйверы для некоторых пользовательских аппаратных средств, принадлежащих к решению, не совместимы с более поздними версиями Windows

Это суть дела. Вы можете перекомпилировать свою унаследованную программу на C с более новой Visual Studio, исправить все предупреждения и ошибки компилятора и, как правило, превратить старую систему в идентичную, которая работает в Windows 7 (или позже, если необходимо), но если драйверы этого не делают. работать, то шансы на его работу, даже виртуализированные, невелики.

Если вы не сможете обновить или заменить драйверы / оборудование, я бы не стал это рассматривать.

gbjbaanb
источник
Спасибо за ответ. Я думал, что может быть доступна виртуальная машина или опция эмуляции, которая будет напоминать фактическое HW, используемое на машинах Win3, так что я могу использовать это для установки пользовательских драйверов устройств в этой среде и подключения устройств, так что все намерения и цели, похоже, он работает на устаревшем оборудовании. Кроме того, при перекомпиляции, как я уже сказал, код использует довольно большое количество низкоуровневых вызовов Win API, а также некоторые неприятные ошибки во внутренних структурах. Так что я думаю, что это сломается в настольной модели Win7, хотя я не пытался портировать ее напрямую.
Ричард Тирегрим
2
Вы должны попробовать быструю попытку порта, просто чтобы увидеть, с чем из этого трудно иметь дело - по моему опыту, древний код имеет тенденцию портировать на новые операционные системы Windows на удивление легко только с несколькими вещами, которые действительно устарели.
gbjbaanb
4

Я думаю, что это скорее проблема получения доступа к последовательному порту хостов для virtualbox или vmware, чем к виртуализации ОС или даже гостевой ОС. Я бы начал с хост-системы, работающей под управлением современной ОС (win 7/8/10 или Linux distro) с адаптером USB-последовательный порт, который основан на реальной реализации RS-232, например, на продуктивном pl2303.

Используйте современную ОС в качестве хоста, установите virtualbox, создайте гостевую виртуальную машину и установите любую совместимую ОС. Ключом является получение порта RS-232 в гостевой ОС, передаваемого гостевой виртуальной машине. Используйте нуль-модем и терминальную программу, чтобы убедиться, что порт RS-232 работает в локальной операционной системе.

Если хостом является Linux, для виртуализации локального оборудования требуются некоторые разрешения, и в большинстве случаев об этом позаботится ваша учетная запись входа в группу vboxusers.

Томас Карлайл
источник
2

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

Самое последнее время, когда вы должны поддерживать машину, это когда вы не можете купить замену на eBay.

gnasher729
источник