Microsoft MVP성태의 닷넷 이야기
글쓴 사람
홈페이지
첨부 파일
 

Hyper-V 에 MS-DOS VM 만드는 방법 - MSDN 구독자 대상

오늘은, 갑자기 MS-DOS 운영체제 하나를 기념으로라도 VM 으로 만들어 두어야 하지 않을까... 하는 생각이 들어 갑자기 이 작업을 하고 싶어졌습니다.

Hyper-V 에 설치하려고 하는데, 가장 쉬운 방법은 "MS-DOS 6.22 boot ISO" 파일을 이용하는 것이겠지요. 그래서 웹 검색을 하면 아래와 같이 다양한 ISO 파일을 구할 수 있습니다.

Q. How can I install MS-DOS into a virtual machine (VM)?
; http://www.windowsitpro.com/article/virtualization/q-how-can-i-install-ms-dos-into-a-virtual-machine-vm-

그런데, 잘 알지도 못하는 웹 사이트에서 바이너리를 포함하고 있는 iso 파일을 받기에는 너무나 위험한 시도입니다. (허긴... 어떤 사람들은 해킹된 XP 운영체제까지 믿고 사용하는 경우도 있지만.)

그래서, 정식으로 배포되고 있는 마이크로소프트의 MSDN 구독자 다운로드 센터에서 내려받아서 직접 설치해보는 것이 좋겠다 싶었습니다.

현재 구독자 다운로드 센터에 보면 MS-DOS 관련해서 2개의 파일이 올라가 있습니다.

  • MS-DOS 6.0 (English)
  • MS-DOS 6.22 (English)

원래는 6.0 이 MS-DOS 운영체제 파일이고, 6.22 는 업그레이드 버전입니다. 따라서 6.0 을 먼저 설치하고 (원한다면) 6.22로 업그레이드 하는 순으로 작업을 하면 되는데요.

문제는, 6.0 을 다운로드 받은 en_msdos60.exe 파일은 (플로피) 디스크 이미지 파일을 만들 수가 없는 단순 파일 묶음이라서 부팅 가능하지가 않다는 점입니다. 반면 6.22 는 디스크 이미지 파일은 만들 수 있는데, 업그레이드 용이어서 결국 닭이 먼저냐 계란이 먼저냐 하는 식의 문제가 생겼습니다.

그래도 운이 좋았는지... ^^ 약간의 작업 끝에 6.22 로도 설치가 가능하다는 사실을 알아냈습니다. ^^

자,,, 이제 그 방법을 공개하겠습니다. ^^




아쉽게도 6.22 버전이라고 해서 곧바로 부팅 가능한 ISO 형태가 아닌 압축 실행 파일(en_msdos622.exe)로써, 실행하고 나면 약 12.5 MB 용량의 파일들이 풀립니다.

압축을 해제하면 /UPGRADE 폴더에 format.com 이 있는데, 이를 이용해서 시스템 파일을 전송할 수 있으면 좋을 텐데요. 아쉽게도 윈도우 XP 에서 format.com 을 실행하면 "Incorrect DOS version"이라는 오류 메시지만 나오고 정상적인 실행이 되지 않습니다.

그래서 그 방법은 포기하고.

또 다른 폴더인 /DISKS 에 있는 파일 목록을 보면,

  • 12UPG1.IMG
  • 12UPG2.IMG
  • 12UPG3.IMG
  • 12UPG4.IMG
  • 144UPG1.IMG
  • 144UPG2.IMG
  • 144UPG3.IMG
  • DSKIMAGE.EXE
  • MAKE12.BAK
  • MAKE12.BAT
  • MAKE14.BAT

MAKE14.bat 파일이 눈에 띄는데요. 대충 다음과 같은 내용을 가진 것으로 보아,

echo off
if "%1" == "" goto usage
echo Insert 1.44M disk for INSTALL 1 in drive %1 
pause
echo Creating MS-DOS 6.22 Install Disk 1.
dskimage 144UPG1.img %1
echo Insert 1.44M disk for INSTALL 2 in drive %1 
pause
echo Creating MS-DOS 6.22 Install Disk 2.
dskimage 144UPG2.img %1
echo Insert 1.44M disk for INSTALL 3 in drive %1 
pause
echo Creating MS-DOS 6.22 Install Disk 3.
dskimage 144UPG3.img %1
echo Finished.
goto end
:usage
echo.
echo Usage  MAKE14 drive:
echo.
:end

