Apple Silicon Mac에 Linux 포팅: 하드웨어 리버스 엔지니어링과 USB 지원

39C3 - Asahi Linux - Porting Linux to Apple Silicon

작성자
jeff
발행일
2026년 01월 10일

핵심 요약

  • 1 Asahi Linux 프로젝트는 Apple Silicon Mac에 Linux를 포팅하기 위해 복잡한 하드웨어 리버스 엔지니어링 도구와 방법론을 구축했습니다.
  • 2 m1n1 프록시 및 동적 MMIO 트레이싱을 통해 문서화되지 않은 하드웨어의 동작을 파악하고, 이를 바탕으로 USB, DisplayPort 등 핵심 드라이버를 개발했습니다.
  • 3 USB-C 포트의 복잡한 프로토콜 지원과 Apple의 독특한 하드웨어 초기화 로직을 해결하여 USB 1/2/3 및 DisplayPort 지원을 구현하고 커널 업스트림을 진행 중입니다.

도입

본 발표는 Apple Silicon Mac에 Linux를 포팅하는 Asahi Linux 프로젝트의 여정을 다룹니다. 2020년 Apple의 ARM 기반 칩 전환 발표 이후, Markian은 Linux 포팅을 목표로 프로젝트를 시작했으며, Apple이 의도적으로 사용자에게 커스텀 코드 실행을 허용하는 'one true recovery' 모드를 활용하여 높은 권한으로 부팅할 수 있음을 확인했습니다. 하지만 하드웨어에 대한 문서가 전혀 없다는 근본적인 문제에 직면했고, 이를 해결하기 위한 독창적인 리버스 엔지니어링 도구와 방법론 개발이 프로젝트의 핵심 과제가 되었습니다.

하드웨어 리버스 엔지니어링 방법론

Apple Silicon 하드웨어는 문서화되어 있지 않기 때문에, Asahi Linux 팀은 m1n1이라는 소형 C 애플리케이션을 개발하여 UART를 통한 Python 셸 프록시를 제공했습니다. 이 도구를 통해 개발자들은 타겟 장치의 하드웨어 레지스터를 실시간으로 조작하고 결과를 확인할 수 있어, 드라이버 프로토타이핑 및 디버깅 시간을 획기적으로 단축했습니다.

더 복잡한 하드웨어(예: GPU)의 경우, m1n1을 하이퍼바이저로 활용하여 Apple의 운영체제인 XNU를 가상 머신 내에서 실행하는 ‘동적 트레이싱’ 기법을 사용했습니다. 이를 통해 XNU가 하드웨어(MMIO)에 접근하는 모든 동작을 로깅하고 분석하여, 어떤 레지스터가 어떤 역할을 하는지 점진적으로 파악하고 드라이버를 개발할 수 있었습니다. 이는 소프트웨어의 strace와 유사하게 하드웨어의 동작을 추적하는 효과적인 방법입니다.

USB 포트 리버스 엔지니어링 과정

USB 포트 지원은 특히 복잡한 과제였습니다. USB 1/2/3, USB4(Thunderbolt 기반), DisplayPort 등 여러 프로토콜이 USB-C 커넥터를 통해 지원되어야 하기 때문입니다. 하드웨어적으로는 USB 2를 위한 별도 레인, 고속 데이터 전송을 위한 SSTX/RX 레인, 그리고 프로토콜 및 전력 협상을 위한 CC 라인과 USB Power Delivery (PD) 컨트롤러가 필요합니다.

발표자는 Synopsys DesignWare 컨트롤러 v3를 사용하고 있음을 파악하고, 공개된 데이터시트 및 Linux 드라이버를 참조하여 USB 2 가젯 모드를 구현했습니다. 그러나 초기에는 USB 장치를 한 번 연결하면 다음 연결 시 작동하지 않는 문제가 발생했습니다. XNU의 동작을 트레이싱한 결과, USB 장치 분리 시 Apple의 컨트롤러가 전체 USB 컨트롤러와 포트를 하드 리셋하고 클럭을 게이팅(완전히 전원을 끔)하는 것을 발견했습니다. 이는 컨트롤러가 한 번 초기화되면 다시 초기화될 수 없다는 설계 때문이었으며, 매번 장치 분리 시 전체 시스템을 재설정하는 로직을 Linux 드라이버에 구현하여 이 문제를 해결했습니다.

이러한 과정을 통해 USB 3 지원이 Linux 커널에 업스트림되었으며, 최근에는 DisplayPort 지원도 개발자용으로 공개되어 외부 디스플레이 연결이 가능해졌습니다. 이는 Yan의 노력으로 이루어진 큰 성과입니다.

M3, M4, M5 칩 지원 현황 및 과제

현재 프로젝트는 기존 드라이버의 업스트림에 집중하고 있지만, M3, M4, M5 칩에 대한 지원도 진행 중입니다. M1과 M2, M3 간의 하드웨어 변경 사항은 대부분 미미하여 기존 드라이버를 기반으로 포팅이 비교적 수월합니다. 그러나 GPU는 지속적인 혁신이 이루어지는 부분으로, M3 GPU 지원에는 상당한 작업이 필요할 것으로 예상됩니다. 최근 새로운 기여자가 M3 Max에서 기본적인 부팅 및 스토리지 작동을 성공시켰습니다.

M4 및 M5 칩에서는 Apple이 ‘guarded levels’라는 새로운 ARM 확장 기능을 도입하여, 기존의 XNU 가상화 및 MMIO 트레이싱 도구를 사용할 수 없게 되었습니다. 이는 리버스 엔지니어링 과정을 훨씬 어렵게 만들지만, Apple은 여전히 ‘raw boot objects’를 통해 사용자가 커스텀 코드를 EL2(최고 권한 레벨)에서 실행할 수 있도록 허용하고 있어 Linux 포팅 자체는 여전히 가능합니다. 다만, 새로운 리버스 엔지니어링 접근 방식이 필요합니다.

결론

Asahi Linux 프로젝트는 Apple Silicon Mac에 Linux를 성공적으로 포팅하기 위해 커뮤니티의 협력과 혁신적인 리버스 엔지니어링 도구 개발에 크게 의존하고 있습니다. Apple이 의도적으로 제공하는 오픈 부팅 메커니즘 덕분에 이러한 작업이 가능했으며, 수많은 하드웨어 드라이버를 개발하고 Linux 커널에 업스트림함으로써 기술적 부채를 해소하고 있습니다. USB-C 포트의 복잡한 기능(USB 1/2/3, DisplayPort)을 지원하기 위한 상세한 리버스 엔지니어링 과정은 이러한 노력의 대표적인 예시입니다. M3 칩 지원이 시작되었고, M4/M5 칩의 새로운 과제에도 불구하고 프로젝트는 지속적인 발전을 이루고 있으며, 더 많은 기여자의 참여를 환영합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!