달력

2

« 2018/2 »

  • 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

'2018/02/21'에 해당되는 글 1

  1. 2018.02.21 커스텀맥(해킨토시) 디버깅 가이드
2018. 2. 21. 00:13

커스텀맥(해킨토시) 디버깅 가이드 Hackintosh2018. 2. 21. 00:13

 

 

 
사실 이런 글들을 기록해 가는 일은 예상외로 간단하지 않다.  
하지만 커스텀맥(해킨토시) 개발을 진행해 오면서 다양한 가이드들을 써오긴 했지만 당연히 초기보다는 현재가 조금 더 세련되고 간단해지기는 했지만 역시나 직접 설치할 때는 긴장이 된다.
5시간짜리 렌더링 하나 걸어 두고 글을 써 내려가면서 다양한 생각이 들긴 하지만 떨쳐내고 하나씩 하나씩 적어본다.
 
 
사실 Lion(10.5) 을 발표하던 WWDC에 팀원을 참석하게 한 적이 있었다.
WWDC가 진행하는 동안 당연히 해킨토시 개발진들은 온라인상에 모여 커널을 Disassemble하기 위한 레이스의 긴장감을 떨쳐내기 위하여 잡담을 하며 흥분을 털어버리려고 가슴을 쓰러내리고 있었다.
드디어 WWDC도중 배포한 Lion(10.5) 베타 버전 CD/DVD를 입수한 팀원이 WWDC를 마다하고 온라인 상에 나타났다.
Apple사에서 배정해준 호텔의 모뎀을 이용하여 배포본을 이미지화한 후 업로딩을 하였고 우리는 동시에 다운로드 받기 시작했다. 
 
하지만, 유출을 눈치챈 Apple사의 직원들이 호텔방을 덮쳤고 우리는 거의 25%도 채 다운되지 않은 어쩡쩡한 상황에 망연자실하였다.  그때 영리한 Maxxuss가 단지 25%도 채 다운되지 않은 바이너리 이미지를 재코딩한 후 mach_kernel 만 추출하여 다시 업로딩하였다.   
언제 영혼이 가출하였었지?  뒤돌아볼 시간도 없이 이때부터는 다들 정신이 없었다.  
Tiger(10.4)는 이미 Maxxuss가 해 내었고 이제 세계 최초로 Lion(10.5) 커널을 Disassemble하기 위한 경쟁이 시작된 것이다.
Apple사의 직원들에게 잡혀간 개발진에 대한 걱정은 이미 안드로메다로 가 있었다.
Maxxuss, Jas, Myzar, Kiko 등등 쟁쟁한 개발진들은 누구라 할 것 없이 작업에 집중하고 있었다.
이 시기가 왜 중요했었을까?
Apple사는 10.4.7 로 버전 업그레이드를 하여 엄청난 보안을 적용하여 해킨토시가 제대로 돌아가지 못하게 하였던 것이다.
Kiko나 나 조차도 아니 우리 개발진 모두가 안정화에 주력하였었지만 해킨토시 역사상 10.4.7 커널은 최악이었고 보안강화로 인해 불안정하기 그지 없었다. 
 
하지만, 10.5 mach_kernel만 Disassemble에 성공하였지 겨우 25%도 채 되지 않은 이미지로,,,,,우리중 그 누구도 한동안은 Lion(10.5)을 설치해 보지는 못했었다.
잡혀간 그 친구는 어떻게 되었을까?
     
그러나 이때 Netkas가 나타났다.
어떻게 알았는지 누구의 초대였었는지 기억이 안나지만 어쨌든 MSI 신형 메인보드의 BIOS에 대해 연구하고 있을 때 Netkas가 우리들 방에 들어왔다.
우리는 기꺼이 그동안 연구했던 모든 자료를 넘겨 주었고 특히 Kiko는 자신이 가진 모든 자료를 넘겼다.  Netkas, 이녀석이 결국 PC_EFI(후에 카멜레온/키메라로 발전) 부트로더 개발에 성공하였다.
 
 
 
 

 

 
 
 
커스텀맥 디버깅 가이드
 
Boot Flags
 
