애플 자체 노트북 실리콘칩 M1에서 구동하는 리눅스 프로젝트가 기본적인 데스크톱 환경을 제공하는 수준으로 발전했다. 아직 미완성인 GPU 가속과 차세대 애플 실리콘 지원을 목표로 발전하는 중이다.
외신에 따르면, 헥터 마틴을 포함한 아사히 리눅스 프로젝트 개발팀은 6일(현지시간) 게재한 진행보고서에서 "현 시점에서 아사히 리눅스는 기본 리눅스 데스크톱으로 사용할 수 있다"며 "GPU 가속은 없지만, 지금가지 안정적인 모습을 보이고 있다"고 밝혔다.
아사히 리눅스는 2020년 12월 애플의 M1 맥에 쉽게 설치할 수 있는 리눅스 데스크톱 배포판을 목표로 시작됐다. IT 보안 컨설턴트인 헥터 마틴이 프로젝트를 시작했고, 아치 리눅스 ARM 배포판을 기반으로 작성되고 있다.
M1은 기본적으로 ARM 아키텍처를 기반으로 하지만 애플의 독자적인 기술을 다수 내장하기에 기존의 커널과 드라이버를 사용할 수 없다.
아사히 리눅스 개발팀은 올해초 가장 낮은 수준의 드라이버를 커널에 병합했다. 그러나 이를 사용 가능하게 하려면 더 많은 작업을 필요로 한다고 개발팀 측은 설명했다. 개발팀에 의하면, 지난 9월 여러 중요 드라이버가 현재 검토중이거나 리눅스 5.16 용으로 이미 병합돼 상당 부분 진척됐다. 개발팀은 "아사히 리눅스 프로젝트의 목표는 모든 것을 리눅스 커널로 업스트림하는 것이므로, 모든 드라이버는 결국 업스트림 검토를 받게 된다"고 설명했다.
PCI 익스프레스 바인딩, PCI 익스프레스 드라이버, USB-C PD 드라이버 등의 병합이 이뤄졌다. 핀컨트롤 드라이버, I2C 드라이버, ASC 메일박스 드라이버, IOMMU 4K 패치, 장치 전원 관리 등이 다듬어져 검토 단계다. CPU 주파수 조정, RTKit 계층, NVMe+SART, DCP 등이 개발중이다.
개발팀은 애플의 SoC가 타사의 것과 다르다고 설명했다. 일반적인 SoC의 드라이버는 공개된 기본 하드웨어 정보에 기반해 정확한 레이아웃을 하드코딩한다. 레지스터수, 핀수, 서로 관련되는 방식 등 SoC 세대의 변화에 따라 수정된다.
반면, 애플은 SoC 세대 간 하드웨어 인터페이스가 호환되도록 유지하는데 중점을 둔다고 개발팀 측은 밝혔다. M1의 UART 하드웨어는 원래 아이폰 시절부터 이용됐는데, 이후 애플 실리콘에서도 변경없이 작동가능한 드라이버를 사용한다.
개발팀은 "이는 ARM64 세계에서 매우 흥미로운 기회"라며 "애플이 M1X, M2를 출시할 때까지 알 수 없지만, 최신 칩에서 리눅스를 부팅할 수 있는 충분한 드라이버 개발에 성공하면 새 하드웨어에서 이전 배포판 설치 프로그램을 부팅하는 것이 가능해진다"고 주장했다.
이어 "이는 X86에서 당연하게 여겨지는 일이지만 임베디드 세계에서 일반적으로 불가능하다"며 "우리가 이 머신에서 그것을 바꿀 수 있길 바란다"고 강조했다.
개발팀은 또한 "드라이버에 하드웨어 레이아웃을 하드코딩하는 대신 디바이스 트리에 의지해 해당 정보를 제공해야 한다"며 "이는 기본적으로 작동 방식을 변경하지 않고, 장치에서 장치로 변경되는 매개변수 부분"이라고 적었다.
일례로, 다른 SoC에서 장치 전원 관리 드라이버는 단일 장치를 구동하고 모든 온보드 장치에 대한 전원관리를 하드 코딩된 목록으로 제공한다. 대신 PMGR 드라이버는 관리해야 하는 모든 장치에 대해 실제로 인스턴스화되고 단일 레지스터를 제어한다. 그런 다음 장치 트리를 사용해 전원 도메인 간의 종속 관계를 동적으로 나타낼 수 있다. M1X, M2 등이 다른 수의 전력 관리 레지스터 배열을 갖더라도 각 레디스터가 동일 방식으로 작동하는 한 기본 드라이버를 계속 쓸 수 있게 된다.
현재 아사히 리눅스는 GPU 가속을 사용할 수 없다. 그럼에도 강력한 CPU 덕에 하드웨어 가속을 사용하는 락칩ARM64 기기보다 더 빠르다고 한다. 현 상황에서 개발자는 사용자 입장에서 배포판의 품질 테스트를 수행할 수 있다.
개발팀은 머지 않아 아사히 리눅스를 시험할 수 있는 공식 설치 프로그램을 제공하게 될 것이라고 밝혔다. 단, USB3, TB, 카메라, GPU, 오디오 등이 누락돼 있고, 와이파이 같은 요소의 현존 패치 세트를 묶기에 문제가 있다고 덧붙였다.
개발팀은 "안정적인 커널 기반이 마련되면 공식 설치 프로그램을 게시할 것"이라며 "해당 버전은 리눅스 공간을 만들기 위해 맥OS 설치 크기를 조정하고, m1n1과 U-Boot를 설치하고, EFI 파티션을 설정하고, 선택적으로 사전 빌드된 배포판과 해당 부트로더를 설치하는 과정을 안내한다"고 밝혔다.
현재 다수의 리버스 엔지니어링 작업이 진행되고 있다. m1n1 하이퍼바이저는 M1의 8개 코어를 게스트에 노출하고, CPU 시작 하드웨어를 가상화할 수 있다. 이를 통해 SMP 관련 기능의 리버스 엔지니어링과 관련되고, 베어메탈 수준의 빠른 부팅이 가능해졌다.
M1의 오디오 드라이버 리버스 엔지니어링도 이뤄지고 있다. 맥OS 오디오 드라이버는 M1의 일반 클록 제어 레지스터 중 일부를 직접 제어하는데, 아사히 리눅스 개발팀은 해당 드라이버의 작동 방식을 알아내 일부 클럭 주파수를 매핑하고 있다.
관련기사
- 애플 M1 맥에서 리눅스 쓴다?...개발 프로젝트 가동2021.01.11
- 애플 자체 설계 프로세서, M1 첫선.."전력 효율성 강화"2020.11.11
- 애플 M1 맥에서 리눅스 구동, 실현됐다2021.01.22
- 애플, 제품행사 또 연다…M1X 맥북 프로·에어팟3 공개 전망2021.10.05
또 디스플레이포트 멀티플렉싱, 썬더볼트, 애플 타입C PHY, DWC3 호스트/가젯 등 타입C 하드웨어에서 복잡한 방식으로 상호 작용하는 드라이버를 조사하고 있다.
개발팀은 다음 단계로 GPU를 들었다. 몇개의 느슨한 커널이 연결되고 검토되면 GPU 커널 인터페이스를 다루기 시작할 것이라고 밝혔다.