아사히 리눅스 개발팀이 애플의 최신 M4 칩 기반 맥에서 모든 CPU 코어를 사용해 리눅스를 셸(shell)까지 부팅하는 데 성공했습니다. 이는 M1부터 M3 칩에서 리눅스를 구동해 온 아사히 리눅스 프로젝트의 중요한 이정표이며, 관련 수정 사항은 리눅스 본류와 아사히 리눅스의 부팅 도구인 m1n1에 이미 반영되었습니다.
이번 성공의 핵심 난관은 M4 칩의 독특한 동작 방식이었습니다. 특히, 인터럽트를 기다리는 'WFI(Wait For Interrupt)' 명령이 CPU 레지스터의 값을 지워버리는 현상이 발생했는데, 이는 이전 M1~M3 칩에서는 제어할 수 있었던 부분입니다. 하지만 M4에서는 기존 방식이 통하지 않아 부팅조차 되지 않는 문제가 있었습니다. 개발팀은 문자 하나를 출력하는 'debug_putc' 코드를 활용해 문제 지점을 좁혀갔고, 메모리 매핑, 잠긴 레지스터, 콘솔 설정 등 여러 문제를 해결했습니다. 최종적으로는 문제가 있는 기기에서 WFI 명령 사용을 끄는 부팅 인자를 추가하는 방식으로 해결했으며, 이 우회책은 M4 Pro, M4 Max, 그리고 향후 M5 칩에서도 작동할 것으로 예상됩니다. M4 칩은 macOS의 XNU 커널 취약점 방어를 강화하는 SPTM(Secure Page Table Monitor)을 의무화한 첫 애플 실리콘 세대라는 점도 초기 부팅 작업의 난이도를 높였습니다.
이번 성과는 애플 실리콘 맥에서 리눅스를 활용하려는 사용자들에게 희소식입니다. 비록 아직 카메라, 디스플레이, GPU 등 주변 장치 지원은 추가 작업이 필요하지만, 모든 코어를 활용한 셸 부팅이 가능해졌다는 것은 큰 진전입니다. 이는 애플의 폐쇄적인 생태계 속에서 개방형 운영체제인 리눅스를 구동하려는 노력이 결실을 맺고 있음을 보여주며, 향후 애플 실리콘 기반 서버나 개발 환경 구축 등 다양한 활용 가능성을 열어줄 것으로 기대됩니다. 또한, 이러한 개방형 개발 노력은 애플의 하드웨어와 소프트웨어 통합 전략에 대한 논의를 다시금 촉발시키고 있습니다.