커스텀맥을 설치하기 위해서는 악몽같은 이슈들이 설치과정중에 존재한다.
안타깝게도 커스텀맥 전문가가 아니라면 스스로 해결하고 극복해 나가야 한다.
대부분 부트로더구성에서 발생하는 다양한 이슈들에 대해서 간단한 과정을 이 가이드에서 설명해 보려 한다.
당연히 부트로더는 Clover, Chameleon 혹은 Chimera 일 것이고 특정한 플래그 혹은 특수한 과정을 설명하는 데, 시스템 스펙에 따른 적절한 부트 플래그를 사용함에 중점을 둔다.
일단, 일반적인 부트 플래그와 사용방법에 대해서 설명해 보기로 한다.
 
-v Verbose Mode
 
이 플래그는 애플사의 로고 대신 시스템이 부팅하는 동안의 모든 과정의 정보와 로그를 보여줄 것이다. 
이 방법을 이용하여 애플 로고에서 멈추었는지의 이유를 알 수 있을 것이고 많은 전문가들이 일반적으로 선호하는 방법이다.
만약 시스템이 특정 라이엔서 멈추었다면 네이버 가두리 양식장이 아닌 구글에서 구글링하여 정보를 알 수 있을 것이다.  만약 시스템이 부팅되지 않아서 도움이 필요할 때 스크린 샷을 찍어 질문에 첨부하면 도움이 될 것이다.
 
-x Safe Mode
 
만약 윈도우즈 경험을 가지고 있다면 안전모드에 대한 경험이 있을 것이다. 안전모드는 시스템에 부팅할 때 필요한 기초적인 드라이버(kexts)만 로딩하여 부팅한다.  
만약 시스템이 verbose 모드에서 부팅하지 않고 원인을 파악할 수 없다면 안전모드가 조금 더 자세한 해결책을 제시할 수 있고 복구할 때에도 유용하다.
또한, 새로운 kext를 설치하였다면 이 방법으로 부팅하여 새로이 설치한 kext를 제거하면 된다.
디버깅하는 방법보다 조금 더 쉽게 문제를 해결할 수 있다.
 
UseKernelCache=No / Yes (10.8+ 이상)
 
커널캐쉬는 기본적으로 disabled 되어 있지만, 캐쉬로 부터 kext를 로딩하는 시간을 줄여 준다.  만약, 적절하게 동작하지 않는다면 극단적으로 부팅시간이 느려지게 된다.
 
주의: 10.8 (lion) 이하는 -f
 
darkwake=0
 
이 플래그는 macOS의 향상된 전원관리 기능을 disable 한다.  시스템이 잠자기에서 깨어날 때, 많은 기능들이 적절하게 동작하지 않는 경우가 있다.  
만약 시스템이 적절하게 잠자기 기능이 동작하지 않을 때 또는 잠자기에서 적절하게 깨어나지 않을 때 이 플래그를 시도해 본다. 대체방법은 darkwake=1 을 주어 enable 시킨다.
 
주의: DSDT를 통해 시스템의 잠자기 기능이 가능할 것이고 또는 기가바이트 메인보드 처럼 호환성이 좋다면 아무런 수정없이 native하게 동작할 것이다.
 
 
 
 
PCIRootUID=1/ PCIRootUID=0
 
이 플래그는 부팅과정중 멈출때 도움이 될 것이다.  일반적으로 PCIRootUID=0 가 사용되는 데, 특히 AMD 그래픽 카드를 사용하는 경우 도움이 된다.
 
주의: 그래픽 카드와 관련된 이슈들에 도움이 되고 초기 설치과정이나 혹은 GPU를 교체할 때 도움이 된다.
 
 
npci=0x3000 / npci=0x2000
 
만약 시스템이 [PCI Configuration Begin]과정중에 멈추었을 때, 이 두가지 플래그를 한번씩 이용해 본다. 일반적으로 0x3000 을 많이 사용하고 0x2000 첫번째 옵션이 적합하지 않을 때 사용된다.
 
관련된 플래그로는 firmware 베이스의 부트로더를 사용하는 경우.
dart=0  
를 사용한다.
 
이것은 VT-d 같은 구형 가상화 기술을 disable 시킨다. 즉 메인보드의 이슈들을 해결해 주지만 VT-x를 사용하는 Virtualbox 혹은 Parallels 같은 어플리케이션을 방해하지 않는다.
 

계속  : http://cafe.naver.com/uefi/12831

구버전 : http://osx86.tistory.com/736

:
Posted by Ritz®™