플로피 디스크를 부팅 가능한 MS-DOS 디스크로 만들어 줄 것 같은 느낌이 듭니다. ^^ 그래서, Hyper-V 에서 '가상 플로피 디스크' 3장을 만들고 (dos1.vfd, dos2.vfd, dos3.vfd) Windows XP VM 에 dos1.vfd 부터 연결 시켰습니다.

그 다음, MAKE14.bat 파일을 실행시키면 각각 다음과 같은 단계를 밟으면서 총 3장의 가상 플로피 디스크에 MS-DOS를 담을 수 있습니다.

D:\temp\msdos622\DISKS>MAKE14.BAT a:

D:\temp\msdos622\DISKS>echo off
Insert 1.44M disk for INSTALL 1 in drive a:
Press any key to continue . . .

                             Disk Image Utility 1.0
???????????????????????????????????????????????????????????????????????????????
?         Program Status               ?            Device Status             ?
?Unlocking Device                      ? Current Cylinder:80                  ?
?Closing source                        ? Current Head    :1                   ?
?Closing destination                   ? Type of Device  :1.44MB              ?
?                                      ? Disk Status     :                    ?
?                                      ? File Status     :                    ?
?                                      ?                                      ?
?                                      ?                                      ?
?                                      ?                                      ?
?                                      ?                                      ?
???????????????????????????????????????????????????????????????????????????????
?             Messages                 ?           Memory Usage               ?
?Operation Completed.                  ? Amount Allocated:9   K               ?
?                                      ? Current Segment :1                   ?
?                                      ?                                      ?
???????????????????????????????????????????????????????????????????????????????


1                   21                  41                  61              80
???????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????
Insert 1.44M disk for INSTALL 2 in drive a:
Press any key to continue . . . 992.

                             Disk Image Utility 1.0
???????????????????????????????????????????????????????????????????????????????
?         Program Status               ?            Device Status             ?
?Unlocking Device                      ? Current Cylinder:80                  ?
?Closing source                        ? Current Head    :1                   ?
?Closing destination                   ? Type of Device  :1.44MB              ?
?                                      ? Disk Status     :                    ?
?                                      ? File Status     :                    ?
?                                      ?                                      ?
?                                      ?                                      ?
?                                      ?                                      ?
?                                      ?                                      ?
???????????????????????????????????????????????????????????????????????????????
?             Messages                 ?           Memory Usage               ?
?Operation Completed.                  ? Amount Allocated:9   K               ?
?                                      ? Current Segment :1                   ?
?                                      ?                                      ?
???????????????????????????????????????????????????????????????????????????????


1                   21                  41                  61              80
???????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????
Insert 1.44M disk for INSTALL 3 in drive a:
Press any key to continue . . . 992.


                             Disk Image Utility 1.0
???????????????????????????????????????????????????????????????????????????????
?         Program Status               ?            Device Status             ?
?Unlocking Device                      ? Current Cylinder:80                  ?
?Closing source                        ? Current Head    :1                   ?
?Closing destination                   ? Type of Device  :1.44MB              ?
?                                      ? Disk Status     :                    ?
?                                      ? File Status     :                    ?
?                                      ?                                      ?
?                                      ?                                      ?
?                                      ?                                      ?
?                                      ?                                      ?
???????????????????????????????????????????????????????????????????????????????
?             Messages                 ?           Memory Usage               ?
?Operation Completed.                  ? Amount Allocated:9   K               ?
?                                      ? Current Segment :1                   ?
?                                      ?                                      ?
???????????????????????????????????????????????????????????????????????????????


1                   21                  41                  61              80
???????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????
Finished.


자, 예상 대로라면 아마도 dos1.vfd 는 부팅 가능할 것입니다. 이를 위해 다음과 같은 초고사양의 VM 을 하나 만들고,

