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)
12079정성태12/13/201933오류 유형: 584. 원격 데스크탑(rdp) 환경에서 다중 또는 고용량 파일 복사 시 "Unspecified error" 오류 발생
12078정성태12/13/201969Linux: 26. .NET Core 응용 프로그램을 위한 메모리 덤프 방법
12077정성태12/13/201925Linux: 25. 자주 실행할 명령어 또는 초기 환경을 "~/.bashrc" 파일에 등록
12076정성태12/12/201999디버깅 기술: 142. Linux - lldb 환경에서 sos 확장 명령어를 이용한 닷넷 프로세스 디버깅 - 배포 방법에 따른 차이
12075정성태12/12/201990디버깅 기술: 141. Linux - lldb 환경에서 sos 확장 명령어를 이용한 닷넷 프로세스 디버깅
12074정성태12/11/201974디버깅 기술: 140. windbg/Visual Studio - 값이 변경된 경우를 위한 정지점(BP) 설정(Data Breakpoint)
12073정성태12/10/201983Linux: 24. Linux/C# - 실행 파일이 아닌 스크립트 형식의 명령어를 Process.Start로 실행하는 방법
12072정성태12/9/201942오류 유형: 583. iisreset 수행 시 "No such interface supported" 오류
12071정성태12/9/201950오류 유형: 582. 리눅스 디스크 공간 부족 및 safemode 부팅 방법
12070정성태12/9/201939오류 유형: 581. resize2fs: Bad magic number in super-block while trying to open /dev/.../root
12069정성태12/2/2019169디버깅 기술: 139. windbg - x64 덤프 분석 시 메서드의 인자 또는 로컬 변수의 값을 확인하는 방법
12068정성태11/28/2019179디버깅 기술: 138. windbg와 Win32 API로 알아보는 Windows Heap 정보 분석 [1]파일 다운로드2
12067정성태11/27/2019165디버깅 기술: 137. 실제 사례를 통해 Debug Diagnostics 도구가 생성한 닷넷 웹 응용 프로그램의 성능 장애 보고서 설명 [1]파일 다운로드1
12066정성태11/27/2019105디버깅 기술: 136. windbg - C# PInvoke 호출 시 마샬링을 담당하는 함수 분석 - OracleCommand.ExecuteReader에서 OpsSql.Prepare2 PInvoke 호출 분석
12065정성태11/25/2019114디버깅 기술: 135. windbg - C# PInvoke 호출 시 마샬링을 담당하는 함수 분석파일 다운로드1
12064정성태11/25/201974오류 유형: 580. HTTP Error 500.0/500.33 - ANCM In-Process Handler Load Failure
12063정성태11/21/2019112디버깅 기술: 134. windbg - RtlReportCriticalFailure로부터 parameters 정보 찾는 방법
12062정성태11/21/2019110디버깅 기술: 133. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례 - 두 번째 이야기
12061정성태11/20/2019104Windows: 165. CoTaskMemAlloc/CoTaskMemFree과 윈도우 Heap의 관계
12060정성태11/21/2019139디버깅 기술: 132. windbg/Visual Studio - HeapFree x64의 동작 분석
12059정성태11/20/2019128디버깅 기술: 131. windbg/Visual Studio - HeapFree x86의 동작 분석
12058정성태11/19/2019132디버깅 기술: 130. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례
12057정성태11/18/201988오류 유형: 579. Visual Studio - Memory 창에서 유효한 주소 영역임에도 "Unable to evaluate the expression." 오류 출력
12056정성태11/18/2019153개발 환경 구성: 464. "Microsoft Visual Studio Installer Projects" 프로젝트로 EXE 서명 및 MSI 파일 서명 방법파일 다운로드1
12055정성태11/17/2019113개발 환경 구성: 463. Visual Studio의 Ctrl + Alt + M, 1 (Memory 1) 등의 단축키가 동작하지 않는 경우
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...