본문 바로가기
Operating System

MS-DOS 3.3 살펴보기 - 확장 파티션과 주요 명령, 에뮬레이터로 돌려보기

매큠·2026년 8월 21일·조회 1

인프라 운영을 하다 보면 폐기 목록에 3.5인치 플로피나 옛 DOS 설치 디스크가 섞여 들어온다. 그때마다 이 매체를 읽으려면 어떤 DOS가 필요한지, 하드디스크 파티션은 어떻게 잡혀 있을지부터 따지게 된다. 그 과정에서 이름이 자주 나오는 버전이 3.3이라, 한 번 정리해 둔다.

DOS 3.3 계열이 남긴 것은 확장 파티션(extended partition)과 3.5인치 1.44MB 플로피 지원이다. 확장 파티션 덕분에 하드디스크 하나에 논리 드라이브를 여러 개 잡을 수 있게 됐고, 논리 드라이브 하나의 상한은 32MB로 남았다. 다만 제품 이름과 시점은 구분해야 한다. 1987년 4월 2일 발표된 것은 IBM이 개발한 PC DOS 3.3이고, 마이크로소프트 브랜드의 MS-DOS 3.30은 위키백과 버전 표에 1988년 2월로 기재돼 있다.

아래에서는 두 제품의 시점 정리, 확장 파티션과 32MB 상한, 1.44MB 매체와 FORMAT 스위치, 3.3에서 추가된 명령, FASTOPEN과 APPEND 사용법, 에뮬레이터 실행 방법을 차례로 살펴본다.

1. PC DOS 3.3과 MS-DOS 3.30은 시점이 다르다

레트로 자료에서 "DOS 3.3은 1987년"이라고 뭉쳐 쓰는 경우가 많다. 정확히는 IBM 쪽 날짜다. OS/2 Museum은 "DOS 3.3 was announced on April 2, 1987 with immediate availability"라고 적고, 이 판의 개발이 IBM 단독으로 이루어졌다고 설명한다. 당시 마이크로소프트는 OS/2 작업에 매여 있었다.

  • IBM PC DOS 3.3: 1987년 4월, IBM PS/2 라인과 같은 시기에 발표. 위키백과 DOS 타임라인에도 "3½-inch 1.44 MB floppy support, extended partitions" 항목이 이 제품 행에 붙어 있다.
  • MS-DOS 3.30: 위키백과 MS-DOS 버전 표에 February 1988로 기재. 기능 설명은 1.44MB 플로피 지원, 확장 파티션과 논리 파티션, COUNTRY.SYS 기반 국제화다.
  • MS-DOS 3.31: 1987년 11월, Compaq이 만든 판이다. Compaq, Emerson, Vendex 계열 장비에만 공급됐고 32MB를 넘는 파티션을 지원한다.

참고로 pcdosretro의 DOS 연혁 문서는 PC DOS 3.3과 MS-DOS 3.3을 1987년 4월 한 줄로 묶어 적는다. 자료마다 MS-DOS 브랜드 판의 시점 표기가 갈리므로, 글이나 문서에 날짜를 인용할 때는 어느 제품의 날짜인지 함께 적어 두는 편이 안전하다.

2. 확장 파티션과 논리 드라이브

파티션 정보는 디스크 첫 섹터의 MBR(마스터 부트 레코드)에 네 개 엔트리로 들어간다. 확장 파티션은 그중 한 엔트리를 05h 타입으로 잡아 두고, 그 안에서 논리 드라이브를 사슬처럼 이어 붙이는 방식이다. 이 05h 타입 지원이 3.3에서 들어왔다.

3.3 이전에 왜 이게 필요했는지는 용량 상한 때문이다. FAT16 파티션의 32MB 상한은 3.0부터 적용된 값이고, 2.x 시절 볼륨 상한은 OEM이 어떤 포맷 도구를 함께 넣었는지에 따라 16MB 또는 32MB로 갈렸다. 상한이 생긴 이유는 BPB(디스크 파라미터 블록)의 전체 섹터 수 필드가 16비트여서다. 512바이트 섹터 기준으로 65536 * 512 = 32MB 선에서 막힌다. Compaq MS-DOS 3.31이 이 필드를 32비트로 확장하고 파티션 타입 06h를 쓰면서 상한을 밀어냈다.

