| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- tevo
- Fedora
- 맥북프로
- catalina
- iOS 13
- mojave
- 맥
- asahi linux
- Tarantula
- sierra
- 모하비
- Linux
- AirPods
- 시에라
- 컨트롤러
- macos
- beta
- 에어팟
- IOS
- 터치바
- 터미널
- 업데이트
- 3D 프린터
- asahi
- 애플
- 3D프린터
- high sierra
- Mac
- 아이폰
- 버그
- Today
- Total
elsa in mac
Asahi Linux, DP Alt Mode를 지원하는 Kernel branch "Fairydust" 공개, kernel 빌드 방법 및 적용 결과 본문
Asahi Linux, DP Alt Mode를 지원하는 Kernel branch "Fairydust" 공개, kernel 빌드 방법 및 적용 결과
elsa in mac 2025. 12. 31. 13:15
본 포스트는 Fedora Asahi Remix를 기반으로 작성되었습니다.
2025년 12월 30일, 39C3에서 Asahi Team의 개발 멤버인 svan이 Asahi Linux - Porting Linux to Apple Silicon이라는 주제로 발표가 있었습니다. (이전 포스트 참고)
그리고, DP alt-mode(DisplayPort alternative mode)가 적용된 kernel source 코드가 공개되었습니다. 아직은 개발자 버전 소스코드라고 할 수 있겠죠.. 코드명은 Fairydust 입니다. 작명 센스가 돋보입니다.
Update : 2026.04.06
- fairydust 가 6.19.11+ 로 업데이트 되었습니다. 아래 글 내용에서 버전이 불일치 하는 부분들은 참고 하시기 바랍니다. (6.18.4+ 가 사용되는 부분들은 6.19.11+로 대신 사용해야 합니다.)
일단 결론적으로 해당 소스코드를 받은 후, 빌드하여 적용해 봤는데요.. USB-C 포트와 연결된 모니터가 잘 작동합니다. 아래는 결과입니다.


Kernel 버전은 6.18.4+ 로 표시가 됩니다.
결론적으로 6.18.x 정식 버전이 릴리즈 되면, 거의 100% USB-C 포트를 통한 외부 모니터를 연결하여 사용할 수 있을 것으로 보입니다. MacBook에서 Asahi Linux를 사용하는 사용자들에게는 정말 반가운 소식이 아닐 수 없습니다.
아래는 해당 kernel을 빌드하고 설치하여 사용하는 과정을 정리한 것입니다.
단, 아래의 절차에 따라 kernel을 빌드하고 사용하시기 전에 알아 두어야 할 점은 아직은 DP alt-mode를 사용할 수 있다는 수준이지, 일반 사용자들이 편리하게 사용할 수준은 아닙니다. 예를 들어, 부팅을 하면 화면이 들어오지 않습니다. 모니터를 껐다가 다시 켜야지만 화면이 들어 옵니다.(USB-C 케이블을 뺐다가 다시 꽃는 것이 아님) 이런 불편한 점이 있다는 점을 감안하고 검토하시기 바랍니다.
따라서, Kernel을 수정, 빌드, 설치에 경험이 없는 사용자라면 직접 해당 kernel을 빌드하고 사용하는 것이 대단히 위험할 수 있습니다. 단지 참고 사항으로만 보시기를 추천합니다.
Kernel 빌드 절차
우선, 필자는 M1 mac mini (2020 late, 8GB/256GB)의 기본 모델을 사용하고 있습니다. 아마 Asahi Linux를 사용할 수 있는 mac 중에 가장 기본 모델이라고 해도 무방할 것입니다.
일단, kernel을 빌드하여 사용하려면, 사용할 수 있는 여유 저장공간이 10GB 이상 남아 있어야 합니다. 소스코드 자체가 크고, 빌드과정에서 생성되는 object 파일 등의 중간 산출물이 거의 많기 때문입니다. 필자의 경우에는 Asahi Linux에 할당된 내부 저정공간은 60GB 이기 때문에, 대부분의 큰 작업은 외장 SSD(512GB)에서 합니다. Memory는 8GB 이상이어야 하며, 필자처럼 8GB 메모리라면 반드시 swap을 사용해야 합니다.
Kernel을 빌드하고 적용해 본 경험이 없는 사용자라면, 이 과정이 꽤나 어려울 수 있습니다. 진행과정에 대한 스샷이나 결과가 본인이 사용하는 mac에 따라 조금씩 상이할 수도 있다는 점을 유념하여 보시기 바랍니다.
우선, 빌드 환경은 kernel 6.17.12-400 하에서 진행했습니다.
그럼, 빌드 절차를 하나하나 알아봅니다.
우선, kernel 빌드에 필요한 의존성 패키지들을 설치해야 합니다.
sudo dnf groupinstall "Development Tools"
sudo dnf install git ncurses-devel flex bison openssl-devel elfutils-libelf-devel
sudo dnf install rust rust-src bindgen-cli clang llvm
asahi linux의 GPU 드라이버는 Rust로 작성되어 있기 때문에, rust 관련 패키지들도 설치가 되어 있어야 합니다.
패키지가 다 설치되었다면, 이제 fairydust kernel source를 받아야 합니다.
# 기본 소스코드 clone
git clone -b fairydust --single-branch --depth 1 https://github.com/AsahiLinux/linux.git
# 소스코드 root로 이동
cd linux
다음으로 현재 사용 중인 kernel의 config 파일을 복사해야 합니다.
이 부분은 좀 신중해야 합니다. 만일 Fairydust의 버전과 현재 설치되어 사용중인 버전이 동일하다면 가장 좋습니다. Fedora는 현재 사용되는 가장 최근의 버전부터 이전 2개의 버전까지 포함하여 총 3개의 버전을 관리 합니다.
만일 Fairydust의 버전이 이 3개의 버전 중에 하나와 동일하다면 config 파일은 /lib/modules/<설치 kernel 디렉터리> 안에 있습니다. 그리고 이 config를 사용하면 됩니다.

