테크레시피

90년대 맥을 브라우저로 재현해주는 에뮬레이터

오픈소스 맥64K 에뮬레이터인 바실리스크II(Basilisk II)를 브라우저에서도 사용할 수 있도록 확장한 에뮬레이터인 인피니트 맥(Infinite Mac)이 등장했다.

최근 몇 년간 오래된 운영체제를 에뮬레이션하려는 시도가 인기를 얻고 있다. v86에선 다양한 오래된 운영체제를 브라우저에서 실행할 수 있다. 하지만 오래된 맥 에뮬레이션에 v86을 사용할 수 없었기 때문에 개발자는 이들을 현대 PC에서 에뮬레이션하는 데 적합한 방법을 조사했다고 한다. 가장 먼저 찾은 건 맥용 에뮬레이터로 유명한 바실리스크II다. 바실리스크II는 잘 작동했지만 ROM, 부팅 이미지 수집, 구성 파일 작업 같은 설정이 번거로웠다.

맥 에뮬레이터는 바실리스크II 뿐 아니라 PCE.js와 인터넷 아카이브 매킨토시 에뮬레이터, 레트로웹 빈티지 컴퓨터 뮤지엄(RetroWeb Vintage Computer Museum) 등 여러 가지가 있다. 하지만 아무도 1990년대 맥을 사용할 때의 감각을 재현할 수 없었다. 맥용 에뮬레이터는 단일 프로그램을 빠르게 시작하고 시도해보는 건 좋지만 한 번에 여러 프로그램을 실행할 수는 없다.

따라서 바실리스크II를 확장해 브라우저에서 맥OS 8을 실행할 수 있도록 한 게 인피니트 맥이다. 개발자는 에뮬레이터 기동 시간을 단축하기 위해 사용하는 디스크 이미지 다운로드에 걸리는 시간을 줄이는 걸 목표로 했다고 한다. 이상적인 건 브로틀리(Brotli)를 이용해 스토리지 내 데이터를 압축하거나 미사용 데이터를 삭제하거나 하는 것이지만 여기에는 문제가 있었던 것으로 보인다. 또 브로틀리를 이용해 스토리지 내 데이터를 압축하거나 미사용 데이터를 삭제하는 방법에는 다른 목표인 복수 프로그램을 동시에 실행하는 것과 호환성이 없도록 하는 것이라고 여겼다. 이유는 간단하고 부팅할 수 있는 소프트웨어를 많이 준비할수록 필요한 디스크 이미지 크기가 커지기 때문이다.

따라서 개발자는 디스크 이미지를 미리 다운로드하는 대신 온디맨드로 다운로드하는 방법으로 전환했다. 이를 통해 인피니트 맥은 파일 시스템에 대한 요청에서 로딩되지 않은 걸 감지하면 네트워크를 통해 필요한 것만 다운로드하게 설계하는데 성공했다. 여기에 몇 가지 웹 최적화를 실시해 인피니트 맥은 기동 화면을 불과 1초만에 표시할 만큼 고속으로 동작하는 게 가능해졌다고 한다.

또 여러 맥용 소프트웨어가 설치된 디스크 이미지를 구축하기 위한 지속 가능하고 재현성 있는 방법을 요구하고 있었다고 한다. 바실리스크II 네이티브 버전을 시작하고 수동으로 복사할 수도 있지만 이 경우 다른 기본 운영체제에서 프로세스를 반복하고 싶은 경우 등에 모든 동작을 반복해야 한다. 이는 귀찮고 에러가 발생하기 쉬운 방법이기 때문에 개발자는 더 효과적인 방법을 모색했다. 따라서 그는 디스크 이미지를 구축하기 위해 도커파일(Dockerfile)을 이용했다. 또 각종 소프트웨어는 인터넷 아카이브에 디스크 이미지로 저장되어 있던 걸 machfs를 이용해 도커파일에 복사하거나 스터프핏(StuffIt0에 아카이브된 소프트웨어를 XAD마스터(XADMaster) 등을 이용해 압축을 풀고 복사해 구현하는 게 성공했다고 한다. 인피니트 맥 소스코드는 깃허브에 공개되어 있다. 관련 내용은 이곳에서 확인할 수 있다.

추천기사