Unterstützung der Entwicklung für ältere Betriebssysteme

14

Ich verwalte einen großen Teil des in C geschriebenen Legacy-Codes. Dieser Code wurde ursprünglich für die Kompilierung mit Windows 3 für Workgroups geschrieben, und später wurde eine Version für NT erstellt. Diese Legacy-Anwendung wird noch heute verwendet und läuft seit Anfang der 90er Jahre auf 3.11- und NT-Workstations. Es funktioniert und es macht, was es tun soll, und der Grund, warum sie immer noch leben, ist, dass die Treiber für einige der zur Lösung gehörenden benutzerdefinierten Hardware nicht mit späteren Windows-Versionen kompatibel sind.

Es gibt auch eine andere Anwendung, die ich gepflegt habe und die aus den gleichen Gründen nur auf Win2k funktioniert.

Im Laufe der Zeit wird es jedoch immer schwieriger, diese alten Umgebungen zu betreiben. Im Moment behalte ich physische Maschinen mit installierter Entwicklungssoftware, damit ich auf nativer Hardware arbeiten kann. Aber diese können jederzeit sterben (sie sind immerhin 25 Jahre alt).

Meine Frage ist also, wie ich diese archaische Umgebung angesichts des Jahres 2016 stabiler erhalten kann. Können Sie eine 3.11 auf Cloud-Hosting umstellen?

Ich habe Virtualisierung ausprobiert, aber aufgrund der Spezialisierung der Setups konnte ich es nicht mit den Gerätetreibern zum Laufen bringen. Daher denke ich, dass man möglicherweise ein vollständiges Image des Betriebssystems erstellen muss, wie es ist, und dieses dann in einem ausführen muss VM, um die Software zu entwickeln? Ist so etwas für Gastbetriebssystemversionen möglich, die so alt sind wie Win3 und NT?

Gibt es Erfahrungen damit, ältere Plattformen wie diese für die Entwicklung am Leben zu erhalten, aber auf eine modernere und sicherere Weise, auf die ich zurückgreifen kann?

Mein Ziel ist es, die alten physischen Maschinen loszuwerden und auf Virtualisierung umzusteigen.

Richard Tyregrim
quelle
Welche VM-Software haben Sie ausprobiert? VMware? Wenn nicht, probieren Sie es aus, ich habe mindestens eine Hardware, für die die Treiber nur mit dieser Software arbeiten, aber keine andere VM-Software.
Doc Brown
Außerdem: Was ist der schlimmste Fall, wenn die Hardware morgen ausfällt und Sie bisher keine Alternative haben? Geht Ihr Unternehmen pleite?
Doc Brown
Ich habe VMware und VirtualBox ausprobiert. Von den beiden VirtualBoxen konnte Win3 nicht geladen werden, aber NT4 konnte geladen werden, jedoch ohne CD, Auflösungsänderung oder Mausunterstützung. VMWare lud Win3, aber es fehlten auch Treiber, so dass der Bildschirm durcheinander kam. Im Moment spiele ich mit dem Umstieg auf Emulation und probiere PCem aus. Das funktioniert besser, aber dann bekomme ich keine Geschwindigkeitssteigerung gegenüber alter Hardware und
mir
3
Ehrlich gesagt, wenn es schwierig wird, Ersatzteile zu bekommen, ist es an der Zeit, über das Ersetzen des alten Materials durch eine neuere Lösung nachzudenken. Irgendwann wird es weniger wirtschaftlich, diese alten Sachen am Leben zu erhalten, als zumindest einige Teile neu zu erstellen.
Doc Brown
1
Woher haben Sie Treiber für die benutzerdefinierte Hardware?
JeffO

Antworten:

4

Treiber für einige der zur Lösung gehörenden benutzerdefinierten Hardwarekomponenten sind nicht mit neueren Windows-Versionen kompatibel