위의 스샷을 보면, /lib/modules/6.18.10-402 버전의 폴더내에 config가 있는 것을 알 수 있습니다. 이 config는 현재 사용자가 사용하는 해당 kernel 의 config 입니다.
/boot 디렉터리에도 해당 kernel 의 config가 있지만, 이것은 보다 광의적인 옵션들을 포함하고 있습니다.
# Fairydust와 동일한 커널이 있다면
cp /lib/modules/<kernel 디렉터리>/config .config
# 만일 없다면 /boot 디렉터리의 config를 .config로 복사
cp /boot/config-6.17.12-400.asahi.fc43.aarch64+16k .config
만일, Fairydust의 버전이 업데이트 되었다면 예를들어, .config가 6.18.10 에서 사용된 config 였고, 현재 버전이 6.19.5 라면, 내부적으로 새롭게 추가된 kernel 옵션들이 있을 수 있습니다. 이 경우 업그레이드된 버전의 config 옵션을 merge 해 주는 것이 좋습니다.
scripts/kconfig/merge_config.sh -m .config arch/arm64/configs/asahi.config
다음으로 make menuconfig를 실행하여 Asahi Linux관련 GPU driver의 활성 여부를 확인합니다. 이 절차는 단지 확인만 하는 절치 입니다. /lib/moduels/<커널 버전>/config 를 사용할 수 있다면, 건너뛰어도 됩니다.
# menuconfig 실행
make menuconfig

General setup -> Rust support 를 선택해 줍니다. 해당 라인에서 space키를 누르면 [ ] 가 [*] 로 바뀌게 됩니다. 그럼 선택이 된 것이죠. 변경을 완료했으면, tab키를 눌러 선택바가 Save에 가게 한 다음 Enter키를 눌러 .config에 저장합니다. 참고로, 만일 rust와 관련된 빌드 패키지가 설치되어 있지 않다면 해당 옵션은 보이지 않습니다. 당연히 Rust로 작성된 Driver들도 옵션에서 보이지 않게 됩니다.

