Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 머신

DOS 응용 프로그램을 다시 실행해볼까요? VMware Player로 FreeDOS 구축하기

워크래프트, 울펜슈타인, 둠 2, 엑스윙 같은 추억의 고전 게임들을 다시 플레이하고 싶으신가요? 16비트 소프트웨어 특유의 256색 그래픽의 정취를 다시 느껴보고 싶다면 이 글이 도움이 될 것입니다.

저는 어느 날 Windows XP SP2가 출시되던 시절의 오래된 운영체제들을 회고해보기로 마음먹었습니다. 그런데 제 Windows 머신 중 하나에 업데이트를 적용한 직후, 정말 아끼던 게임인 카이저 3(Caesar III)가 더 이상 실행되지 않는다는 사실을 깨달았습니다. 카이저를 잃은 보상으로 트랜스포트 타이쿤 디럭스(Transport Tycoon Deluxe)를 다시 설치하려 했지만, 이 귀여운 게임조차 Windows XP에서 돌아가지 않아 속이 상했습니다. Windows 98 시절 이후로 TTD를 플레이하지 않았지만, 두 게임을 한꺼번에 잃자 깊은 생각에 빠질 수밖에 없었습니다.

들어가며

무엇을 해도 소용이 없었습니다. Windows XP에서 호환 모드로 실행해도 안 됐고, 이런 문제를 해결하기 위해 만들어진 각종 패치도 통하지 않았습니다. 그러던 중 저는 VMware Player라는 훌륭한 제품을 발견하게 되었습니다. VMware Player는 가상화 소프트웨어로, 기존 운영체제 위에서 하나의 응용 프로그램처럼 다양한 PC 기반 운영체제를 실행할 수 있게 해줍니다. 놀라운 기능이죠. VMware Player에 대한 자세한 내용은 'VMware Player - a great friend'라는 글에서 확인할 수 있습니다.

저는 VMware Player를 내려받아 설치한 뒤, 갖고 있던 구형 운영체제들을 설치하며 예전 게임들을 되살릴 방법을 찾기 시작했습니다. 그리고 행운이 두 번 찾아왔습니다. Windows XP Pro SP2 호스트 위에서 Windows XP Home SP1을 가상 머신으로 성공적으로 설치했고, 게스트 OS 안에서 카이저 3를 설치해 다시 플레이할 수 있었습니다. 성공이었죠! 또한 트랜스포트 타이쿤 디럭스의 오픈소스 클론인 OpenTTD를 발견하여, 이 훌륭한 게임을 Windows XP SP2에서 네이티브로 즐길 수 있게 되었습니다.

Windows XP를 일반적인 방법으로, 그리고 특별히 VMware Player의 게스트 OS로 설치하는 과정은 별도의 글에서 읽어볼 수 있습니다. 카이저 3 설치 성공기를 자세히 다룬 글과 게임 리뷰도 있으며, OpenTTD의 설치 및 플레이 방법과 별도의 게임 리뷰 역시 확인할 수 있습니다.

그러다 저는 더 큰 도전을 감행하게 되었습니다. 카이저 3는 1998년경 출시된 게임이고, 트랜스포트 타이쿤 디럭스는 1994년으로 거슬러 올라갑니다. 그렇다면 한층 더 과거로 돌아가는 건 어떨까요? 바로 DOS 말입니다.

DOS 설치 방법

DOS가 무엇인지 모르거나 관심이 없다면 지금쯤 읽기를 멈추셔도 좋습니다. MS-DOS는 80년대와 90년대 초반에 가장 인기 있는 데스크톱 운영체제 중 하나였습니다. 하지만 이미 오랫동안 지원이 중단된 상태라, 정품 사본을 구하는 것조차 쉽지 않습니다. 그러나 걱정할 필요는 없습니다. 웹사이트에서 스스로를 "100% MS-DOS 호환 OS"라고 소개하는 FreeDOS가 있기 때문입니다.

저는 DOS 플랫폼으로 FreeDOS를 사용해보기로 했습니다. 어떤 머신에도 듀얼부팅으로 FreeDOS를 설치할 여유는 없었기에, 가장 저렴하고 빠르며 합리적인 해결책인 VMware Player에서 시험해보기로 했습니다. 이렇게 하면 시스템에 영구적인 변경이나 손상 없이 진행 과정에서 발생하는 오류를 쉽게 디버깅할 수 있습니다. 다음 작업 방법은 제 Linux From Scratch 글을 참고하시기 바랍니다.

  1. VMware Player와 QEMU 설치 및 사용법
  2. .vmx 가상 머신 설정 파일 생성
  3. .vmx 파일을 가상 CD(마운트된 .iso)로 부팅하도록 구성
  4. 가상 하드 디스크 생성

