Desarrollo de soporte para sistemas operativos más antiguos

14

Mantengo una gran parte del código heredado, escrito en C. Este código se escribió inicialmente para ser comparado con Windows 3 para grupos de trabajo, y luego se creó una versión para NT. Esta aplicación heredada todavía está en uso hoy en día, se ejecuta alegremente en estaciones de trabajo 3.11 y NT desde principios de los 90. Funciona y hace lo que se supone que debe hacer, y la razón por la que todavía viven es que los controladores para algunos de los equipos personalizados que pertenecen a la solución no son compatibles con Windows posterior.

También hay una aplicación diferente que he mantenido que por las mismas razones solo funciona en Win2k.

Sin embargo, a medida que avanzan las cosas, cada vez es más difícil ejecutar estos entornos heredados. En este momento mantengo máquinas físicas con el software de desarrollo instalado, para poder trabajar en hardware nativo. Pero estos pueden morir en cualquier momento (después de todo, tienen 25 años).

Entonces mi pregunta es, ya que es 2016, ¿cuáles son mis opciones para mantener este entorno arcaico de una manera más estable? ¿Se puede mover un 3.11 al alojamiento en la nube?

Intenté la virtualización, pero debido a la naturaleza especializada de las configuraciones, no pude hacer que funcionara con los controladores del dispositivo, por lo que creo que es posible que sea necesario hacer una imagen completa del sistema operativo tal como está y luego ejecutarlo en un VM para desarrollar el software? ¿Es posible tal cosa para versiones de SO huésped tan antiguas como Win3 y NT?

¿Hay alguna experiencia en mantener plataformas antiguas como estas vivas para el desarrollo, pero de una manera más moderna y segura, de las que pueda sacar provecho?

Mi objetivo es deshacerme de las viejas máquinas físicas y pasar a la virtualización.

Richard Tyregrim
fuente
¿Qué software de VM probaste? VMware? Si no es así, pruébalo, tengo al menos una pieza de hardware para la que obtuve los controladores que solo funcionan con ese software, pero no otro software de VM.
Doc Brown
Además: ¿cuál será el peor de los casos si el hardware muere mañana y no tienes alternativa hasta ahora? ¿Su empresa irá a la quiebra?
Doc Brown
Probé VMware y VirtualBox. De los dos, VirtualBox no pudo cargar Win3, pero logró cargar NT4, pero sin CD, cambio de resolución o compatibilidad con mouse. VMWare cargó Win3 pero también carecía de controladores, por lo que la pantalla estaba en mal estado. En este momento estoy jugando con la emulación, probando PCem. Esto funciona mejor, pero luego me sale ningún aumento de velocidad sobre hardware antiguo y me falta VM cosas como intercambio de discos, etc
Richard Tyregrim
3
Honestamente, cuando se hace difícil obtener piezas de repuesto, es hora de pensar en reemplazar las cosas viejas por una solución más nueva. En algún momento, mantener vivas esas cosas viejas se vuelve menos económico que crear al menos algunas partes recientemente.
Doc Brown
1
¿Dónde obtuvo los controladores para el hardware personalizado?
JeffO

Respuestas:

4

Los controladores para algunos de los equipos personalizados que pertenecen a la solución no son compatibles con Windows

Este es el quid de la cuestión. Puede recompilar su programa C heredado con un Visual Studio más nuevo, corregir todas las advertencias y errores del compilador, y generalmente convertir un sistema antiguo en uno idéntico que se ejecute en Windows 7 (o posterior si es necesario), pero si los controladores no funciona, entonces las posibilidades de que funcione incluso virtualizado son escasas.

A menos que pueda actualizar o reemplazar los controladores / hardware, no comenzaría a considerarlo.

gbjbaanb
fuente
Gracias por responder. Estaba pensando que puede haber una VM o una opción de emulación disponible que se asemejaría al HW real utilizado en las máquinas Win3, de modo que pueda usarlo para instalar los controladores de dispositivo personalizados en ese entorno y conectar los dispositivos, por lo que a todos los efectos, parece que se ejecuta en hardware heredado. Además, en la recompilación, como dije, el código usa cantidades bastante extensas de llamadas de bajo nivel a la API de Win, así como algunas molestas intrusiones en las estructuras internas. Así que supongo que eso se rompería en el modelo de escritorio Win7, aunque no he intentado portarlo directamente.
Richard Tyregrim
2
Debería intentar un intento de puerto rápido, simplemente para ver cuánto es difícil de manejar: en mi experiencia, el código antiguo tiende a portarse a los nuevos sistemas operativos Windows sorprendentemente fácil con solo unas pocas cosas que están realmente obsoletas.
gbjbaanb
4

Creo que esto es más un problema acerca de cómo obtener virtualbox o vmware para proporcionar acceso al puerto serie de los hosts que sobre el sistema operativo de virtualización o incluso el sistema operativo invitado. Comenzaría con un sistema host que ejecute un sistema operativo moderno (win 7/8/10 o Linux distro) con un adaptador de puerto USB a serie basado en una implementación real rs-232, como el prolífico pl2303.

Use un SO moderno como host, instale virtualbox y cree una VM invitada e instale cualquier SO que sea compatible. La clave es conseguir que el puerto RS-232 en el SO invitado pase a la VM invitada. Utilice un módem nulo y un programa de terminal para asegurarse de que el puerto RS-232 funcione en el sistema operativo host local.

Si el host es Linux, se necesitan algunos permisos para virtualizar el hardware local, y en la mayoría de los casos, su cuenta de inicio de sesión en el grupo vboxusers se encargará de eso.

Thomas Carlisle
fuente
2

Es una decisión de gestión. Su administración debe estar en condiciones de determinar cuánto dinero ganan al admitir Windows 3.11. Si tienen algún cerebro, se darán cuenta de que los clientes que se quejan si no los apoyan de forma gratuita en realidad no le hacen ganar dinero. Puede apoyarlos diciéndoles cuál es el costo de soportar una versión anterior. No solo en términos de trabajo real, sino también en términos de no poder utilizar tecnologías más nuevas.

El último momento en el que debe soportar una máquina es cuando no puede comprar reemplazos en eBay.

gnasher729
fuente