Wspieranie rozwoju starszego systemu operacyjnego

14

Utrzymuję dużą część starszego kodu, napisanego w C. Ten kod został początkowo napisany w celu kompilacji z systemem Windows 3 dla grup roboczych, a później utworzono wersję dla NT. Ta starsza aplikacja jest nadal używana, wesoło działająca na stacjach roboczych 3.11 i NT od wczesnych lat 90-tych. Działa i robi to, co powinien, a powodem, dla którego nadal działają, jest to, że sterowniki niektórych niestandardowych urządzeń należących do rozwiązania nie są kompatybilne z późniejszym systemem Windows.

Istnieje również inna aplikacja, którą utrzymywałem, że z tych samych powodów działa tylko na Win2k.

Jednak w miarę upływu czasu zarządzanie coraz starszymi środowiskami jest coraz trudniejsze. Obecnie trzymam fizyczne maszyny z zainstalowanym oprogramowaniem programistycznym, więc mogę pracować na rodzimym sprzęcie. Ale mogą umrzeć w dowolnym momencie (w końcu mają 25 lat).

Moje pytanie brzmi: biorąc pod uwagę 2016 rok, jakie mam opcje utrzymania tego archaicznego środowiska w bardziej stabilny sposób? Czy możesz przenieść 3.11 do hostingu w chmurze?

Próbowałem wirtualizacji, ale ze względu na specjalistyczny charakter konfiguracji nie mogłem zmusić go do pracy ze sterownikami urządzeń, więc myślę, że może być konieczne zrobienie pełnego obrazu systemu operacyjnego takim, jaki jest, a następnie uruchomienie go w VM do opracowania oprogramowania? Czy taka możliwość jest możliwa w przypadku starszych wersji systemu operacyjnego, takich jak Win3 i NT?

Czy masz jakieś doświadczenie w utrzymywaniu starszych platform, takich jak te, dla rozwoju, ale w bardziej nowoczesny, bezpieczny sposób, z którego mogę czerpać?

Moim celem jest pozbycie się starych fizycznych maszyn i przejście do wirtualizacji.

Richard Tyregrim
źródło
Które oprogramowanie VM wypróbowałeś? VMware? Jeśli nie, spróbuj, mam przynajmniej jeden sprzęt, dla którego mam tylko sterowniki współpracujące z tym oprogramowaniem, ale nie ma żadnego innego oprogramowania VM.
Doc Brown
Co więcej: jaki będzie najgorszy scenariusz, jeśli sprzęt umrze jutro, a do tej pory nie ma alternatywy? Czy Twoja firma zbankrutuje?
Doc Brown
Próbowałem VMware i VirtualBox. Z dwóch VirtualBox nie udało się załadować Win3, ale udało się załadować NT4, ale bez płyty CD, zmiany rozdzielczości i obsługi myszy. VMWare załadował Win3, ale również brakowało sterowników, więc ekran został zawalony. W tej chwili mam problem z przejściem na emulację, wypróbowanie PCem. Działa to lepiej, ale potem nie mam wzrostu prędkości w stosunku do starego sprzętu i brakuje mi rzeczy VM, takich jak współdzielenie dysków itp.
Richard Tyregrim
3
Szczerze mówiąc, kiedy trudno jest zdobyć części zamienne, nadszedł czas, aby pomyśleć o zastąpieniu starych elementów nowszym rozwiązaniem. W pewnym momencie utrzymanie tych starych rzeczy przy życiu staje się mniej ekonomiczne niż tworzenie przynajmniej niektórych części na nowo.
Doc Brown
1
Skąd masz sterowniki do niestandardowego sprzętu?
JeffO

Odpowiedzi:

4

sterowniki niektórych niestandardowych urządzeń należących do rozwiązania nie są kompatybilne z późniejszym systemem Windows

To jest sedno sprawy. Możesz ponownie skompilować starszą wersję programu C za pomocą nowszego programu Visual Studio, naprawić wszystkie ostrzeżenia i błędy kompilatora i ogólnie zmienić stary system w identyczny, który działa w systemie Windows 7 (lub później, jeśli musisz), ale jeśli sterowniki nie praca wtedy szanse na to, że zadziała nawet zwirtualizowana, są niewielkie.

Jeśli nie możesz zaktualizować lub wymienić sterowników / sprzętu, nie zacznę tego rozważać.

gbjbaanb
źródło
Dziękuję za odpowiedź. Myślałem, że może być dostępna opcja maszyny wirtualnej lub emulacji, która przypominałaby faktyczny sprzęt używany na komputerach z Win3, więc mogę go użyć do zainstalowania niestandardowych sterowników urządzeń w tym środowisku i podłączenia urządzeń, więc dla wszystkie zamiary i cele wygląda na to, że działa na starszym sprzęcie. Ponadto, podczas ponownej kompilacji, jak już powiedziałem, kod używa dość dużej ilości wywołań niskiego poziomu do Win API, a także niektórych nieprzyjemnych zaczepień w wewnętrznych strukturach. Myślę, że to zepsułoby się w modelu komputerowym Win7, chociaż nie próbowałem go całkowicie przenieść.
Richard Tyregrim
2
Powinieneś spróbować szybkiej próby portu, aby zobaczyć, jak trudno jest sobie z tym poradzić - z mojego doświadczenia, starożytny kod ma tendencję do zaskakująco łatwego przenoszenia do nowych systemów operacyjnych Windows z kilkoma naprawdę przestarzałymi elementami.
gbjbaanb
4

Myślę, że jest to bardziej problem z uzyskaniem dostępu do portu szeregowego hostów przez virtualbox lub vmware, niż w przypadku systemu operacyjnego do wirtualizacji, a nawet systemu gościa. Zaczynam od systemu hosta z nowoczesnym systemem operacyjnym (Win 7/8/10 lub Linux Distro) z adapterem USB na port szeregowy, który jest oparty na prawdziwej implementacji RS-232, takiej jak płodny pl2303.

Użyj nowoczesnego systemu operacyjnego jako hosta, zainstaluj virtualbox i utwórz gościnną maszynę wirtualną i zainstaluj dowolny zgodny system operacyjny. Kluczem jest przesłanie portu RS-232 w systemie operacyjnym gościa na maszynę wirtualną gościa. Użyj modemu zerowego i programu terminalowego, aby upewnić się, że port RS-232 działa w lokalnym systemie operacyjnym hosta.

Jeśli hostem jest Linux, potrzebne są pewne uprawnienia do wirtualizacji lokalnego sprzętu, a w większości przypadków założenie konta logowania do grupy vboxusers zajmie się tym.

Thomas Carlisle
źródło
2

To decyzja kierownictwa. Kierownictwo powinno być w stanie określić, ile zarabiają, wspierając system Windows 3.11. Jeśli mają jakieś mózgi, zdadzą sobie sprawę, że klienci, którzy narzekają, jeśli ich nie wspierasz, nie zarabiają. Możesz wesprzeć ich, informując, jaki jest koszt obsługi starej wersji. Nie tylko pod względem faktycznej pracy, ale także pod względem niemożności korzystania z nowszych technologii.

Najnowszym momentem, w którym powinieneś wspierać maszynę, jest to, że nie możesz kupić zamienników w serwisie eBay.

gnasher729
źródło