그래서 3.3에서 100MB 남짓한 하드디스크를 다 쓰려면 파티션을 쪼갠다. Epson OEM의 MS-DOS 3.3 레퍼런스 매뉴얼도 확장 DOS 파티션이 "multiple logical drives of up to 32MB each"를 담을 수 있다고 적는다. C:는 기본 DOS 파티션 32MB, 나머지를 확장 파티션으로 잡고 그 안에 D:, E:를 만드는 구성이 된다.

C:\>FDISK

FDISK를 띄운 뒤 순서는 이렇게 잡는다.

  1. 기본 DOS 파티션(Primary DOS partition)을 만든다.
  2. 남은 영역에 확장 DOS 파티션(Extended DOS partition)을 만든다. 이 항목이 3.3에서 새로 보이는 부분이다.
  3. 확장 파티션 안에 논리 드라이브를 하나씩 만든다. 각각 32MB를 넘길 수 없다.
  4. 기본 DOS 파티션을 활성(Active) 파티션으로 지정한다.
  5. 재부팅한 뒤 논리 드라이브마다 FORMAT을 돌린다.

여기서 한 번 걸리는 지점이 4단계다. 확장 파티션만 만들고 활성 파티션 지정을 건너뛰면 부팅이 되지 않는다. 그리고 FDISK를 빠져나온 직후에는 새 드라이브 문자가 아직 잡히지 않으므로, 재부팅 전에 FORMAT을 시도하면 드라이브를 찾지 못한다. FDISK 메뉴 문구는 OEM판에 따라 조금씩 다르다.

3. 1.44MB 매체 지원과 FORMAT 스위치

3.5인치 매체 지원은 버전별로 헷갈리기 쉬운 부분이다. 마이크로소프트 KB 문서 Q75131의 표를 기준으로 정리하면 720KB는 MS-DOS 3.20, 1.44MB는 MS-DOS 3.30, 2.88MB는 5.00이다. 즉 3.5인치 자체는 3.2에서 들어왔고, 1.44MB 고밀도 매체가 3.3에서 붙었다.

매체 크기를 /F:로 지정하는 방식은 4.0에서 추가됐다. 3.3에서는 트랙 수와 트랙당 섹터 수를 직접 지정한다. 이 /T/N은 3.2에서 들어온 스위치다.

REM 1.44MB 드라이브에서 720KB로 포맷
C:\>FORMAT A: /T:80 /N:9

REM 1.2MB 드라이브에서 360KB로 포맷
C:\>FORMAT A: /4

그래서 3.3 환경에 FORMAT A: /F:1.44를 그대로 입력하면 스위치를 인식하지 못한다. 옛 배치 파일을 3.3로 옮길 때 자주 만나는 실패 지점이다. 외장 드라이브를 DRIVER.SYS로 붙이는 경우에는 매개변수 번호를 쓰며, Q75131 표에서 1.44MB에 해당하는 값은 /F:7이다.

4. 3.3에서 새로 들어온 명령과 MS-DOS에 편입된 명령

여기도 구분이 필요하다. 3.3 시점에 처음 생긴 명령과, PC-DOS에만 있던 것이 MS-DOS로 넘어온 명령이 섞여 있다. MS-DOS Encyclopedia 부록 A와 pcdosretro 명령 목록을 대조하면 이렇게 갈린다.

3.3에서 새로 생긴 명령

  • CALL: 배치 파일에서 다른 배치 파일을 호출하고, 끝나면 원래 배치 파일의 다음 줄로 돌아온다. 내부 명령이다. 이전에는 COMMAND /C를 써서 우회했다.
  • FASTOPEN: 파일 위치를 메모리에 캐시해 파일 접근을 줄인다.
  • CHCP: 코드 페이지를 바꾼다. 내부 명령이다.
  • NLSFUNC: 국가별 정보와 코드 페이지 전환 기능을 올린다.
  • KEYB: 키보드 배열을 지정한다. 이전에는 KEYBUK, KEYBGR처럼 국가별로 별도 파일이었고, 3.3에서 하나의 범용 유틸리티로 합쳐졌다.

