해킨토시

해킨토시(Hackintosh)란 이 아닌 PC에 맥 운영체제를 설치하는 것, 또는 그러한 컴퓨터를 의미한다.

과거에는 OSx86 프로젝트라고도 불렸지만 이는 점차 사어화되면서 해킨토시라는 용어로 굳어진다.

본래 해킨토시는 System Software를 구동하는 리사 2/10, 즉 매킨토시 XL를 뜻했는데 현재 이러한 뜻으로 해당 단어를 사용하는 사례는 없다고 봐도 무방하다.

1 역사[편집]

초기에는 OS 자체를 개조하여 일반 PC에서의 부팅 제한 요소를 없애는 방식이었다.[1] 이후 Boot-132 (DTK의 부트로더 중 하나)를 기반으로 한 Chameleon 등의 부트로더는 EFI 에뮬레이션을 통해 해당 제한을 우회해서 부팅할 수 있도록 하였고, 특히 ACPI 테이블을 수정하고 주입하는 방안을 Pike R. Alpha 등이 고안하여 지금의 해킨토시 환경을 만들게 된다.

현재는 UEFI 기반의 Clover와 OpenCore라는 부트로더가 사용된다. 이들 또한 ACPI 테이블과 드라이버 주입, 그 외 맥 운영체제를 위한 환경을 제공한다는 큰 틀은 변하지 않았다.

2 설치[편집]

부트로더와 드라이버, 설정 파일 등이 포함된 EFI를 ESP에 넣고 해당 장치로 부팅한 후 OS 설치 과정을 진행한다.

범용적으로 설계되어 대부분의 x86 PC에서 사용할 수 있는 Windows 등과 달리, 각 PC에 맞는 EFI를 구성해야 잘 작동한다. EFI를 만드는 방법은 아래에 설명되어 있다.

특정 PC용으로 이미 만들어진 EFI가 있다면 복잡한 구성 과정 없이 손쉽게 설치 가능하며, 특히 가상 머신을 사용하면 호스트 PC에 설정을 맞춰줄 필요 없이 비교적 쉽게 설치할 수 있다.

3 장치 호환성[편집]

3.1 CPU[편집]

  • 이론적으로 SSE 4.1 명령어를 지원하는 모든 x86-64 CPU를 사용할 수 있다. 그러나 실제로는 인텔 외의 CPU에서 커널 패닉을 일으킨다.
    • AMD CPU는 커널 패치와 사제 전원 관리 kext가 있어 비교적 원활하게 사용이 가능하지만, 맥의 특성 상 인텔 CPU만을 고려한 앱의 불안정성은 불가피할 수 밖에 없다.
    • 인텔 CPU라 하더라도, 셀러론과 펜티엄 등은 전원 관리가 제대로 되지 않으므로 조금 까다롭다.
  • 커널 단에서 64스레드까지만 지원하기 때문에 그 이상의 CPU는 사용할 수 없다.

[2]

3.2 GPU[편집]

흔히 QE/CI라고 불리는 하드웨어 가속을 사용하려면 해당 GPU를 OS에서 지원해야 하며 프레임버퍼(화면 출력)의 역할을 할 수 있어야 한다.

아키텍처 모델명 지원 여부
Intel
아이비 브릿지 HD 4000 * [3]
하스웰 HD 4x00 / Iris 5x00 * [4]
브로드웰 HD 5x00 / Iris 6x00 * [4]
스카이레이크 HD 5xx / Iris 5x0 * [4]
카비 레이크 (U)HD 6xx / Iris 6x0 지원
커피 레이크 UHD 6xx / Iris 6x5 지원
아이스 레이크 - 지원
아키텍처 지원 여부
AMD
GCN 1 * [4]
GCN 2 * [4]
GCN 3 * [4]
GCN 4 (Polaris) 지원
GCN 5 (Vega) 지원
RDNA 1 (Navi 1x) 지원
RDNA 2 (Navi 21 / 23) 지원
NVIDIA
Kepler * [3]
Maxwell * [5]
Pascal * [5]
  • 엔비디아나 GCN 3세대 이전 GPU는 호환성 문제로 하드웨어 방식의 영상 인·디코딩 기능을 지원하지 않는다.
  • Ventura부터는 기본 지원 GPU에 대해 AVX2 명령어를 요구한다.

3.3 무선 통신[편집]

  • WLAN: PC에서 사용 가능한 칩셋 중에서는 브로드컴의 BCM9435x과 94360 계열 칩셋을 기본적으로 지원한다.
    • 인텔과 일부 리얼텍/미디어텍 제품도 별도의 kext가 있기에 사용은 가능하나, 연속성 기능에 제약이 크다.
    • 맥의 AirPort 카드 및 이를 기반으로 만든 BCM94360NG 등을 사용하면 모든 연속성 기능을 "완벽하게" 이용할 수 있다.[6]
  • 블루투스: 펌웨어를 업로드해주는 별도의 kext를 사용해야 한다.
  • WWAN: 경우에 따라 다르며 kext 수정이 필요할 수도 있다.

