기타 Lobsters · 4일 전

M4 맥 미니에서 악전고투 끝에 리눅스 부팅 성공한 개발자 후기

핵심 요약
  • 한 개발자가 보안 구조가 대폭 강화된 M4 맥 미니에서 수개월간의 분석 끝에 리눅스 부팅에 성공했습니다.
  • SPTM 도입 및 잠긴 레지스터, MMU 주소 매핑 등 수많은 난관을 원초적인 'a' 문자 출력 디버깅 등으로 하나씩 뚫어낸 과정이 흥미를 끕니다.
  • 가상화 레지스터 우회 및 시리얼 콘솔 설정을 거쳐 최종적으로 리눅스 셸 진입까지 도달했습니다.
요약 애플 M4 맥 미니에서 리눅스 부팅을 성공시키기까지의 과정을 다룬 개발자의 삽질기입니다. 작성자는 2024년 11월 M4 맥 미니를 구매하고 이전 M1~M3 세대처럼 Asahi Linux 지원이 수월할 것으로 기대했으나, M4 칩에 도입된 강력한 커널 보안 기능인 SPTM(Secure Page Table Monitor) 때문에 초기 하이퍼바이저 기반 분석 작업부터 난관에 봉착했습니다. 결국 작성자는 하이퍼바이저 분석과 별개로 직접 M4에서 리눅스 부팅을 시도했습니다. 부팅 보안을 해제하고 m1n1 부트로더를 올린 뒤 시리얼 콘솔로 로그를 확인하려 했으나, M4 칩에서는 GXF 기능이 잠겨 있어 크래시가 발생했고 각 코어의 시작 주소를 지정하는 RVBAR 레지스터 쓰기에서도 충돌이 발생해 이를 건너뛰는 수정을 거쳐야 했습니다. 이후 한동안 방치하다 2025년 말 Chaos Communication Congress 행사에서 다시 동기부여를 얻어 작업을 재개했습니다. 최소한의 디바이스 트리를 구성하고 리눅스 커널을 올렸지만 아무런 출력도 나오지 않자, 어셈블리 루틴을 활용해 'a' 문자 하나를 출력하는 원초적인 디버깅 방식으로 문제 지점을 좁혀나갔습니다. 확인 결과 MMU(메모리 관리 장치) 활성화 후 가상 주소 매핑 문제로 UART 시리얼 콘솔 접근이 끊겼던 것이었고, 이를 1:1 매핑으로 해결하자 부팅이 더 진행되었습니다. 이어 가상화 관련 CPU 특정 레지스터 쓰기에서 발생하던 크래시를 우회하자 마침내 리눅스 셸 진입에 성공했습니다. 추가로 디바이스 트리에 빠져 있던 시리얼 콘솔 설정을 보완해 스택 추적 로그를 확보했으며, 보조 코어 활성화와 WFI 명령어 관련 이슈를 해결해 나가는 개발 여정을 상세히 공유했습니다.
Sponsored · 광고