Prise en charge du développement pour les anciens systèmes d'exploitation

14

Je conserve une grande partie du code hérité, écrit en C. Ce code a été initialement écrit pour être compilé avec Windows 3 pour Workgroups, et plus tard une version pour NT a été créée. Cette application héritée est toujours utilisée aujourd'hui, fonctionnant joyeusement sur les stations de travail 3.11 et NT du début des années 90. Cela fonctionne et il fait ce qu'il est censé faire, et la raison pour laquelle ils vivent toujours est que les pilotes pour certains des matériels personnalisés appartenant à la solution ne sont pas compatibles avec Windows plus tard.

Il existe également une application différente que j'ai maintenue pour les mêmes raisons, ne fonctionne que sur Win2k.

Cependant, à mesure que les choses évoluent, il devient de plus en plus difficile de gérer ces environnements hérités. En ce moment, je garde des machines physiques avec le logiciel de développement installé, donc je peux travailler sur du matériel natif. Mais ceux-ci peuvent mourir à tout moment (ils ont 25 ans après tout).

Donc ma question est, vu que c'est en 2016, quelles sont mes options pour maintenir cet environnement archaïque de manière plus stable? Pouvez-vous déplacer un 3.11 vers un hébergement cloud?

J'ai essayé la virtualisation, mais en raison de la nature spécialisée des configurations, je ne pouvais pas le faire fonctionner avec les pilotes de périphérique, donc je pense que l'on peut avoir besoin de faire une image complète du système d'exploitation tel quel, puis de l'exécuter dans un VM pour développer le logiciel? Une telle chose est-elle possible pour les versions de système d'exploitation invité aussi anciennes que Win3 et NT?

Y a-t-il une expérience dans le maintien en vie de plates-formes plus anciennes comme celles-ci pour le développement, mais de manière plus moderne et sécurisée, sur laquelle je peux puiser?

Mon objectif est de me débarrasser des anciennes machines physiques et de passer à la virtualisation.

Richard Tyregrim
la source
Quel logiciel VM avez-vous essayé? VMware? Sinon, essayez-le, j'ai au moins un matériel pour lequel j'ai fait fonctionner les pilotes uniquement avec ce logiciel, mais aucun autre logiciel de machine virtuelle.
Doc Brown
De plus: quel sera le pire des cas si le matériel meurt demain et que vous n'avez pas d'alternative jusqu'à présent? Votre entreprise fera-t-elle faillite?
Doc Brown
J'ai essayé VMware et VirtualBox. Sur les deux VirtualBox n'a pas réussi à charger Win3 mais a réussi à charger NT4, mais sans CD, changement de résolution ou prise en charge de la souris. VMWare a chargé Win3 mais manquait également de pilotes, donc l'écran a été foiré. En ce moment, je joue avec l'émulation à la place, en essayant PCem. Cela fonctionne mieux mais je n'obtiens aucune augmentation de vitesse par rapport à l'ancien matériel et je manque de trucs VM comme le partage de disques, etc.
Richard Tyregrim
3
Honnêtement, quand il devient difficile d'obtenir des pièces de rechange, il est temps de penser à remplacer les anciennes choses par une solution plus récente. À un moment donné, garder ces vieilles choses en vie devient moins économique que de créer au moins certaines pièces récemment.
Doc Brown
1
Où avez-vous obtenu des pilotes pour le matériel personnalisé?
JeffO

Réponses:

4

les pilotes de certains matériels personnalisés appartenant à la solution ne sont pas compatibles avec les versions ultérieures de Windows

C'est le nœud du problème. Vous pouvez recompiler votre programme C hérité avec un Visual Studio plus récent, corriger tous les avertissements et erreurs du compilateur et généralement transformer un ancien système en un système identique qui s'exécute sur Windows 7 (ou plus tard si vous le devez) mais si les pilotes ne le font pas travailler alors les chances de le faire fonctionner même virtualisé est mince.

À moins que vous ne puissiez mettre à jour ou remplacer les pilotes / le matériel, je ne commencerais pas à y penser.

gbjbaanb
la source
Merci d'avoir répondu. Je pensais qu'il pourrait y avoir une VM ou une option d'émulation disponible qui ressemblerait au matériel réel utilisé sur les machines Win3, afin que je puisse l'utiliser pour installer les pilotes de périphériques personnalisés dans cet environnement et connecter les périphériques, donc pour à toutes fins utiles, il semble qu'il fonctionne sur du matériel hérité. En outre, lors de la recompilation, comme je l'ai dit, le code utilise des quantités assez étendues d'appels de bas niveau à l'API Win ainsi que de mauvais coups dans les structures internes. Donc je suppose que cela casserait dans le modèle de bureau Win7, bien que je n'aie pas essayé de le porter purement et simplement.
Richard Tyregrim
2
Vous devriez essayer une tentative de portage rapide, simplement pour voir à quel point il est difficile à gérer - selon mon expérience, le code ancien a tendance à se porter sur les nouveaux systèmes d'exploitation Windows étonnamment facilement avec seulement quelques éléments vraiment obsolètes.
gbjbaanb
4

Je pense que c'est plus un problème pour obtenir virtualbox ou vmware pour fournir l'accès au port série des hôtes que pour le système d'exploitation de virtualisation ou même le système d'exploitation invité. Je commencerais par un système hôte exécutant un système d'exploitation moderne (distribution 7/8/10 ou distribution Linux) avec un adaptateur USB vers port série basé sur une véritable implémentation rs-232, comme le prolifique pl2303.

Utilisez un système d'exploitation moderne en tant qu'hôte, installez virtualbox et créez une machine virtuelle invitée et installez tout système d'exploitation compatible. La clé consiste à faire passer le port RS-232 sur le système d'exploitation invité à la machine virtuelle invitée. Utilisez un programme null modem et terminal pour vous assurer que le port RS-232 fonctionne sur le système d'exploitation hôte local.

Si l'hôte est Linux, certaines autorisations sont nécessaires pour virtualiser le matériel local, et dans la plupart des cas, placer votre compte de connexion dans le groupe vboxusers s'en chargera.

Thomas Carlisle
la source
2

C'est une décision de gestion. Votre direction doit être en mesure de déterminer combien d'argent elle gagne en prenant en charge Windows 3.11. S'ils ont des cerveaux, ils se rendront compte que les clients qui se plaignent si vous ne les soutenez pas gratuitement ne vous rapportent pas réellement de l'argent. Vous pouvez les soutenir en leur indiquant le coût de la prise en charge d'une ancienne version. Non seulement en termes de travail réel, mais également en termes de non-utilisation de technologies plus récentes.

La toute dernière fois où vous devez prendre en charge une machine est lorsque vous ne pouvez pas acheter de pièces de rechange sur eBay.

gnasher729
la source