그럼에도 불구하고, 제가 DOS 환경을 만들며 수행한 기본 단계 몇 가지를 소개하겠습니다.

  1. 부팅 가능한 FreeDOS .iso 이미지를 내려받았습니다.
  2. 아래의 .vmx 설정 파일을 만들었습니다. 그대로 복사해서 사용하셔도 됩니다. 단, 메모장 같은 텍스트 편집기에서 저장할 때 반드시 '.txt'가 아니라 '모든 파일(All Types)' 형식으로 저장하세요.

config.version = "8"
virtualHW.version = "3"

guestOS = "other"

displayName = "FreeDOS"

numvcpus = "1"

memsize = "64"
MemAllowAutoScaleDown = "FALSE"
MemTrimRate = "-1"

uuid.action = "create"

tools.remindInstall = "TRUE"

hints.hideAll = "TRUE"

tools.syncTime = "TRUE"

usb.present = "TRUE"
usb.generic.autoconnect = "FALSE"

serial0.present = "FALSE"

serial1.present = "FALSE"

parallel0.present = "FALSE"

# Sound settings
sound.present = "TRUE"
sound.virtualdev = "sb16"

logging = "TRUE"
log.fileName = "FreeDOS.log"
log.append = "TRUE"
log.keepOld = "1"

isolation.tools.hgfs.disable = "FALSE"
isolation.tools.dnd.disable = "TRUE"
isolation.tools.copy.enable = "TRUE"
isolation.tools.paste.enabled = "TRUE"

ethernet0.present = "TRUE"
ethernet0.virtualDev = "vlance"
ethernet0.connectionType = "nat"
ethernet0.addressType = "generated"
ethernet0.generatedAddress = "00:0c:29:80:9c:48"
ethernet0.generatedAddressOffset = "0"

floppy0.present = "TRUE"
floppy0.startConnected = "TRUE"
floppy0.autodetect = "TRUE"

ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-raw"
ide1:0.startConnected = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.autodetect = "TRUE"

ide1:1.present = "TRUE"
ide1:1.fileName = "fdbootcd.iso"
ide1:1.deviceType = "cdrom-image"
ide1:1.mode = "persistent"
ide1:1.startConnected = "FALSE"

ide0:0.present = "TRUE"
ide0:0.fileName = "freedos.vmdk"
ide0:0.mode = "persistent"
ide0:0.startConnected = "TRUE"
ide0:0.writeThrough = "TRUE"

ide0:0.redo = ""
uuid.location = "56 4d 2e 31 1d 13 5d 4f-0d a6 5c b7 54 80 9c 48"
uuid.bios = "56 4d 2e 31 1d 13 5d 4f-0d a6 5c b7 54 80 9c 48"

가상 머신 설정 파일을 만드는 데 도움이 되는 훌륭한 사이트로 EasyVMX!가 있습니다. 이 사이트는 대화형 인터페이스로 .vmx 설정 파일을 생성해주며, 완성된 파일을 내려받아 바로 사용할 수 있습니다. 가상 하드 디스크는 QEMU로 생성했습니다. QEMU 폴더에서 명령줄에 다음 명령어를 입력해 500MB짜리 작은 디스크를 만들었습니다.

qemu-img.exe create -f vmdk freedos.vmdk 500M

모든 파일을 한 폴더에 모은 뒤 VMware Player를 실행하고, CD(.iso)로 부팅하여 FreeDOS를 설치했습니다. 설치 과정은 상당히 간단합니다. 세부 사항까지 다루지는 않겠지만, 상세한 단계별 가이드를 요청하는 메일이 많이(2통 이상) 들어온다면 나중에 추가로 작성해볼 생각입니다. 어쨌든 정말 간단하니 화면의 지시만 따르면 됩니다.

FreeDOS에서 발견한 놀라운 점 중 하나는 CD-ROM 지원이었다는 것입니다. 플로피 디스크를 다루고 싶지 않았던 터라 꽤 기대가 컸습니다. 설치가 끝나기를 기다리고 재부팅하자 여러 선택지가 나타났습니다. 물론 저는 모든 드라이버를 로드하고 가장 많은 메모리를 확보하는 1번 옵션을 골랐습니다.

