TECH 으로 돌아가기
TECH HACKER NEWS 6분 읽기 26 READS

64비트 윈도우에서 16비트 프로그램 되살리기: winevdm 포팅판

64비트 윈도우에서 16비트 프로그램 되살리기: winevdm 포팅판
SOURCE IMAGE · HACKER NEWS

오래된 업무용 프로그램을 쓰다 보면 어느 순간 "이 앱은 64비트 버전의 Windows와 호환되지 않습니다"라는 메시지에 가로막히는 경우가 있다. 16비트로 작성된 Windows 3.x 시대의 애플리케이션이나 일부 설치 프로그램이 대표적이다. 64비트 윈도우에는 과거 32비트 환경이 제공하던 NTVDM(NT Virtual DOS Machine) 호환 계층이 아예 들어 있지 않기 때문에, 이런 프로그램은 운영체제 차원에서 실행 자체가 차단된다. otya128이 공개한 winevdm 포팅판은 바로 이 공백을 메우려는 프로젝트다.

이 프로젝트는 리눅스용 Wine에 포함된 16비트 윈도우 에뮬레이터 winevdm을 가져와 64비트 윈도우에서 동작하도록 수정하고 이식한 것이다. 즉 CPU 가상화나 전체 운영체제를 올리는 방식이 아니라, 16비트 실행 파일이 호출하는 Windows API를 받아 현재의 64비트 윈도우 API로 중계하는 구조에 가깝다. 지원 범위로는 Windows 1.x부터 2.x, 3.0, 3.1 등 초기 16비트 윈도우용 프로그램이 언급되며, 별도의 가상머신 소프트웨어 없이 현재 사용하는 데스크톱 위에서 바로 창을 띄워 쓸 수 있다는 점이 핵심이다.

설치 프로그램 가로채기와 INI 리디렉션

기술적으로 흥미로운 부분은 설치 프로그램을 처리하는 방식이다. 64비트 윈도우에는 16비트 설치 관리자를 감지하면 16비트가 아닌 대체 설치 관리자를 띄우는 내부 메커니즘이 마련되어 있는데, winevdm 포팅판은 바로 이 지점을 활용한다. 운영체제가 "이건 16비트 인스톨러"라고 판단하는 순간 끼어들어, 차단 대신 자신이 실행을 떠맡는 것이다. 설치는 레지스트리 등록을 통해 연동되며, 제거는 함께 제공되는 uninstall.reg를 실행하면 된다. 다만 Windows Update 과정에서 레지스트리가 초기화되면 등록 작업을 다시 해주어야 한다는 점은 실무에서 유의할 대목이다. 자동 업데이트가 상시 걸려 있는 환경에서는 어느 날 갑자기 연동이 풀려 있을 수 있다는 뜻이기 때문이다.

또 하나 현실적인 처리는 설정 파일 저장 경로 문제다. 적지 않은 Win16 프로그램은 자기 설정을 윈도우 디렉터리(%WINDIR%) 아래의 INI 파일에 기록하려 한다. 그런데 최근 윈도우는 보안상 %WINDIR%에 대한 쓰기를 허용하지 않기 때문에, 과거 방식 그대로라면 설정 저장이 실패한다. winevdm 포팅판은 이 경로를 다른 위치로 리디렉션해 옛 프로그램의 동작을 깨뜨리지 않으면서도 현재 윈도우의 권한 모델과 충돌하지 않게 한다. 20년 넘는 간극을 메우려면 API 호환뿐 아니라 이런 파일 시스템 정책의 변화까지 흡수해야 한다는 것을 잘 보여주는 사례다.

DOS 실행 지원과 그 한계

이 프로그램은 16비트 윈도우 애플리케이션뿐 아니라 DOS 실행 파일도 구동할 수 있다. 일종의 DOS 에뮬레이터 역할을 겸하는 셈이며, VDMDOSVER 환경 변수로 보고할 DOS 버전을 지정할 수 있다. 특정 DOS 버전을 요구하는 오래된 프로그램을 달래는 데 쓰일 수 있는 옵션이다. 다만 프로젝트 측도 DOS 에뮬레이션은 불완전하다고 분명히 밝히고 있으며, DOS 프로그램을 제대로 돌릴 목적이라면 DOSBox나 MS-DOS Player 같은 전용 도구를 쓰는 편이 낫다고 권한다. 바꿔 말해 이 도구의 무게 중심은 어디까지나 16비트 윈도우 애플리케이션 쪽에 있고, DOS 지원은 보조적 기능으로 이해하는 것이 맞다.

실무 관점에서 이 프로젝트의 가치는 명확하다. 특정 벤더가 더 이상 지원하지 않는 레거시 윈도우 프로그램, 소스 코드가 사라졌거나 재작성 예산이 없는 내부 도구, 오래된 측정 장비나 산업 설비에 딸려 온 전용 유틸리티처럼 "대체 불가능하지만 최신 OS에서 안 뜨는" 자산을 가진 조직이라면 전체 가상머신을 유지하는 것보다 가볍게 접근할 수 있는 선택지가 된다. 가상머신처럼 별도의 구형 OS 라이선스와 패치 관리를 끌고 가지 않아도 된다는 점은 운영 부담 측면에서 특히 매력적이다.

동시에 한계도 분명히 짚어둘 필요가 있다. winevdm 자체가 모든 16비트 API를 완벽히 재현하지는 못하므로 프로그램에 따라 동작하지 않거나 일부 기능이 어긋날 수 있고, Windows Update로 인한 레지스트리 초기화처럼 환경 변화에 취약한 지점도 존재한다. 재현성과 안정성이 생명인 운영 환경에 투입하기 전에는 대상 프로그램별로 충분한 검증을 거치고, 장기적으로는 격리된 가상머신이나 애플리케이션 현대화 같은 대안과 비교해 판단하는 것이 바람직하다. 그럼에도 "그냥 열 수 없는" 상태를 "일단 열어볼 수 있는" 상태로 바꿔준다는 점에서, 레거시를 떠안은 실무자에게는 검토할 만한 도구임에 분명하다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/otya128/winevdm
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...