Memory: 8MB
Hard Drive: 1GB
Diskette: dos1.vfd 연결
BIOS: 부트 순서를 CD, Floppy, IDE,... 순으로 변경
(제가 처음 Turbo C IDE를 구동했던 PC 가 삼성 SPC-3000C 였는데요. ^^ 8088 16비트 CPU + 메모리 512KB + 5.25" 플로피 디스크 드라이브 2개만 탑재된 컴퓨터에서 MS-DOS를 구동했었으니... 위의 사양이면 대단한 시스템이죠. ^^)

그렇게 하고 VM을 시작하면,,, 와~~~ 다음과 같이 부팅됩니다. ^^

msdos622_vm_1.png

다시 한번 상기시켜드리자면, MS-DOS 6.22 는 업그레이드 버전이기 때문에 계속 진행하면 안됩니다. 그래서 "ENTER" 키를 누르면 안되고, F3 키를 눌러서 설치 모드를 빠져나와야 합니다.

그럼, "A:>" 프롬프트만 달랑 나타나는데요. 이 상태에서 1GB 대용량 하드 디스크인 c: 드라이브를 인식시키기 위해 fdisk 를 실행시켜 줍니다.

msdos622_vm_2.png

이제 다음 순서로 진행해서 하드 디스크에 파티션을 만들어 줍니다.

  • 1번 선택: Create DOS partition or Logical DOS Drive
  • 1번 선택: Create Primary DOS Partition
  • Y 선택: Do you wish to use the maximum available size for a Primary DOS Partition and make the partition active (Y/N)

위와 같이 해주면 다음과 같은 메시지가 나타나고,

System will now restart

Insert DOS system diskette in drive A:
Press any key when ready . . .

계속 진행하면 시스템이 리부팅되고 다시 MS-DOS 6.22 Setup 화면이 반복되어, 이번에도 역시 "F3"키를 눌러서 빠져나옵니다.

이제 "c:" 드라이브로 변경을 할 수 있는데, 아쉽게도 파티션만 잡힌 상태이기 때문에 사용할 수는 없습니다.

A:\>c:

C:\>dir


Invalid media type reading drive C
Abort, Retry, Fail?a

C:\>a:

A:\>

그렇죠. ^^ 아래와 같이 포맷을 해주어야 합니다.

A:\>format c:

WARNING: ALL DATA ON NON-REMOVABLE DISK
DRIVE C: WILL BE LOST!
Proceed with Format (Y/N)?y


Checking existing disk format.
Formatting 1021.75M
Format complete.

Volume label (11 characters, ENTER for none)?

1,071,104,000 bytes total disk space
1,071,104,000 bytes available on disk

       16,384 bytes in each allocation unit.
       65,375 allocation units available on disk.

Volume Serial Number is 2E55-080B

자, 이제 이 상태에서 A:\> 에 있는 setup.exe를 실행시켜 줍니다.

msdos622_vm_3.png

그렇습니다. ^^ msdos 6.22 디스크는 upgrade 만 되는 것이 아니고, setup 역시 가능합니다. "ENTER"키를 두번 정도 치면 다음과 같이 C:\DOS 폴더에 설치하겠다는 내용이 나오고,

msdos622_vm_4.png

키보드 화살표 키를 이용해서 "Display Type: VGA" 쪽으로 막대를 이동시켜 "ENTER"키를 누르면 다음과 같이 다양한 Display Type을 선택할 수 있습니다.

msdos622_vm_5.png

들어는 봤습니까? Hercules 모드! 오~~~ 너무 너무 반갑습니다. ^^ 감탄은 그만하고 마저 진행시켜서 본격적인 setup 과정에 들어가면 중간에 다음과 같이 물어봅니다.

msdos622_vm_6.png

"UNINSTALL #1" 이라... 제 기억에는 없는 과정이군요. 아마도 '복구 디스크' 성격이 아닐까 싶은데, 어쨌든 이전과 마찬가지로 Hyper-V 콘솔에서 가상 플로피 디스크를 만들어 VM 에 새롭게 할당해 준 후 "Enter"키를 누르면 다시 다음과 같이 물어봅니다.

msdos622_vm_7.png

Hyper-V 가 만들어주는 가상 플로피 디스크는 용량이 1.44MB 이므로 아래의 것을 선택하고 계속합니다.

그럼, 다시 아래와 같이 "Setup Disk #1"을 넣으라고 합니다. 제 경우에는 이전에 언급한 것처럼 dos1.vfd 가 이에 해당하므로 다시 VM 에 연결하고 진행합니다.

이후, 이런 식으로 플로피 디스크 연결 작업을 몇 번 수행해서 dos3.vfd 까지 완료하면 다음 화면까지 진행됩니다.

msdos622_vm_8.png

"ENTER"키를 누르기 전에, VM 의 "Diskette Drive"에 연결되어 있는 가상 플로피 디스크를 "None"값으로 설정하여 해제하고 진행합니다.

이제서야 설치 완료 메시지가 나오는 군요. ^^

msdos622_vm_9.png

오~~~ 아래는 이와 같은 작업을 거쳐서 만든 Hyper-V 가상 머신에서 MS-DOS 6.22 로 부팅한 첫 화면입니다. (제 일생에 HIMEM 이라는 단어를 다시 볼 일이 있을 거라곤 생각도 못했습니다. ^^;)

msdos622_vm_10.png


(참고로, 위의 정도만 진행한 VHD 파일의 크기는 14MB 정도이고, 압축하면 7MB로 줄어듭니다. ^^)

[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]





[최초 등록일: ]
[최종 수정일: 9/22/2011 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 



2019-07-17 09시16분
정성태
2019-07-17 12시40분
[정환] m-dir 생각나네요. 40mb 하드에 도스깔려고 플로피디스켓 준비하던것도 생각나네요.~^^
[손님]
2019-07-17 09시53분
^^ 그러게요, 이것도 쓸모 있어서라기보다는 그때의 추억으로 링크를 담게 되네요.
정성태

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
12005정성태8/13/2019490.NET Framework: 855. 닷넷 (및 VM 계열 언어) 코드의 성능 측정 시 주의할 점 [2]파일 다운로드1
12004정성태8/12/2019123.NET Framework: 854. C# - 32feet.NET을 이용한 PC 간 Bluetooth 통신 예제 코드
12003정성태8/12/201951오류 유형: 564. Visual C++ 컴파일 오류 - fatal error C1090: PDB API call failed, error code '3'
12002정성태8/12/2019134.NET Framework: 853. Excel Sheet를 WinForm에서 사용하는 방법 - 두 번째 이야기
12001정성태8/10/2019145.NET Framework: 852. WPF/WinForm에서 UWP의 기능을 이용해 Bluetooth 기기와 Pairing하는 방법
12000정성태8/9/2019162.NET Framework: 851. WinForm/WPF에서 Console 창을 띄워 출력하는 방법파일 다운로드1
11999정성태8/1/2019100오류 유형: 563. C# - .NET Core 2.0 이하의 Unix Domain Socket 사용 시 System.IndexOutOfRangeException 오류
11998정성태7/30/2019120오류 유형: 562. .NET Remoting에서 서비스 호출 시 SYN_SENT로 남는 현상파일 다운로드1
11997정성태7/30/2019296.NET Framework: 850. C# - Excel(을 비롯해 Office 제품군) COM 객체를 제어 후 Excel.exe 프로세스가 남아 있는 문제파일 다운로드1
11996정성태7/25/2019246.NET Framework: 849. C# - Socket의 TIME_WAIT 상태를 없애는 방법파일 다운로드1
11995정성태7/23/2019196.NET Framework: 848. C# - smtp.daum.net 서비스(Implicit SSL)를 이용해 메일 보내는 방법
11994정성태7/23/2019323개발 환경 구성: 454. Azure 가상 머신(VM)에서 SMTP 메일 전송하는 방법파일 다운로드1
11993정성태7/22/2019110오류 유형: 561. Dism.exe 수행 시 "Error: 2 - The system cannot find the file specified." 오류 발생
11992정성태7/22/2019163오류 유형: 560. 서비스 관리자 실행 시 "Windows was unable to open service control manager database on [...]. Error 5: Access is denied." 오류 발생
11991정성태7/18/2019180디버깅 기술: 128. windbg - x64 환경에서 닷넷 예외가 발생한 경우 인자를 확인할 수 없었던 사례
11990정성태7/18/2019356오류 유형: 559. Settings / Update & Security 화면 진입 시 프로그램 종료
11989정성태7/18/2019156Windows: 162. Windows Server 2019 빌드 17763부터 Alt + F4 입력시 곧바로 로그아웃하는 현상
11988정성태7/18/2019233개발 환경 구성: 453. 마이크로소프트가 지정한 모든 Root 인증서를 설치하는 방법
11987정성태7/17/2019280오류 유형: 558. 윈도우 - KMODE_EXCEPTION_NOT_HANDLED 블루스크린(BSOD) 문제
11986정성태7/18/2019153오류 유형: 557. 드라이브 문자를 할당하지 않은 파티션을 탐색기에서 드라이브 문자와 함께 보여주는 문제
11985정성태7/17/2019161개발 환경 구성: 452. msbuild - csproj에 환경 변수 조건 사용
11984정성태7/9/2019269개발 환경 구성: 451. Microsoft Edge (Chromium)을 대상으로 한 Selenium WebDriver 사용법
11983정성태7/8/2019196오류 유형: 556. nodemon - 'mocha' is not recognized as an internal or external command, operable program or batch file.
11982정성태7/8/2019197오류 유형: 555. Visual Studio 빌드 오류 - result: unexpected exception occured (-1002 - 0xfffffc16)
11981정성태7/7/2019361Math: 64. C# - 3층 구조의 신경망(분류)파일 다운로드1
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...