저장을 했으면, <Exit> 를 선택하여 이전 화면으로 나갑니다. 그리고, 초기 메뉴에서 Device Drivers ---> Graphics support ---> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> Asahi (DRM support for Apple AGX GPUs) 의 옵션을 [ ] 에서 [ * ] 로 변경해 줍니다. [ ] 에서 space를 한번 누르면 [M]으로 바뀌고 다시 space를 누르면 [*] 로 바뀌게 됩니다.
다음으로, Asialinux Document의 kernel config 설명에 의하면, NVME_APPLE과 SPI_HID_APPLE_OF 항목은 안정성을 위해 kernel에 내장하는 것이 좋다고 권고하고 있습니다. 이를 위한 설정은 다음과 같습니다.
우선, NVME_APPLE을 설정하기 위해서는 Device Drivers --> SOC (System On Chip) specific Drivers --> Apple SoC drivers --> Apple SART DMA address filter의 옵션을 * 로 변경합니다. 그리고, 이어서 Device Drivers --> NVME Support --> Apple ANS2 NVM Express host driver의 옵션을 역시 *로 변경합니다.
다음으로, Device Drivers --> HID bus support --> SPI HID support --> HID over SPI transport layer for Apple Silicon SoCs 의 옵션을 역시 *로 변경합니다.
이제 <Save>를 선택하여 .config에 저장을 해 줍니다. 이제 <Exit> 를 연속으로 선택하여, menuconfig를 완전히 종료해 줍니다.
위의 옵션을 굳이 .config 파일에서 수정하지 않고, make menuconfig를 이용하여 수정하는 이유는 * 즉, kernel built-in 으로 변경할 때, 해당 옵션의 Depends on 항목들의 조건이 함께 부합해야 하기 때문입니다. 이 조건들이 맞지 않을 경우에는 .config에 해당 항목을 =y 로 변경한들 실제적으로는 변경이 되지 않은 것과 마찬가지 입니다. 이러한 이유로 make menuconfig를 통해 실제 변경이 될 수 있는지의 여부를 직접 확인하고 변경해야 합니다.
다음으로 아래와 같이 빌드 옵션을 disable 하고 업데이트된 .config를 이용하여 빌드 설정을 업데이트합니다.
# Debug 관련 기능을 off
scripts/config --disable DEBUG_INFO
# BTF(BPF Type Format) 생성하지 않음.
scripts/config --disable CONFIG_DEBUG_INFO_BTF
# SBAT(Secure Boot) 관련 ZBOOT 비활성화
scripts/config --disable CONFIG_EFI_ZBOOT
# 설정을 적용
make olddefconfig
make olddefconfig를 실행하면, 대략 아래와 같은 결과가 출력되게 됩니다. (아래 정보는 실제와 일부 상이할 수 있음.)
> make olddefconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
이제 kernel 및 kernel module을 빌드합니다.
make -j8
팔자의 m1 mac-mini는 총 8개의 CPU core가 있으므로, -j8을 사용했습니다. 사용하는 mac의 Core수가 다를 수 있으니 확인 후 적절한 core 수로 정의해 주면 됩니다.
kernel의 소스와 관련된 kernel modules들이 굉장히 많기 때문에 대략 20분 이상의 시간이 소요됩니다. 정상적으로 빌드가 완료되었다면..

위의 스샷처럼 arch/arm64/boot 디렉터리 안에 Image와 Image.gz 파일이 생성된 것을 확인할 수 있습니다.
빌드가 잘 되었다면, 이제 설치를 해야 합니다.
설치는 빌드와 마찬가지로 linux (소스의 root) 디렉터리에서 합니다.
# kernel 모듈 설치
sudo make INSTALL_MOD_STRIP=1 modules_install
kernel 모듈은 디버깅 심벌을 제거하기 위해 STRIP 옵션을 주어 위와 같은 명령으로 실행합니다. 결과는

스샷처럼 /lib/modules/ 디렉터리 밑에 6.18.4+ 라는 디렉터리가 생성되어 있고 그 안에 빌드한 kernel modules들이 포함되어 있는지를 확인하면 됩니다. 용량은 디버깅 심벌을 제거했으므로 대략 200 ~ 400MB 정도가 될 것입니다. (참고로 디버깅 심벌을 제거하지 않고 설치하면 6GB가 넘는 어머어마한 용량이 됩니다.)
다음으로 DTB(Device Tree)를 설치해야 합니다. 새로운 Kernel에는 기존 Kernel에는 없었던 Device 항목들이 추가되었을 수 있기 때문에, 커널이 H/W를 인식하기 위한 DTB 파일이 반드시 필요합니다.
# DTB 설치
sudo make dtbs_install INSTALL_DTBS_PATH=/usr/lib/modules/6.18.4+/dtb
#vsdo 설치
sudo make vdso_install INSTALL_VDSO_PATH=/usr/lib/modules/6.18.4+/vdso
자 이제 마자믹으로 kernel 이미지를 설치합니다.
sudo make install
sudo make install을 실행하며, 관련 스크립트가 자동으로 /boot 디렉터리 내에 Kernel image를 복사하고, initramfs를 생성하며, GRUB 메뉴를 업데이트하여 새 kernel 항목을 추가하게 됩니다.
sudo make install이 완료된 후의 /boot 디렉터리 내부 구성은 아래와 같습니다. sudo