그런데 동작하지 않았습니다. 대부분의 드라이버가 초기화에 실패했습니다. 하이 메모리도 없었고, 마우스도, CD-ROM도 인식되지 않았습니다. 흠... 이후 2~3일간 문제의 원인을 파헤쳤고, 결국 몇 가지 충격적인 사실을 알게 되었습니다.

  1. 특정 파일들의 경로와 이름이 올바르지 않았습니다(fdauto.bat 파일).
  2. CD-ROM 드라이버가 잘못되어 있었습니다(fdconfig.sys 파일).

시스템 파일 수정하기

시행착오의 모든 과정을 하나하나 서술하며 이 글을 장편소설로 만들지는 않겠지만, 요약하면 모든 문제를 해결하는 데 성공했습니다. 원본 fdconfig.sys와 fdauto.bat 파일을 수정해 정상 작동하는 드라이버가 로드되도록 하고, 올바른 경로와 파일명이 실행되도록 변경했습니다. FreeDOS에 포함된 CD-ROM 드라이버는 정상 작동하는 aoatapi.sys 드라이버로 교체했습니다. 마지막으로 dosidle.exe를 설치해 CPU가 멈추지 않고 계속 풀가동하는 것을 막았습니다(DOS는 원래 그렇게 동작합니다).

aoatapi.sys와 dosidle.exe 관련 법적 문제를 정확히 알지 못하기 때문에, 이 파일들을 직접 호스팅하거나 인터넷상의 어떤 소스로도 직접 링크하지 않겠습니다. 해당 소스의 품질 역시 보증할 수 없습니다.

따라서 드릴 수 있는 최선의 조언은 검색 엔진으로 aoatapi.sys와 dosidle.exe를 직접 찾아보는 것입니다. 저는 몇 분 만에 신뢰할 만한 사본을 찾을 수 있었습니다. Google에서 aoatapi.sys 검색 결과와 dosidle.exe 검색 결과를 참고해보세요. 물론 여러분이 선호하는 검색 엔진과 검색어를 자유롭게 사용하셔도 됩니다.

제가 가장 먼저 한 일은 이 두 파일을 플로피 디스크에 복사한 뒤, 가상 머신의 하드 디스크로 옮기는 것이었습니다. dosidle.exe를 실행하자 CPU가 다시 정상적으로 숨을 쉬기 시작했습니다. 아래에서 수정된 fdconfig.sys와 fdauto.bat를 확인하실 수 있습니다.

fdconfig.sys

SWITCHES=/F/N
COUNTRY=001,858,C:\FREEDOS\BIN\COUNTRY.SYS
SET LANG=EN
LASTDRIVE=Z
BUFFERS=20
FILES=40
DOS=HIGH,UMB
DOSDATA=UMB
SET DIRCMD=/OGN /4
MENUCOLOR=7,0
MENUDEFAULT=1,5
MENU 1 - Load FreeDOS, with maximum RAM free, using EMM386
MENU 2 - Load FreeDOS, including HIMEM XMS-memory driver
MENU 3 - Load FreeDOS without drivers

12?DEVICE=C:\FREEDOS\BIN\HIMEM.EXE
1?DEVICE=C:\FREEDOS\BIN\EMM386.EXE NOEMS X=TEST VDS

REM 1?DEVICEHIGH=C:\FREEDOS\BIN\ATAPICDD.SYS /D:FDCD0001
1?DEVICEHIGH=C:\AOATAPI.SYS /D:FDCD0001

fdauto.bat

@echo off
prompt $p$g
path C:\FREEDOS\BIN;C:\BATCHES
set HELPPATH=C:\FREEDOS\HELP
set LANG=US
set NLSPATH=C:\FREEDOS\NLS

IF not "%CONFIG%"=="1" goto noperuse
rem echo Load PERUSE scrolling driver?
rem lh c:\bin\peruse.exe
rem echo PERUSE loaded
:noperuse

IF "%CONFIG%"=="3" goto nomouse
lh c:\freedos\bin\ctmouse.exe /3 /V
:nomouse

if not exist CDRCACH$ goto normalcd
echo Activating cached CD-ROM drive now.
rem lh c:\freedos\bin\shsucdx.exe /D:CDRCACH$,N
lh c:\freedos\bin\shsucdx.com /D:CDRCACH$,N
goto nomorecd
rem the above goto avoids double SHSUCDX loading.
:nomorecd
rem if not exist CDROM001 goto nomorecd
if not exist fdcd0001 goto nomorecd
echo Activating uncached CD-ROM drive now.
rem lh c:\freedos\bin\shsucdx.exe /D:CDROM001,N
lh c:\freedos\bin\shsucdx.com /D:FDCD0001,N

:nomorecd

echo.