MS-DOS에 편입된 명령

  • COMP: 두 파일을 비교해 차이를 보고한다. PC-DOS 1.0부터 있던 명령이고 MS-DOS에는 3.3에서 들어왔다.
  • SELECT: 국가별 시간, 날짜 형식과 키보드 배열이 설정된 시스템 디스크를 만든다. PC-DOS에 먼저 있던 명령이며 MS-DOS에는 3.3에서 편입됐다. 최초 도입 버전 표기는 자료마다 다르다(pcdosretro는 PC DOS 3.0으로 적는다).
  • APPEND: MS-DOS 계열에서는 3.2부터 있고, PC DOS에서는 3.3이 처음이다. 3.3에서 /E/X 두 스위치가 붙었다.

3.3 소개 글에서 XCOPY를 3.3 신규로 적는 경우도 보이는데, XCOPYREPLACE는 3.2에서 들어온 명령이다. 3.3에서는 APPEND, ATTRIB, BACKUP, FDISK, MODE가 기능을 더 받았다.

5. FASTOPEN 사용법과 주의점

FASTOPEN은 디렉터리 엔트리 위치를 메모리에 들고 있으면서 같은 파일을 다시 열 때 디렉터리 탐색을 줄이는 상주 프로그램이다. 하드디스크에 디렉터리를 깊게 파 놓은 환경에서 체감이 생긴다.

C:\>FASTOPEN C:=100

엔트리 수는 10부터 999까지 지정할 수 있고, 생략하면 34다. 드라이브를 여러 개 지정하는 경우 값의 합이 999를 넘을 수 없다. 상주 프로그램이라 한 번 올리면 재부팅 없이 내릴 수 없으므로, 실제로는 AUTOEXEC.BAT에 한 줄 넣어 두고 쓴다.

주의할 점은 디스크 조각 모음 계열 도구와 같이 쓰지 않는 것이다. 캐시가 들고 있는 위치 정보와 실제 디스크 배치가 어긋나면 데이터가 깨질 수 있다. 이 경고 문구 자체는 MS-DOS 6.22 도움말의 FASTOPEN 항목에 나온다. 3.3 시점에는 마이크로소프트가 조각 모음 도구를 제공하지 않았으므로, 3.3 매뉴얼에서 같은 문장을 찾으려 하면 확인되지 않는다. 6.22 도움말은 기본값과 파티션 개수 제한도 3.3과 다른 숫자로 적으므로 그대로 옮기지 않는 편이 좋다.

6. APPEND로 데이터 파일 경로를 잡는다

PATH가 실행 파일을 찾는 경로라면, APPEND는 데이터 파일을 찾는 경로다. 프로그램이 자기 디렉터리에서만 오버레이나 설정 파일을 찾도록 만들어져 있을 때 쓰인다.

C:\>APPEND C:\DAT;C:\LIB
C:\>APPEND
APPEND=C:\DAT;C:\LIB

3.3에서 추가된 /E는 경로 목록을 환경 변수에 저장해 SET으로 확인, 변경할 수 있게 한다. /X는 DOS의 파일 찾기 계열 함수 호출에도 APPEND 경로를 적용하는 옵션이다. 적용 범위가 넓어지므로 예상하지 못한 디렉터리의 파일이 잡힐 수 있다. 문제가 생기면 /X를 먼저 떼고 재현해 보는 것이 진단에 편하다.

7. 에뮬레이터로 3.3을 돌려보는 방법

DOSBox: 실제 커널을 부팅해야 한다

DOSBox는 실제 DOS 커널이 아니라 자체 DOS 호환 계층을 쓴다. 기본 셸이 보고하는 DOS 버전은 3.30이 아니고, VER SET으로 바꿀 수 있는 것은 보고 값뿐이다.

Z:\>VER SET 3 30

3.3의 실제 동작, 예를 들어 FORMAT /F:1.44가 거부되는지, FDISK 화면이 어떻게 생겼는지를 보려면 부팅 이미지를 올려야 한다. DOSBox의 BOOT 명령 구문은 다음과 같다.

BOOT [diskimg1.img diskimg2.img .. diskimgN.img] [-l driveletter]

Z:\>boot msdos330.img
Z:\>boot -l c

기본 부팅 드라이브는 A다. 마스터로 붙인 하드디스크 이미지에서 부팅하려면 -l C, 슬레이브면 -l D를 준다. 플로피 이미지를 여럿 지정한 경우 CTRL-F4로 교체한다.

