1987년 출시된 MINIX 1.1, 최신 시스템에서 부활하다!
1987년 출시된 MINIX 1.1을 최신 시스템에서 크로스 컴파일하는 방법을 제시
dev86 툴체인(Toolchain)을 활용하여 8086/8088 아키텍처 기반의 MINIX 1.1 빌드 환경 구축
K&R C 기반의 소스 코드와 PC-IX 어셈블리 문법을 지원하며, 과거 운영체제 개발 경험 제공
부팅 가능한 디스크 이미지 생성 및 파일 시스템 마운트 방법을 통해 실제 환경에서 MINIX 실행 가능
크로스 컴파일 환경 구축 및 툴체인(Toolchain) 활용
본 프로젝트는 dev86 툴체인(Toolchain)을 사용하여 MINIX 1.1을 현대 시스템에서 크로스 컴파일하는 방법을 제시한다. 특히, 8086/8088 아키텍처를 타겟으로 하는 Bruce Evans의 bcc/as86/ld86 툴을 활용하여, 구형 C 컴파일러와 어셈블러를 최신 환경에서 사용할 수 있도록 지원한다. make dev86 명령어를 통해 툴체인을 설정하고, source ./scripts/activate-shell 명령어를 통해 툴체인을 PATH에 추가하여 편리하게 사용할 수 있다.
MINIX 1.1 빌드 과정 및 디스크 이미지 생성
MINIX 1.1을 빌드하기 위해 make 명령어를 사용하며, 이는 libc, kernel, mm, fs, init, fsck, bootblok 등 MINIX의 각 부분을 빌드한다. make disk 명령어를 통해 360K 플로피 디스크 이미지를 생성하여, IBM PC/XT 또는 에뮬레이터에서 MINIX를 부팅할 수 있도록 한다. PC 에뮬레이터(Emulator)를 통해 과거 하드웨어 환경을 재현하고, MINIX 운영체제를 실행할 수 있다.
K&R C 기반 소스 코드와 링커 설정
MINIX 1.1은 K&R C로 작성되었으며, 현대 컴파일러와 호환되지 않는 구형 문법을 사용한다. ld86 링커(Linker)를 사용하여 실행 파일을 생성할 때, ctrso.o를 텍스트 세그먼트의 시작 주소에 위치시켜야 한다. 또한, 링커 옵션 -H 0xFFFF를 사용하여 초기 스택 주소를 설정한다. 이러한 설정은 MINIX C 컴파일러의 동작을 모방하기 위한 것으로, 과거 운영체제 개발 환경을 재현하는 데 중요한 역할을 한다.
MINIX 파일 시스템 마운트 및 활용
생성된 MINIX 디스크 이미지는 Linux의 mount 명령을 사용하여 파일 시스템을 마운트할 수 있다. sudo mount -t minix ./some_minix_disk.img /mnt 명령어를 통해 MINIX 파일 시스템에 접근하여, 파일을 복사하거나 수정할 수 있다. 이러한 기능을 통해, 개발자들은 MINIX 운영체제 내부를 탐구하고, 과거 운영체제 개발 환경을 경험할 수 있다. 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 안전하게 파일 시스템을 탐색할 수 있다.