IF "%CONFIG%"=="3" goto noshare
rem LH c:\freedos\bin\share.exe /L:20 /F:2048
lh c:\freedos\bin\share.com /L:20 /F:2048
:noshare

IF "%CONFIG%"=="3" echo The environment contents are:
rem echo. displays an empty line...
IF "%CONFIG%"=="3" echo.
IF "%CONFIG%"=="3" echo goto nopause

echo.

echo Welcome to FreeDOS. Press enter to go on and see environment:
rem pause
rem :nopause
set

echo FreeDOS is now at your service :-)
echo.

CLS

C:\DOSIDLE.EXE

lh c:\freedos\bin\mouse.exe

위 내용을 텍스트 편집기에 붙여넣고 저장한 후(.bak 확장자, '모든 파일' 형식을 권장합니다), 플로피 디스크에 담아 가상 머신의 하드 디스크로 복사하세요. 원본 fdconfig.sys와 fdauto.bat를 백업해두고, 새로 만든 .bak 파일의 확장자를 각각 .sys와 .bat으로 변경하면 됩니다. 다음 사항에 유의하시기 바랍니다.

  1. FreeDOS는 C:\FREEDOS 경로에 설치했습니다.
  2. aoatapi.sys와 dosidle.exe는 최상위 디렉터리, 즉 C:\에 위치시켰습니다.
  3. 국가 및 언어 설정은 환경에 따라 다를 수 있습니다.
  4. 기존에 동작하지 않는 명령줄들은 삭제하지 않고 주석 처리만 해두어 실행되지 않도록 했습니다. 예를 들어 PERUSE와 마우스 관련 줄은 남겨두었는데, 활성화되어도 PERUSE 드라이버를 찾지 못하고 마우스도 동작하지 않지만, 주석 처리되어 있으면 영향이 전혀 없습니다. CD-ROM, share 등도 마찬가지입니다.
  5. CD-ROM 드라이브 문자 할당은 N(N:, O: 등)부터 시작하도록 원래 설정을 그대로 유지했지만, 충돌하지 않는 한 얼마든지 원하는 값으로 변경할 수 있습니다.

fdconfig.sys와 fdauto.bat에서 파일 경로를 본인의 설치 환경에 맞게 필요한 대로 수정하세요. 재부팅하면, 다행히 운영체제가 이제 매끄럽게 동작할 것입니다.

운영체제 환경은 아래 이미지와 비슷한 모습이어야 하며, 마우스를 사용할 수 있어야 합니다(edit fdauto.bat 같은 명령을 입력해 마우스 커서가 나타나는지 확인해보세요). 제 .vmx 설정 파일을 사용하셨다면 최소 하나의 CD-ROM 드라이브도 인식될 것입니다. dosidle.exe 역시 정상 작동해야 합니다. 기본적으로 이것으로 끝입니다. 이제 여러분은 동작하는 DOS를 갖게 된 것입니다.

맺으며

다음 글 중 하나에서 90년대 초반 우리의 성격을 만들고 다듬어준 추억의 고전 게임들을 실행하는 데 성공했는지(혹은 실패했는지)에 대한 이야기를 다룰 예정입니다. 구형 게임들이 직렬·병렬 포트(COM1, LPT1)에 접근하려 한다는 점은 잘 알고 있습니다. 제가 아는 한, 일부 최신 Windows 운영체제는 이를 그다지 달가워하지 않습니다. VMware Player에서도 같은 현상을 목격했습니다. 이런 게임들이 더 이상 실행되지 않는 주된 원인인 하드웨어 접근 거부가, 가상 환경에서의 플레이 가능성에도 여전히 영향을 미칠 수 있습니다. 그래도 한번 시도해볼 생각입니다.

또한 OpenTTD처럼 Doom이나 듀크 누켐 3D 같은 게임을 현대 운영체제에서 즐길 수 있게 해주는 다양한 프로젝트가 존재한다는 이야기도 들었습니다. 이 희망찬 소문들이 사실인지 확인해보고 계속 소식을 전해드리겠습니다. 한편, 여러분께서 저에게 알려주실 새로운 소식이나 제안이 있다면 이메일로 보내주세요. 정확한 출처를 밝혀 게재하겠습니다.

관련 업데이트는 카이저 3와 OpenTTD도 함께 다루는 'Reviving old games' 섹션에서 확인하실 수 있습니다. 이 훌륭한 게임들의 리뷰와 스크린샷은 별도의 'Computer games' 카테고리에서 읽고 감상하실 수 있습니다.

그럼, 즐거운 게임 되세요.