dtb는 /lib/modules/6.18.4+/dtb 디렉터리로 연결되며, initramfs-6.18.4+.img 가 생성되어 있는 것을 알 수 있습니다. symver 이나 system.map 은 필수요소는 아닙니다. vmlinuz-6.18.4+는 kernel 이미지입니다. 추가되었지요.
다음으로 dtb에 대한 symbolic link를 확인합니다.
cd /boot
sudo rm -Rf ./dtb
sudo ln -s /usr/lib/modules/6.18.4+/dtb ./dtb
그리고,마지막으로 사용된 .config 파일을 /boot 디렉터리에 복사합니다.
cd /boot
sudo cp -Rf <linux kernel source path>/.config config-6.18.4+
cd /lib/modules/6.18.4+
sudo cp -Rf <linux kernel source path>/.config config
config를 복사하는 이유는 어떤 app의 경우 config의 내용을 참조하고 kernel의 특정 옵션 설정이 어떻게 되어 있는가에 따라 정상실행 여부를 판단하는 경우가 있기 때문입니다.
다음으로, GRUB에 추가되었는지를 확인해 봅니다.

제일 상단에 Fedora Linux Asahi Remix (6.18.4+) 43 (Forty Three) 가 추가된 것을 확인할 수 있고, sudo grubby --default-kernel 명령을 사용하면, 현재 설정된 기본 부팅 kernel이 어떤 것인지를 확인할 수 있습니다.
원래는 기본 부팅 항목을 6.18.4+로 변경해야 하지만, 만일을 대비하여 일단 기본 부팅 항목은 기존의 6.17.12로 남겨 둡니다.
나중에 모든 검증이 끝나고 그대로 사용할 수 있겠다는 확신이 든다면.. default kernel을 변경하면 됩니다.
# default kernel 변경
sudo grubby --set-default /boot/vmlinuz-6.18.4+
이것으로 fairydust kernel의 빌드 및 설치는 모두 끝난 것입니다.
이제, rebooting을 해서 kernel 6.18.4+로 부팅을 해 보면 됩니다. (아래 스샷은 fairydust 6.18.2+ 일때의 스샷임)

부팅을 해 보니, GRUB 메뉴에서 위의 스샷과 같이 6.18.4+가 표시되는 것을 알 수 있습니다. 해당 kernel을 선택하여 부팅을 해 줍니다.
유의사항
먼저, 아직 U-boot 나 GRUB 선택 상태에서는 USB-C 모니터를 지원하지 않습니다. 아직은 kernel에서만 지원을 하기 때문에 kernel 부팅이 완료되는 시점에서 USB-C 모니터에 화면이 표시됩니다. 따라서, kernel이 정상적으로 동작하는 것을 확인했다면.. GRUB default kernel을 6.18.4+로 변경하는 것을 추천합니다.

