테크레시피

M1 탑재 맥에서 윈도 작동시키려는 프로젝트

애플이 독자 개발한 SoC 시리즈인 애플 실리콘(Apple Silicon) 1탄으로 발표된 M1은 PC용 프로세서로는 처음으로 5nm 제조공정을 채택한 칩으로 미디어나 전문가로부터 컴퓨팅 혁명 적어도 지난 10년간 맥 하드웨어에서 가장 큰 도약이라고까지 평가됐다. 이런 M1은 당연히 맥OS 동작이 최적화되고 있지만 이런 M1으로 윈도를 실행하는 걸 목표로 하는 프로젝트인 M1 윈도(M1 Windows)가 시작됐다.

M1은 퀄컴이나 미디어텍 같은 기업 칩과는 아키텍처가 크게 다르기 때문에 M1 탑재 맥에서 맥OS 이외 운영체제를 작동시키는 건 쉽지 않다. 하지만 이미 M1 탑재 맥에서 리눅스를 실행하는 걸 목표로 한 아사히 리눅스(Asahi Linux) 개발 프로젝트가 진행되고 있으며 2022년 3월에는 퍼블릭 알파 버전이 나왔다.

또 M1에 내장된 GPU를 리버스 엔지니어링해 드라이버를 오픈소스로 개발하려는 시도도 진행되고 있다. M1 윈도 주최자인 맷 그레이엄은 M1에 대한 분석이 진행되면서 윈도를 M1 탑재 맥에서 작동시킬 가능성이 높아지고 있다고 밝히고 있다. 그에 따르면 M1 환경 하에서 윈도 동작을 어렵게 하고 있는 건 인터럽트 컨트롤러와 IOMMU 페이지 사이즈 2개다. 그 중에서도 인터럽트 컨트롤러 문제에 대해선 멀티태스킹 운영체제인 윈도가 제대로 작동하려면 아무래도 해결해야 한다.

M1에는 AIC(Apple Interrupt Controller)라는 독자 인터럽트 컨트롤러가 구현되고 있어 ARM64판 윈도 커널은 이 AIC 지원을 구현하고 있지 않다. 인터럽트 자체는 멀티태스킹 운영체제 기본이 되기 때문에 AIC 지원이 없으면 M1 탑재 맥에서 윈도를 만족스럽게 동작시키는 건 불가능하다.

그레이어에 따르면 M1 칩에는 ARM 프로세서용 범용 인터럽트 컨트롤러 버전3(GICv3) 일부를 운영체제로 가상화해 더 빠른 인터럽트 처리를 가능하게 하는 기능이 있기 때문에 예외 레벨2(EL2)에선 경량 하이퍼바이저를 이용해 물리 인터럽트를 처리해 예외1로 동작하고 있는 윈도에 라우팅하는 방법이 생각된다고 한다. 그래서 아사히 리눅스 프로젝트에서 개발된 맥OS 운영체제 커널인 XNU와 리눅스 부트 에코시스템 교대를 담당하는 부트 로더 m1n1을 하이퍼바이저로 해 EL1 UEFI 펌웨어를 시작하고 윈도도 시작할 수 있게 하고 싶다고 밝히고 있다.

다만 m1n1을 사용해 가상 GICv3을 구현하려고 해도 완전히 문제가 해결될 수는 없어 어마루대 에러가 발생해 버린다고 한다. 그레이엄은 하이퍼바이저에 사용하는 m1n1 개발을 진행하면 에러를 해소할 수 있을지도 모른다고 생각하고 있다. 현재 그는 m1n1 포크를 진행하는 동시에 UEFI 코어 오픈 소스판(Project Mu)을 M1 환경용으로 컴파일하는 작업도 실시하고 있다고 한다. 관련 내용은 이곳에서 확인할 수 있다.

추천기사