Das ist der springende Punkt. Sie können Ihr altes C-Programm mit einem neueren Visual Studio neu kompilieren, alle Compiler-Warnungen und -Fehler beheben und im Allgemeinen ein altes System in ein identisches verwandeln, das unter Windows 7 (oder später, falls erforderlich) ausgeführt wird, die Treiber jedoch nicht arbeiten dann ist die Wahrscheinlichkeit gering, dass es auch virtualisiert funktioniert.

Wenn Sie die Treiber / Hardware nicht aktualisieren oder ersetzen können, würde ich nicht damit beginnen, darüber nachzudenken.

gbjbaanb
quelle
Vielen Dank für Ihre Antwort. Ich dachte, dass es möglicherweise eine VM- oder Emulationsoption gibt, die der auf den Win3-Maschinen verwendeten Hardware ähnelt, sodass ich diese verwenden kann, um die benutzerdefinierten Gerätetreiber in dieser Umgebung zu installieren und die Geräte anzuschließen, z Alles in allem sieht es so aus, als ob es auf älterer Hardware läuft. Außerdem verwendet der Code beim erneuten Kompilieren, wie ich bereits sagte, ziemlich viele Aufrufe auf niedriger Ebene an die Win-API sowie einige üble Stupser in internen Strukturen. Also ich denke, das würde in Win7 Desktop-Modell brechen, obwohl ich nicht versucht habe, es direkt zu portieren.
Richard Tyregrim
2
Sie sollten einen schnellen Portierungsversuch unternehmen, um zu sehen, wie schwierig es ist, damit umzugehen. Nach meiner Erfahrung lässt sich alter Code überraschend leicht auf neue Windows-Betriebssysteme portieren, wobei nur wenige Dinge wirklich veraltet sind.
gbjbaanb
4

Ich denke, dies ist eher ein Problem, wenn es darum geht, dass virtualbox oder vmware den Zugriff auf den seriellen Port des Hosts ermöglichen, als wenn es um das Virtualisierungs-Betriebssystem oder sogar das Gast-Betriebssystem geht. Ich würde mit einem Host-System beginnen, auf dem ein modernes Betriebssystem (Win 7/8/10 oder Linux Distribution) mit einem USB-zu-Seriell-Port-Adapter ausgeführt wird, der auf einer echten RS-232-Implementierung basiert, wie zum Beispiel dem produktiven pl2303.

Verwenden Sie ein modernes Betriebssystem als Host, installieren Sie virtualbox, erstellen Sie eine Gast-VM und installieren Sie das jeweils kompatible Betriebssystem. Der Schlüssel ist, den RS-232-Port des Gastbetriebssystems an die Gast-VM weiterzuleiten. Verwenden Sie ein Nullmodem und ein Terminalprogramm, um sicherzustellen, dass der RS-232-Anschluss auf dem lokalen Host-Betriebssystem funktioniert.

Wenn der Host Linux ist, sind einige Berechtigungen erforderlich, um die lokale Hardware zu virtualisieren. In den meisten Fällen wird dies durch das Einfügen Ihres Anmeldekontos in die vboxusers-Gruppe erledigt.

Thomas Carlisle
quelle
2

Es ist eine Managemententscheidung. Ihr Management sollte in der Lage sein, zu bestimmen, wie viel Geld es mit der Unterstützung von Windows 3.11 verdient. Wenn sie Verstand haben, werden sie feststellen, dass Kunden, die sich beschweren, wenn Sie sie nicht kostenlos unterstützen, Sie nicht wirklich Geld verdienen. Sie können sie unterstützen, indem Sie ihnen die Kosten für die Unterstützung einer alten Version mitteilen. Nicht nur in Bezug auf die tatsächliche Arbeit, sondern auch in Bezug darauf, dass neuere Technologien nicht eingesetzt werden können.

Der allerneueste Zeitpunkt, an dem Sie eine Maschine unterstützen sollten, ist der Zeitpunkt, an dem Sie bei eBay keinen Ersatz kaufen können.

gnasher729
quelle