3.4 저장 장치[편집]

AHCI라면 문제가 없지만 NVMe 인터페이스는 시스템 kext의 호환성 문제로 잘 작동하지 않는 경우가 있다. 특히 일부 모델은 장착만 되어 있어도 패닉을 일으키므로 탈착이 필요하다.

eMMC는 지원하지 않는다.

3.5 기타[편집]

노트북의 키보드는 PS/2를, 터치패드는 PS/2 기반의 SMBus나 I2C를 사용하는데, 셋 다 별도의 kext가 있어야 사용이 가능하다. PS/2나 SMBus는 별도의 설정 없이도 기본적인 사용이 되지만, I2C 입력장치라면 현재까지는 장치에 맞는 GPIO 핀(인터럽트) 주입을 해주어야 제대로 작동한다.

해킨토시에서 SMC는 에뮬레이션된다. SMC는 PC의 임베디드 컨트롤러(EC)와 유사한데, 에뮬레이션된 SMC에는 EC의 정보가 없으므로 OS 상에서 시스템 팬 등의 인식이 불가능하다. 따라서 팬 속도를 확인하려면 EC의 값들을 해당 SMC에 맞게 처리해주는 kext를 사용해야 한다. 한편 팬을 제어하는 것은 다른 문제이기에 Dell과 Lenovo 시스템을 제외하면 지원이 거의 되지 않는다.

그 외 맥용 드라이버가 있는 장치는 해킨토시에서 작동하게 만들 수 있다. 특히 ACPI 코드가 맥과 유사하다면 더 좋다. 인텔 맥도 x86 시스템이므로 ACPI를 사용하기 때문이다.

4 장점[편집]

가성비가 좋다. 맥에서만 제공되는 Xcode 등의 개발 앱이나, 파컷/로직 등의 편집 앱을 사용하기 위한 고사양 시스템을 합리적인 가격에 구성할 수 있다.

5 단점[편집]

  • 해킨토시는 애플의 소프트웨어 사용권 계약(EULA) 위반이다. [7]
  • OS 판올림을 위해 지속적인 유지보수가 필요하다. 부트로더의 설정과 외부 kext가 판올림 시 제대로 작동하지 않을 수 있기 때문이다.
  • 여러 호환성 이슈가 많다. 사실상 해킨토시의 가장 큰 문제이다.
    • 시스템 펌웨어가 맥 OS와 잘 맞지 않는다면, 전원 관리 같은 일부 기능이 잘 작동하지 않게 된다.[8]
    • 맥 OS에 기본적으로 내장된 kext는 오직 맥의 하드웨어와 일부 검증된 제품에 맞게 설계되었기 때문에, 장치가 잘 기능하지 못하거나 커널 패닉이 발생하는 경우가 많다.

6[편집]

  • 커널 패닉 해석: 우선 패닉의 원인을 알기 위해서는 Verbose 모드(-v)로 부팅해야 한다. 이는 OS의 부팅 과정을 글로 보여준다.
    • 패닉이 발생하기 전 대부분의 경우에는 이와 관련된 문장이 panic 위 어딘가에 출력된다.
    • 패닉이 발생하면 "panic"으로 시작하는 문장, 그리고 메모리 주소와 Symbol을 출력한다. 이는 어떠한 코드에서 어떠한 예외가 발생했는지 드러낸다.
    • 그 밑에는 "Kernel Extensions in Backtrace: ~" 문장이 있는데, 이는 패닉을 유발한 kext라고 보면 된다.

7 외부 링크[편집]

  • 해외
    • 토니맥 개인 블로그로 시작한 커뮤니티 사이트
    • InsanelyMac 위 토니맥과 사이가 좋지 않다.
    • AppleLife 클로버 및 오픈코어 부트로더 개발자들의 근거지
  • 국내

8 각주

  1. DTK용 Tiger를 크랙한 Maxxuss의 사이트, Anti-TPM과 SSE2 CPU용 패치가 제시되어 있음
  2. XNU 커널에서 지원하는 CPUID 목록
  3. 3.0 3.1 Big Sur까지 사용 가능
  4. 4.0 4.1 4.2 4.3 4.4 4.5 Monterey까지 사용 가능
  5. 5.0 5.1 OCLP 사용
  6. Azurewave 등의 사제 제품도 대부분의 연속성 기능이 작동하지만 완벽하지는 않다. 인스턴트 핫스팟이 대표적인 예시이다.
  7. 소프트웨어 사용권 계약 "본 사용권에 명시된 사용권 부여는 귀하가 Apple 상표가 붙지 않은 타사 컴퓨터에서 Apple 소프트웨어를 설치, 사용 또는 구동하거나, 귀하가 타인에게 이를 가능케 하는 것을 허용하지 않으며, 귀하도 이에 동의합니다."
  8. 예시로 HP 노트북은 팬이 빠르게 돌아가서 시끄러우며, 재시동 후 펌웨어 설정이 초기화되는 문제가 있다.