Asahi Linux 7.1 진행 보고서

Asahi Linux 7.1 진행 보고서

Asahi Linux 7.1 개요

Asahi Linux 7.1은 M3 시리즈에 대한 하드웨어 지원 확대, macOS 27 개발자 베타에서 도입된 중요한 부팅 및 전원 문제 해결, 그리고 하드웨어 비디오 디코딩을 위한 맞춤형 펌웨어 접근 방식을 구현하는 데 중점을 두고 있습니다.

macOS 27 호환성 및 부팅 수정

macOS 27은 APFS 메타데이터에 변화를 주어 Asahi Linux 설치가 부팅 선택기에 표시되지 않게 만들었습니다.

Apple의 부팅 도구는 부팅 가능한 볼륨을 인식하기 위해 APFS 컨테이너 내에 "유효한" macOS 설치가 있어야 합니다. Asahi Linux는 커널 역할을 하는 m1n1이 들어 있는 2.5 GB 크기의 작은 APFS 컨테이너를 사용해 Apple 도구를 속입니다. macOS 27에서는 Apple이 APFS 메타데이터에 특정 부팅 플래그를 강제 적용하기 시작했으며, 이 플래그가 설정되지 않으면 해당 볼륨은 Startup Disk 애플리케이션과 부팅 선택기에서 숨겨집니다.

이를 해결하기 위해 Asahi Installer는 이제 새 설치 시 자동으로 이 플래그를 설정합니다. macOS 27 베타로 인해 영향을 받은 기존 설치의 경우 사용자는 다음을 수행할 수 있습니다:

  1. Asahi Installer를 다시 실행하고 "Fix macOS 27 boot picker compatibility" 옵션을 선택합니다.
  2. chaos_princess가 개발한 독립 실행형 도구(GitHub AsahiLinux/asahi-fix27에서 제공)를 사용해 Linux 내부에서 문제를 수정합니다. 단, macOS 27으로 업그레이드하기 전에 실행해야 합니다.

SMC 펌웨어 및 긴급 종료

macOS 27에서 시스템 관리 컨트롤러(SMC) 펌웨어가 변경되어 Asahi Linux에서 긴급 종료가 발생합니다.

macOS 27은 SMC 펌웨어를 업데이트하면서 배터리 관리 인터페이스가 32비트 정수에서 단일 바이트로 반환하도록 변경했습니다. 이 ABI 변화로 인해 Linux 전원 공급 드라이버가 배터리 상태를 오류로 오해하여 시스템을 보호하기 위해 긴급 종료를 트리거했습니다. 이 문제는 7.0.12 버전부터 시작되는 하위 커널에서 패치되어 두 가지 펌웨어 ABI를 모두 지원합니다.

M3 시리즈 하드웨어 지원

Asahi Linux는 M3, M3 Pro, M3 Max, M3 Ultra SoC에 대한 상당한 진전을 이루었으며, 여러 핵심 구성 요소가 이제 작동합니다.

Apple이 M1 이후 여러 하드웨어 블록에서 일관성을 유지했기 때문에 대부분의 M3 지원은 Devicetree 추가와 설정 파일을 통해 구현되었습니다. 주요 성과는 다음과 같습니다:

  • 고품질 오디오: 동일한 I2S 컨트롤러, 수치 제어 발진기(NCO), 앰프 칩을 사용하므로 M3 기기에서 스피커와 헤드폰 잭 지원이 이제 작동합니다.
  • CPU 관리: CPU 주파수 전환 및 big.LITTLE 작업 스케줄링 지원이 활성화되어 에너지 효율과 성능이 모두 향상되었습니다.
  • 하드웨어 센서: Devicetree 변경을 통해 SMC 하드웨어 센서가 이제 작동합니다.
  • 핵심 SoC 블록: PCIe, Wi‑Fi, Bluetooth, NVMe, 키보드 및 트랙패드 드라이버가 M3 시리즈 기기에서 이제 동작합니다.

Apple Video Decoder (AVD) 및 맞춤형 펌웨어

Asahi Linux는 Apple Video Decoder(AVD)에 대한 맞춤형 펌웨어 솔루션을 구현하여 Apple의 독점 kext에 대한 의존성을 없애고 있습니다.

AVD는 AVC(H.264), HEVC(H.265), VP9, AV1 디코딩을 담당하는 고정 기능 하드웨어를 관리하는 ARM Cortex‑M3 코어입니다. Apple은 SoC마다 다른 펌웨어와 설정 데이터를 AVD 커널 확장(kext) 내부에 번들링합니다. 각 SoC 리비전에 대해 kext에서 펌웨어를 추출하고 업데이트하는 번거로움을 피하기 위해 Asahi 팀은 자체 펌웨어를 작성하고 있습니다.

Cortex‑M3는 실행되는 펌웨어를 검증하지 않으므로, 팀은 인터럽트 핸들러를 설치하고 각 AVD 리비전에 필요한 튜너블을 적용하는 맞춤형 블롭을 개발했습니다. 이 접근 방식으로 AVC 하드웨어용 V4L2 드라이버가 작동하게 되었으며, 10‑bit AVC 인코딩 비디오를 최대 4K 해상도까지 지원합니다. 향후 작업으로 VP9, HEVC, AV1 지원 구현이 예정되어 있습니다.

m1n1 버전 1.6.0 릴리스

m1n1 v1.6.0은 스테이지 2 빌드에 Rust가 필요하도록 하고 GPU 초기화를 부트로더로 이동시키는 주요 릴리스입니다.

m1n1 1.6.0의 주요 변경 사항은 다음과 같습니다:

  • Rust 통합: 스테이지 2 빌드에 이제 Rust가 필요합니다. Apple Device Tree 파싱 코드는 Rust로 포팅되었으며, 부트로더는 aarch64-none-softfloat를 목표로 하는 no_std Rust를 사용합니다.
  • GPU 초기화: GPU 초기화가 이제 커널 드라이버가 아니라 m1n1에서 처리됩니다. 이는 Devicetree 바인딩을 단순화하고 Apple 하드웨어 초기화 데이터에서 부동 소수점 값을 처리해야 하는 커널 드라이버의 필요성을 없앱니다.
  • M3 및 향후 지원: 이번 릴리스는 M3 시리즈 기기를 위한 SPMI 컨트롤러와 PCIe 초기화를 추가하고, 비‑macOS 부팅 모드와 전원 도메인 메타데이터 처리를 개선함으로써 M4 및 A18 Pro(MacBook Neo) 지원을 위한 기반을 마련합니다.

Sources