부팅한 뒤에는 DOSBox가 자기 DOS 계층을 내려놓기 때문에, MOUNT로 붙여 둔 호스트 디렉터리는 더 이상 보이지 않는다. 처음에 이걸 모르고 호스트 폴더에 파일을 넣어 두고 찾다가 시간을 버리기 쉽다. 파일을 안으로 넣어야 하면 디스크 이미지 자체에 넣어서 올린다. DOSBox-X는 옛 DOS 버전 설치 안내가 위키에 정리돼 있어 이 작업이 조금 수월하다.

86Box, PCem: 파티션 실습에는 이쪽이 맞다

FDISK로 확장 파티션을 만들고 논리 드라이브를 잡는 실습은 하드웨어 단위를 흉내내는 에뮬레이터가 적합하다. 86Box는 실기에서 뜬 ROM 덤프가 있어야 동작한다. 공식 문서는 ROM 세트 없이 실행하면 오류를 내고 종료한다고 적는다. 파일 이름과 위치가 에뮬레이터에 하드코딩돼 있으므로 임의로 바꾸면 인식되지 않는다.

  1. 86Box와 ROM 세트를 각각 받아 roms 디렉터리에 풀어 둔다. 별도 경로를 쓰려면 -R 또는 --rompath로 지정한다.
  2. 머신을 286급으로 설정한다. 3.3은 PS/2 라인과 같은 시기의 제품이라 이 세대 구성에서 자연스럽다.
  3. 하드디스크 이미지를 새로 만들어 붙이고, 3.3 부팅 플로피 이미지를 A에 마운트한다.
  4. FDISK, 재부팅, FORMAT 순서로 위 2절 절차를 그대로 밟는다.

부팅되면 버전을 먼저 확인한다.

C:\>VER

MS-DOS Version 3.30

디스크 이미지는 archive.org에 올라온 스캔과 이미지, winworldpc의 MS-DOS 3.x 항목에서 찾을 수 있다. winworldpc는 MS-DOS 3.30이 1.44MB 플로피와 확장 파티션 지원을 추가했고 널리 쓰인 버전이라고 설명한다. 각 배포처가 안내하는 이용 조건을 확인하고 쓴다.

3.3 디스크에 들어 있는 대표 파일

이미지를 올린 뒤 DIR로 확인해 보면 3.3 특유의 파일이 눈에 띈다. OEM판마다 구성이 다르므로 목록 전체가 항상 같지는 않다.

  • FASTOPEN.EXE, APPEND.EXE, NLSFUNC.EXE, KEYB.COM: 3.3에서 추가되거나 정리된 유틸리티
  • COUNTRY.SYS, KEYBOARD.SYS: 국가별 설정과 키보드 배열 데이터
  • DISPLAY.SYS, PRINTER.SYS, 코드 페이지 파일(.CPI): 코드 페이지 전환용
  • FDISK.COM, FORMAT.COM, BACKUP.COM, RESTORE.COM: 3.3에서 FDISK, BACKUP, RESTORE는 C로 다시 작성됐다

8. 3.3이 오래 쓰인 배경과 4.0

3.3은 발표 후 상당히 오래 현장에 남았다. IBM은 1991년에 철수를 발표했다가 1992년에 이를 되돌렸고, 발표 5년이 지난 시점에 이 제품을 업계 표준 중 하나로 여겨지는 운영체제라고 설명했다.

다음 세대인 4.0은 1988년 7월에 나왔다. DOS Shell과 EMS 4.0 활용, 2GB까지 늘어난 하드디스크 지원, FORMAT /F가 이때 들어왔고, 32MB를 넘는 하드디스크에서 FCB 연산을 위해 SHARE가 올라가는 변화도 있었다. 기능은 늘었지만 메모리 사용이 커지고 초기 판에 문제가 보고되면서, 3.3에 머무는 선택도 적지 않았다. 32MB 상한만 풀고 싶은 경우에는 1987년 11월 Compaq MS-DOS 3.31이 먼저 답을 냈지만 공급 대상이 특정 장비로 한정돼 있었다.

9. 정리

