Supportare lo sviluppo per sistemi operativi precedenti


14

Sto mantenendo gran parte del codice legacy, scritto in C. Questo codice inizialmente è stato scritto per essere compilato su Windows 3 per Workgroup, e successivamente è stata creata una versione per NT. Questa applicazione legacy è ancora in uso oggi, correndo allegramente su workstation 3.11 e NT dei primi anni '90. Funziona e fa quello che dovrebbe fare, e la ragione per cui vivono ancora è che i driver per alcuni dell'hardware personalizzato appartenente alla soluzione non sono compatibili con Windows successivo.

C'è anche un'altra applicazione che ho sostenuto che per gli stessi motivi funziona solo su Win2k.

Tuttavia, man mano che le cose vanno avanti, diventa sempre più difficile gestire questi ambienti legacy. In questo momento mantengo le macchine fisiche con il software di sviluppo installato, in modo da poter lavorare su hardware nativo. Ma questi possono morire in qualsiasi momento (dopo tutto hanno 25 anni).

Quindi la mia domanda è, visto che è il 2016, quali sono le mie opzioni per mantenere questo ambiente arcaico in un modo più stabile? Puoi spostare un 3.11 sul cloud hosting?

Ho provato la virtualizzazione, ma a causa della natura specializzata delle configurazioni, non sono riuscito a farlo funzionare con i driver del dispositivo, quindi sto pensando che potrebbe essere necessario creare un'immagine completa del sistema operativo così com'è e quindi eseguirlo in un VM per sviluppare il software? Una cosa del genere è possibile per le versioni del SO guest precedenti a Win3 e NT?

Esiste qualche esperienza nel mantenere vive piattaforme di sviluppo come queste, ma in un modo più moderno e sicuro da cui posso attingere?

Il mio obiettivo è liberarmi delle vecchie macchine fisiche e passare alla virtualizzazione.


Quale software VM hai provato? VMware? In caso contrario, provalo, ho almeno un hardware per il quale ho i driver che funzionano solo con quel software, ma nessun altro software VM.
Doc Brown,

Inoltre: quale sarà lo scenario peggiore se l'hardware dovesse morire domani e finora non hai alternative? La tua azienda fallirà?
Doc Brown,

Ho provato VMware e VirtualBox. Dei due VirtualBox non è riuscito a caricare Win3 ma è riuscito a caricare NT4, ma senza CD, modifica della risoluzione o supporto del mouse. VMWare ha caricato Win3 ma mancava anche i driver, quindi lo schermo era incasinato. In questo momento sto facendo casino con il passaggio all'emulazione, provando PCem. Funziona meglio, ma poi non ottengo alcun aumento di velocità rispetto al vecchio hardware e mi mancano elementi VM come la condivisione di dischi ecc.
Richard Tyregrim,

3
Onestamente, quando diventa difficile ottenere parti di ricambio, è tempo di pensare a sostituire le vecchie cose con una soluzione più recente. A un certo punto nel tempo, mantenere in vita quelle vecchie cose diventa meno economico rispetto alla creazione di almeno alcune parti di recente.
Doc Brown,

1
Dove hai preso i driver per l'hardware personalizzato?
JeffO,

Risposte:


4

i driver di alcuni componenti hardware personalizzati appartenenti alla soluzione non sono compatibili con Windows successivo

Questo è il nocciolo della questione. Puoi ricompilare il tuo programma C legacy con un nuovo Visual Studio, correggere tutti gli avvisi e gli errori del compilatore e, in genere, trasformare un vecchio sistema in uno identico che gira su Windows 7 (o versioni successive, se necessario), ma se i driver non lo fanno funziona quindi le possibilità che funzioni anche virtualizzato sono scarse.

A meno che non sia possibile aggiornare o sostituire i driver / hardware, non inizierei a considerarlo.


Grazie per avermi risposto. Stavo pensando che potrebbe essere disponibile un'opzione VM o di emulazione che assomiglierebbe all'HW effettivo utilizzato sulle macchine Win3, in modo da poterlo utilizzare per installare i driver di dispositivo personalizzati in quell'ambiente e collegare i dispositivi, quindi per a tutti gli effetti sembra che funzioni su hardware legacy. Inoltre, sulla ricompilazione, come ho già detto, il codice utilizza quantità abbastanza estese di chiamate di basso livello verso l'API Win, nonché alcune cattive interferenze nelle strutture interne. Quindi immagino che si romperebbe nel modello desktop Win7, anche se non ho provato a portarlo direttamente.
Richard Tyregrim,

2
Dovresti provare un rapido tentativo di porta, semplicemente per vedere quanto è difficile affrontarlo - nella mia esperienza, il codice antico tende a portare sorprendentemente facilmente a nuovi sistemi operativi Windows con solo alcune cose che sono davvero obsolete.
gbjbaanb,

4

Penso che questo sia più un problema per ottenere virtualbox o vmware per fornire l'accesso alla porta seriale degli host che non per il sistema operativo di virtualizzazione o anche il sistema operativo guest. Vorrei iniziare con un sistema host che esegue un sistema operativo moderno (win 7/8/10 o Linux distro) con un adattatore da USB a porta seriale che si basa su una vera implementazione rs-232, come il prolifico pl2303.

Utilizzare un sistema operativo moderno come host, installare virtualbox e creare una macchina virtuale guest e installare qualsiasi sistema operativo compatibile. La chiave sta ottenendo la porta RS-232 sul SO guest passata alla VM guest. Utilizzare un modem null e un programma terminale per assicurarsi che la porta RS-232 funzioni sul sistema operativo host locale.

Se l'host è Linux, ci sono alcune autorizzazioni necessarie per virtualizzare l'hardware locale, e nella maggior parte dei casi inserirai il tuo account di accesso nel gruppo vboxusers.


2

È una decisione di gestione. Il tuo management dovrebbe essere in grado di determinare quanti soldi stanno guadagnando supportando Windows 3.11. Se hanno un cervello, si renderanno conto che i clienti che si lamentano se non li supportano gratuitamente, in realtà non fanno soldi. Puoi supportarli dicendo loro quanto costa sostenere una versione precedente. Non solo in termini di lavoro effettivo, ma anche in termini di non essere in grado di utilizzare le nuove tecnologie.

L'ultima volta in cui dovresti supportare una macchina è quando non puoi acquistare ricambi su eBay.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.