해킨토시: 두 판 사이의 차이

126번째 줄: 126번째 줄:
해킨토시에서 SMC는 에뮬레이션된다. SMC는 PC의 임베디드 컨트롤러(EC)와 유사한데, 에뮬레이션된 SMC에는 EC의 정보가 없으므로 OS 상에서 시스템 팬 등의 인식이 불가능하다. 따라서 팬을 인식시키려면 EC가 제어하는 것들을 해당 SMC에 맞게 처리해줘야 한다. 보통 SMCSuperIO.kext를 사용하는데, 이게 잘 안되면 ACPI의 EC 쪽 코드를 참고하여 팬의 정보를 일일이 주입해야 한다.
해킨토시에서 SMC는 에뮬레이션된다. SMC는 PC의 임베디드 컨트롤러(EC)와 유사한데, 에뮬레이션된 SMC에는 EC의 정보가 없으므로 OS 상에서 시스템 팬 등의 인식이 불가능하다. 따라서 팬을 인식시키려면 EC가 제어하는 것들을 해당 SMC에 맞게 처리해줘야 한다. 보통 SMCSuperIO.kext를 사용하는데, 이게 잘 안되면 ACPI의 EC 쪽 코드를 참고하여 팬의 정보를 일일이 주입해야 한다.


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


== 장점 ==
== 장점 ==

2022년 10월 21일 (금) 04:06 판

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

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

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

역사

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

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

설치

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

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

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

장치 호환성

CPU

  • 이론적으로 SSE 4.1 명령어를 지원하는 모든 x86-64 CPU를 사용할 수 있다. 그러나 실제로는 인텔 외의 CPU에서 커널 패닉을 일으킨다.
    • AMD CPU라면 커널 패치와 사제 전원 관리 kext가 있어 비교적 원활하게 사용이 가능하지만, 맥의 특성 상 인텔 CPU만을 고려한 앱의 불안정성은 불가피할 수 밖에 없다.
    • Ventura부터는 AVX2 명령어가 필요하나, Rosetta의 레거시 코드를 사용하여 우회할 수 있다.
  • 커널 단에서 64스레드까지만 지원하므로 그 이상의 CPU는 사용할 수 없다.

[2]

GPU

흔히 QE/CI라고 불리는 하드웨어 가속을 사용하려면 해당 GPU를 OS에서 지원해야 하며 프레임버퍼(화면 출력)의 역할을 할 수 있어야 한다. 그렇지만 조건을 충족해도 하드웨어 가속이 불가능하거나 어려울 수 있는데, 특히 AMD 카드가 이러한 경우가 많다. 하지만 다른 선택지가 없다.

Ventura부터는 기본적으로 지원하는 GPU에 한해 AVX2 명령어가 필요하다.

아키텍처 모델명 지원 여부
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]

무선 통신

WLAN은 기본적으로 브로드컴의 BCM9435x과 94360 계열 칩셋을 지원한다. 해당 칩셋을 탑재한 일반적인 제품(Azurewave 등)에서는 인스턴트 핫스팟을 제외한 대부분의 연속성 기능이 작동한다. 한편 인텔과 일부 리얼텍/라링크 칩셋도 별도의 kext를 통해 사용 가능하지만, 연속성 기능에 제약이 있다.

맥의 AirPort 카드(어댑터 필요) 또는 이를 기반으로 만든 BCM94360NG 등을 사용하면 모든 연속성 기능을 이용할 수 있지만, 윈도우에서의 호환성이 조금 떨어지는 것이 단점이다.

블루투스는 대부분 USB 기반이라 그냥 인식되지만 제대로 작동하지 않으면 펌웨어를 업로드해주는 별도의 kext를 사용해야 한다.

WWAN은 경우에 따라 다르며 kext 수정이 필요할 수도 있다.

저장 장치

AHCI라면 문제가 없지만 NVMe 인터페이스는 시스템 kext의 호환성 문제로 잘 작동하지 않는 경우가 있다. NVMeFix.kext는 전원 관리와 일부 모델들의[6] 사소한 문제를 해결하며, OpenCore의 SetApfsTrimTimeout는 APFS Trim 지연을 없앤다. 부팅조차 되지 않는 모델은 펌웨어 업데이트로 해결 가능할 수도 있다.

기타

해킨토시에서 SMC는 에뮬레이션된다. SMC는 PC의 임베디드 컨트롤러(EC)와 유사한데, 에뮬레이션된 SMC에는 EC의 정보가 없으므로 OS 상에서 시스템 팬 등의 인식이 불가능하다. 따라서 팬을 인식시키려면 EC가 제어하는 것들을 해당 SMC에 맞게 처리해줘야 한다. 보통 SMCSuperIO.kext를 사용하는데, 이게 잘 안되면 ACPI의 EC 쪽 코드를 참고하여 팬의 정보를 일일이 주입해야 한다.

그 외 맥용 드라이버가 있는 장치는 해킨토시에서 작동하게 만들 수 있다. 특히 ACPI 코드가 맥과 유사하다면 더 좋다.[7]

장점

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

단점

  • 해킨토시는 애플의 소프트웨어 사용권 계약(EULA) 위반이다. [8]
  • OS 판올림을 위해 지속적인 유지보수가 필요하다. 부트로더의 설정과 외부 kext가 판올림 시 제대로 작동하지 않을 수 있기 때문이다.
  • 일부 노트북은 동급 맥이나 윈도우 환경보다 전원 관리가 뒤떨어질 수 있다. 예시로 HP 노트북은 팬이 빠르게 돌아가서 시끄러우며, LG 노트북은 팬이 느리게 돌아가서 발열이 심하다.
  • 최신 OS 및 앱 환경에서는 외장 그래픽의 영상 인·디코딩 가속이 잘 되지 않는다.

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

외부 링크

각주

  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. 해당 모델 리스트
  7. 인텔 맥도 x86 시스템이므로 ACPI를 사용하기 때문이다.
  8. 소프트웨어 사용권 계약 "본 사용권에 명시된 사용권 부여는 귀하가 Apple 상표가 붙지 않은 타사 컴퓨터에서 Apple 소프트웨어를 설치, 사용 또는 구동하거나, 귀하가 타인에게 이를 가능케 하는 것을 허용하지 않으며, 귀하도 이에 동의합니다."