3/27/2020

MacOS 외부모니터 연결 시 색상 문제(보라색화면?) 해결방법 / Display Profile RGB 모드 강제 설정

최근에 모니터를 바꿨습니다. (역시 43인치는 모니터로 쓰기엔 좀 불편하네요. 걍 33 와이드로!)

사용하던 중 특정 맥북에서 연결 시 화면이 무조건 보라색으로 보이는 현상이 있었고, 구글링해서 얻은 정보 토대로 고쳤던 내용 간략하게 정리해둡니다. (나중에 또 이럴수도 있으니)

* 솔직히 왜 그 맥북안 이런 현상이 있는지는 모르겠습니다. 같은 맥북 프로에 똑같은 OS 버전인데....
생산년도를 타는건가.. *

TL;DR

1) root 권한 사용을 위해 보안모드 해제
2) Display mode 패치
3) 보안모드 재 활성화 및 리부팅
oneline script
# 먼저 root 권한 사용을 위해 SIP 해제 부터 진행해야합니다.

$ sudo mount -uw / ; wget https://gist.githubusercontent.com/adaugherity/7435890/raw/00ff3ead17ae77d2f1c376e90831c037b7dea7ed/patch-edid.rb ; ruby patch-edid.rb ; sudo cp -r DisplayVendorID* /System/Library/Displays/Contents/Resources/Overrides/ ; 
echo 'please reboot :D' 

원인

검색해보면 충분히 많이 나오는 내용입니다. MacOS에서 외장 디스플레이 연결 시 특정 모니터들을 TV로 인식한다고 합니다. 그러다보니 당연히 색상이나 이런 설정 부분들이 달라지게 되고 결과적으로 색감이나 동작에 문제가 생기는거죠.
MacOS가 해당 모니터를 사용할 때 TV가 아닌 일반 모니터의 설정정보를 적용할 수 있도록 강제로 프로파일을 RGB 모드로 변경하여 해결할 수 있습니다.

잠깐 봤는데도 눈이 나갈지경..


root 권한 사용을 위해 SIP 해제

SIP(System Integrity Protection)는 애플에서 MacOS 보호를 위해 만든 보안 기능입니다. 10.11 El Capitan 부터 생긴 기능이며, 여러가지 보호 기법 중 일부 중요 시스템 파일에 대한 보안 대책으로 특정 디렉토리는 root 권한이 있더라도 추가/변경/삭제할 수 없도록 바뀐거지요. 그래서 해당 디렉토리들을 수정하기 위해선 복구모드로 진입 후 SIP를 해제한 후 맥을 사용해야 가능합니다.

부팅 시 cmd+R 을 꾹 눌러주어 복구모드 진입 > 우측 상단 유틸리티 눌러서 터미널 열어줍니다.
$ csrutil disable



Cmd+R을 꾹 눌러주어 복구모드 진입




Display mode 패치

강제로 RGB Profile을 사용하도록 하기 위해선 MacOS 내 Display Profile을 수정해야합니다. 다만 능력자분이 간단하게 스크립트로 만들어두어 쉽게 모니터 종류에 따라 변경이 가능합니다.

우선 시스텝 디렉토리에 파일을 쓰기 위해선 write 권한이 포함되도록 리마운트가 필요합니다.
(기본적으로 read-only라서 해당 과정없이 진행하시면 나중에 에러가 발생합니다. 물론 그때하셔도 늦진 않습니다)

$ sudo mount -uw /

이후 코드를 받아줍니다.

$ wget https://gist.githubusercontent.com/adaugherity/7435890/raw/00ff3ead17ae77d2f1c376e90831c037b7dea7ed/patch-edid.rb
https://gist.github.com/adaugherity/7435890

루비로 만들어진 코드이며 실행해주면 디스플레이 종류에 따라 프로필 데이터를 생성해줍니다.

$ ruby patch-edid.rb

이를 /System/Library/Displays/Contents/Resources/Overrides 디렉토리로 넣어주어 디스플레이 설정을 덮어줍니다.

$ sudo cp -r /Users/hahwul/DisplayVendorID-25ce /System/Library/Displays/Contents/Resources/Overrides


자 이제 모든 과정은 끝났습니다. 재부팅해주시면 됩니다!

good! 그런데, 똑같은 버전의 맥북 중 한대만 안되는건 좀 의아하네요....


이후 SIP 재설정

SIP는 MacOS에서 보안적인 문제가 생겼을 때 한번 막아줄 수 있는 완충제 역할을 합니다. 되도록이면 활성화하고 사용하시는게 좋습니다. (보통 MacOS의 시스템 디렉토리를 건드릴일은 많이 없겠죠 뭐..)

MacOS Sierra 버전 기준으로 해당 버전 미만(El Capitan 아래)는 무조건 복구모드로 재 진입하셔서 풀어주셔야합니다.
맨 위에 해제했던 것과 동일하게 접근 후 csrutil 로 clear or enable 로 옵션을 넣어주시면 됩니다.

$ csrutil clear

or

$ csrutil enable


Sierra 버전 이후부턴 복구모드 없이 설정은 가능하도록 변경이 되었습니다. 아래 경로의 csrutil 바이너리를 실행해주시고 위와 동일하게 옵션을 주시면 됩니다.

$ sudo /usr/bin/csrutil clear

or 

$ sudo /usr/bin/csrutil enable



HAHWUL

Security engineer, Rubyist, Gopher and H4cker!

Share: | Coffee Me:

0 개의 댓글:

Post a Comment