믈론, default kernel로 변경을 하더라도 글 도입부에서 언급했듯이, kernel 부팅이 완전히 완료된 시점 이 후에 모니터 전원을 Off -> On 해야 화면이 들어 오는 수준입니다. 필자는 모니터가 한 대 밖에 없기 때문에 HDMI + USB-C 로 듀얼 모니터 환경을 테스트 하지는 못했습니다. 이 경우에는 또 어떤 문제가 있을지 확인이 안되어 있다는 점도 고려해야 하며, MacBook 등 기타 다른 m1/m2 mac에서는 어떤 결과가 나올지도 확인이 되지 않았습니다.
mac mini 의 경우 두 개의 USB-C 포트가 있습니다. 하나에 모니터를 연결하고, 다른 나머지 한 포트에 USB-C hub 를 연결하고, 이 USB-C hub에 키보드와 마우스를 연결해서 사용하고 있는데, 부팅 중에 USB-C hub가 연결이 끊기는 경우도 있습니다. 이 때는 우선 USB-C 모니터를 사용 가능한 상태로 만든 후, USB-C hub 를 뺐다가 다시 연결하니 정상 동작했습니다.
또한, dp-alt mode 와 관련된 commit의 내용을 확인해 보면, USB-C 외부 모니터를 연결할 USB-C 포트가 mac 모델마다 정해져 있는 것 같습니다. 아래를 참고 하시기 바랍니다.
DP alt mode for Mac Mini M2 Pro
--------------------------------
the blessed port is the back right middle port
(second closest USB-C port to the power connector).
DP alt mode for Mac Studio
--------------------------
the blessed port is the back left middle port
(second closest USB-C port to the power connector).
Blessed dp-altmode port is front left port on j314/j316/j414/j416.
Enable DP alt mode for the front left USB-C port of Macbook Air 13
(M2,13/15-inch) and Macbook Pro (M2, 13-inch).
Can't easily enabled on the M2 Mac Mini since dcpext is used for the
HDMI port and dcp bringup is troublesome.
Enable DP alt mode for all M1 devices:
-------------------------------------
Mac Mini (M1): USB-C port next to the HDMI port
Macbook Pro (M1, 13-inch): front left USB-C port
Macbook Air (M1, 13-inch): front left USB-C port
iMac (M1, 2 USB-C ports): back left USB-C port
iMac (M1, 4 USB-C ports): back right middle USB-C port
필자의 경우에는 wayland compositor를 직접 만들어서 사용하고 있는데,

보는 바와 같이 /dev/dri 에 card0, card2, renderD128 장치가 있는 것을 알 수 있습니다. 기존 6.17에서는 card1, card2, renderD128 이였죠. 따라서, 사용하시는 WM 환경 설정에서 이 부분과 관련된 설정이 있다면, 이 설정을 변경해야 한다는 점도 살펴야 합니다. 장치명도 기존에는 USB-C로 연결할 경우 DP-1 으로 표시됩니다. 특정 설정에서 HDMI-A-1 등으로 설정된 것들이 있었다면, 이들 설정도 모두 DP-1으로 변경해야 정상적으로 동작한다는 점도 고려해야 합니다.
update : 2026.01.10
- fairydust가 6.18.4로 업데이트 되면서, /dev/dri 가 card0, card2, renderD128 에서 card1, card2, renderD128로 변경됨.

위의 스샷은 wayland compositor 실행 시의 debug log 인데요, 보면, HDMI-A-1 과 DP-1 두 개가 detection 되는 것을 알 수 있습니다. 기존 kernel에서는 HDMI-A-1 1개만 확인 되었었습니다.
또 다른 확인 방법은

위의 스샷과 같이 /sys/class/drm 에서 ls를 해 보면, DP-1 이 보여야 합니다.
- - - - -
그래도, 예상과는 달리 공개된 source가 꽤나 안정적이고, 여타 다른 부분에는 별 문제가 없다는 점이 인상적이지만 6.18 정식 버전이 릴리즈 되더라도 이 기능이 포함될지의 여부는 아직 미지수 입니다.
사실 2025년 올 해 기대했던 업데이트는 아니였는데, 극적으로 2025년 마지막날 이렇게 기대감을 체우게 되었네요. 굉징히 기쁘고, Asahi team 의 노고에 감사의 맘을 전하고 싶군요..
'Linux > Asahi Linux' 카테고리의 다른 글
| Asahi Linux, Kernel 6.18.10-402 업데이트 릴리즈, Fairydust 브랜치 6.18.10+ 업데이트 (0) | 2026.02.16 |
|---|---|
| asahi linux, apple silicon M3 지원 빨라지나 ? (1) | 2026.01.26 |
| Asahi Linux, Apple Silicon M3 macbook 지원되나 ? (1) | 2025.12.30 |
| Asahi Linux 6.18 진행 보고서가 올라왔습니다. (0) | 2025.12.18 |
| Asahi Linux, kernel 6.17.9 가 공식 릴리즈되었습니다. (0) | 2025.11.29 |