3.3을 다룰 때 틀리기 쉬운 값을 다시 모으면 이렇게 된다. 1987년 4월 2일은 IBM PC DOS 3.3의 발표일이고, 마이크로소프트 MS-DOS 3.30은 위키백과 버전 표 기준 1988년 2월이다. 720KB는 3.2, 1.44MB는 3.3이며 /F: 스위치는 4.0이다. FAT16 32MB 상한은 3.0부터의 값이고, 3.3의 확장 파티션은 그 32MB 논리 드라이브를 여럿 두는 방식으로 큰 디스크를 소화한다.

소스 코드를 직접 읽으려는 경우 마이크로소프트 공식 저장소에는 3.3이 없다. README는 이 저장소가 MS-DOS v1.25와 v2.0의 소스와 바이너리, 그리고 IBM과 공동 개발한 v4.00의 소스를 담고 있다고 적는다. 3.3의 동작을 확인하려면 결국 위 절차대로 에뮬레이터에 올려 보는 것이 가장 빠르다.

자주 묻는 질문

MS-DOS 3.3의 발표 시점은 1987년인가 1988년인가?

두 제품을 구분해야 한다. 1987년 4월 2일 발표된 것은 IBM이 단독 개발한 PC DOS 3.3이고, IBM PS/2 라인과 같은 시기였다. 마이크로소프트 브랜드의 MS-DOS 3.30은 위키백과 MS-DOS 버전 표에 1988년 2월로 기재돼 있다. 위키백과 DOS 타임라인에서 1987년 4월 항목은 PC DOS 3.3(IBM)으로만 존재하고 MS-DOS 3.3 행은 따로 없다. 자료에 따라 두 제품을 한 줄로 묶어 적는 경우가 있으므로, 날짜를 인용할 때 어느 제품인지 함께 적는 것이 좋다.

확장 파티션을 쓰면 32MB 제한이 사라지는가?

사라지지 않는다. 3.3의 확장 파티션은 논리 드라이브를 여러 개 만들 수 있게 해 주지만, 논리 드라이브 하나의 상한은 32MB로 남는다. Epson OEM의 MS-DOS 3.3 레퍼런스 매뉴얼도 확장 DOS 파티션이 각각 32MB까지인 논리 드라이브 여러 개를 담을 수 있다고 적는다. 32MB를 넘는 단일 파티션은 1987년 11월 Compaq MS-DOS 3.31(파티션 타입 06h, 32비트 섹터 수)에서 먼저 지원됐고, 일반 배포판에서는 4.0부터다.

3.3에서 FORMAT으로 720KB 디스켓을 만들려면 어떻게 하는가?

3.3에는 매체 크기를 지정하는 /F: 스위치가 없다. /F:는 4.0에서 추가됐다. 3.3에서는 3.2에서 들어온 /T와 /N을 써서 트랙 수와 트랙당 섹터 수를 직접 지정한다. 1.44MB 드라이브에서 720KB로 포맷하려면 FORMAT A: /T:80 /N:9 형태로 입력한다. 1.2MB 드라이브에서 360KB 디스켓을 만들 때는 /4를 쓴다.

CALL과 FASTOPEN은 3.3에서 처음 나온 명령인가?

CALL, FASTOPEN, CHCP, NLSFUNC, KEYB는 3.3에서 새로 들어왔다. 반면 COMP와 SELECT는 PC-DOS에 먼저 있던 명령이 MS-DOS 3.3에 편입된 것이고, APPEND는 MS-DOS 계열에서는 3.2부터 존재하며 PC DOS에서만 3.3이 처음이다. XCOPY와 REPLACE는 3.2에서 추가된 명령이므로 3.3 신규로 적으면 틀린다.

DOSBox에서 MS-DOS 3.3을 그대로 쓸 수 있는가?

DOSBox의 기본 셸은 실제 DOS 커널이 아니라 자체 DOS 호환 계층이다. VER SET 3 30은 보고하는 버전 값만 바꾸므로 3.3의 실제 동작 차이는 재현되지 않는다. 3.3 커널을 쓰려면 부팅 이미지를 준비해 boot msdos330.img 형태로 올린다. 하드디스크 이미지에서 부팅하려면 boot -l c를 쓴다. 부팅 후에는 MOUNT로 붙인 호스트 디렉터리가 보이지 않으므로 파일은 디스크 이미지 안에 넣어 둔다. FDISK로 확장 파티션을 실습하려면 ROM 세트가 필요한 86Box나 PCem이 적합하다.

관련 글

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.