macOS가 시작할 때 초기에 금지 마크가 나오고 중지 될 수 있습니다. 종종 커널을 읽어 들이고 무 메모...


macOS가 시작할 때 초기에 금지 마크가 나오고 중지 될 수 있습니다. 종종 커널을 읽어 들이고 무 메모리를 확보 할 수없는 오류입니다. 이를 slide 옵션에서 해결합니다.


저 표시가 나와 서서히  정지 해 버리는 경우에 -v 옵션으로 시작하면 "Error Allocating xxxx pages at xxxxxxxx"라는 메시지가 나올수 있습니다. 

예를 들어 아래의 메시지는 "0xe590000 번지에서 0x11c01 페이지의 메모리 공간을 확보하려고했지만 실패했습니다"라는 뜻입니다. 

1 페이지는 0x1000 바이트, 즉 4096 바이트입니다. 10 진수를 사용하여 알기 쉽게 작성하고 "240 메가 바이트 당 번지에서 298 메가 바이트 정도의 메모리 공간을 확보하려고했지만 실패했습니다"라는 느낌의 오류입니다. 100 번대가되고 나서의 MSI 메인 보드에서 자주 발생하는 오류입니다.


간단한 대책법

이 문제를 고쳐주는 것이 다음 kext입니다.

  • AptioMemoryFix.efi
  • OsxAptioFix3Drv.efi
  • OsxAptioFixDrv.efi
  • OsxAptioFix2Drv-free2000.efi


테스트시 하나만 사용해야 합니다.

가장 강력한 것이 마지막 OsxAptioFix2Drv-free2000.efi입니다. 

그 이름 그대로 메모리를 강제로 개방시킵니다. 어떤 메인 보드에서도 거의 작동 최강의 kext입니다. 하지만 너무 강력 때문에 괜찮은가라는 의견이 있습니다. Reddit에 OsxAptioFix2Drv-free2000.efi은 피해야 하고 slide 옵션으로 대응하는 것이 좋다는 의견 도있었습니다. 

하지만 저도 MSI의 메인 보드에서 OsxAptioFix2Drv-free2000.efi를 사용하고 있습니다 만, 문제는 없습니다. 

하지만  slide를 사용한 올바른 해결책을 시도합니다.


 Clover 부팅시 Shell 로 들어갑니다.

마더 보드의 메모리 맵을 볼 수 있습니다. 사용하는 명령어가 memmap입니다. 

fs0 : 등으로 드라이브를 지정하고 필요하다면 cd 명령으로 적당한 디렉토리로 이동 한 후 memmap> memmap.txt 등과 입력하면 해당 위치에 메모리 맵을 텍스트 파일로 저장합니다. 다음은 ASUS의 Z390 마더 보드의 예입니다. (memmap의 출력은 Attributes라는 항목도 있습니다 만, 길어 지므로 생략합니다.)

성공한 보드의 예시

여기를 보면 커널이로드 될 수있는 0x100000 번지를 선두로 0x5315CFFF 번지까지 공터로되어있는 것을 알 수 있습니다. 페이지 수하고 0x5305D 번지 공터입니다. 1.4GB 정도 비어있는 것 같습니다. 처음에 나온 오류 메시지에 따르면, 커널로드하는 데 필요한 메모리 양은 300MB 정도 인 것입니다. 그래서 그냥 비어 있으면 어느 번지에로드도 당연하게 메모리 확보 할 수 있습니다. 덕분에이 메인 보드는 메모리 할당 오류가 나온 것은 아닙니다.

연관되어있다이 공간의 용량은 시작할 때마다 다소 변화 할 수있는 것 같습니다. 그래도 변화는 기껏 100MB 정도입니다.또한 iGPU 할당 메모리를 변경하여도 거의 변화하지 않습니다. ASUS의 메모리 맵은 macOS에 적합한 것입니다.


실패한 보드의 예시

한편, 최근의 MSI 메인 보드에서 AptioMemoryFix.efi 등을 사용하면 상당한 확률로 시작하지 않습니다. MSI는 Z170 칩셋 모델에서 OsxAptioFix2Drv-free2000.efi가 놓을 수 없게되어 버렸습니다. 어떤 메모리 맵이 있는지 살펴 보겠습니다. 다음은 B350M 마더 보드의 메모리 맵입니다. 최근 MSI 메인 보드가 문제 입니다.

ASUS와 MSI의 메모리 맵을 비교하여 봅시다. 0x100000 번지부터 앞의 페이지로 보여줍니다. ASUS는 0x100000 번지부터 0x53000 페이지 이상이 공터입니다. 하지만 MSI는 0x100000 번지부터 0xFF00 페이지가 공터에서 다음 0xB 페이지 (10 진수로 11 페이지)이 사용되고 있고 (너무 작아서 그림에서는 보이지 않습니다), 다음 0x67510 페이지가 비어 있습니다.




즉, MSI 메인 보드는 0x100000 번지부터는 0xFF00 페이지, 즉 267MB 정도의 메모리 밖에 비어 있지 않습니다. 그런 다음 0x10000000 번지에서 겨우 11 페이지, 바이트하고 45MB 만 누군가가 사용하고 있습니다. BS_Code는 것이 그것입니다. 그리고 그 후, 0x1000B000 번지에서 0x7751AFFF 번지까지 대량으로 공터가 있습니다. 따라서 0x100000 번지부터 약 300MB를 확보하려고하면 사용중인 45MB가 방해를 확보 할 수 없습니다. 이제 오류가 나옵니다. 어째서 이런 방해 곳에 사용중인 메모리가 있구나라는 느낌입니다.


slide 해결 옵션

관련 원문https://www.insanelymac.com/forum/topic/331381-aptiomemoryfix/?do=findComment&comment=2564269


  • 최근 CPU는 0x100000 + x * 0x200000이 읽기 시작 합니다
  • 그러나 SandyBridge 또는 IvyBridge의 경우 x가 0x80에서 0xFF까지 위의 계산이지만, x가 0x80에서 0xFF까지의 경우 0x 10300000 + x * 200000

이되는 것으로 알려져 있습니다. 하지만  CPU만을 생각하면, slide 값을 0x200000 배하고 0x100000을 더하면 뿐이므로 간단합니다. 


즉 config.plist의 Boot, Argument 다음과 같이 slide = 128 매개 변수를 추가하면 이러한 메모리 공터가 불연속적인 문제를 해결할 수 있습니다.


KASLR을 해제

부팅 옵션 slide 값을 지정해도, KASLR이 효과가 있다고 slide 값은 여전히 난수 (0x00에서 0xFF까지의 난수)가 할당됩니다.

부팅 옵션 slide 값은 무시되는 것 같습니다. slide 값을 지정하면 동시에 KASLR을 해제해야합니다.

KASLR을 해제하기 위해서는, SIP를 CSR_ALLOW_UNRESTRICTED_NVRAM 플래그를해야합니다. 

이것은 NVRAM의 변경 제한을 해제하는 플래그이지만, 동시에 KASLR도 해제되는 것 같습니다. 이 플래그는 Apple이 공개 된 소스 코드에 따르면,


  #define CSR_ALLOW_UNRESTRICTED_NVRAM (1 << 6) 

라고합니다. 1 6 비트 만 상위로 이동한다는 의미에서 결과는 0x40입니다. config.plist의 RtVariables, CsrActiveConfig에 0x40을 써 둡니다.


<key> RtVariables </ key>
     <dict>
         <key> CsrActiveConfig </ key>
         <string> 0x40 </ string>
     </ dict> 

7 번째 비트가 1이면 다른 숫자로도 좋습니다. CsrActiveConfig로 원래 0x03이라는 설정되어 있었던 경우 0x43으로하면 좋다. 0x64이라는 설정을했다면, 이것은 이미 7 번째 비트가 서 있기 때문에, 그대로 좋습니다. 보안을 최대한 확보한다는 관점에서 0x40 것이 좋다고 생각합니다.

이제 부팅 옵션에서 지정한 slide 값이 사용되게됩니다.이제 OsxAptioFix2Drv-free2000.efi없이 끝나게되었습니다.

다만 CSR_ALLOW_UNRESTRICTED_NVRAM을 허용하면 NVRAM의 재 작성 SIP의 모든 설정이 바뀔 수 있기 때문에 보안은 취약합니다. 

하지만 Hackintosh이므로 config.plist 다시 재부팅하면 SIP는 어떻게도 설정할 수 있으므로 걱정할 필요는 없을지도 모릅니다. 


번역 및 수정 한 내용이며 출처는 아래와 같습니다

https://bootmacos.com/entry/2019/08/10/002814


이 글이 마음에 들면 사이다(10P) | 글쓴이 다른 글 알림이 필요하면 팔로우(10P) | 이 글을 다시 볼려면 KEEP | 이 글이 부적절 하다면 고구마
맥토피아님의 기기정보 펼쳐보기 CPU : XEON 1230 V2 MAINBOARD : ZOTAC Z77 ITX WIFI GRAPHIC : AMD RX 570 4096 MB MEM : 16GB XMP HDD : SAMUNG SSD 830 256GB PSU : SliverStone SX600-G
공개 글쓴이가 전체 공개로 설정 한 글 입니다. 이 게시물에 댓글과 추천은 이 글을 더욱 가치 있게 만듭니다!
cpeter7원글 사이트 chrome으로 들어가서 덧글과 함께 번역해서 읽으시면 훨씬 이해하기 좋습니다. z390M 에서 지금...원글 사이트 chrome으로 들어가서...원글 사이트 chrome으로 들어가서...

원글 사이트 chrome으로 들어가서 덧글과 함께 번역해서 읽으시면 훨씬 이해하기 좋습니다. z390M 에서 지금까지 OsxAptioFix2Drv-free2000.efi 써오면서 지속적인 부팅오류 참으면서 써왔는데, 깨끗하게 이해할 수 있었습니다. 소개해주셔서 감사합니다.


이 자료를 통해 다음과 같이 OsxAptioFix2Drv-free2000.efi를 사용하지 않고 AptioMemoryFix.efi 로 부팅오류문제를 해결할 수 있었습니다.

---

z390M 에서 memmap 으로 확인해보면 kernel을 올릴 수 있는 영역이 0x100000 ~ 0x17BEBFFF 로 0x17AEC page (1page는 4k byte)로 약 378M  정도 가능합니다. 

그리고  kernel은 약 300M 정도 필요하므로 위의 빈 영역에 맞는 것 같지만  osx에서는 보안 관련하여 KASLR(Kernel address space location randomization) 에 의해 kernel을 올리는 시작번지가 0x100000 + x * 0x200000 (x는 slide 값으로 0 ~ 0xff 사이로 random하게 결정)로 세팅됩니다. 

참조:https://www.insanelymac.com/forum/topic/331381-aptiomemoryfix/?tab=comments#comment-2564078

즉, z390M에서는 KASLR을 disable하지 않으면 거의 "Couldn't allocation runtime area" 부팅오류가 나게 됩니다. KASLR을 disable하는 것은 config.plist에서 RtVariables/CsrActiveConfig에 0x43값을 세팅하면 됩니다. 그리고 config.plist의 boot argument에 slide=0 를 세팅하여 로딩 주소를 고정합니다.


joy좋은 자료, 감사합니다. 편안한 하루 되세요.^^좋은 자료, 감사합니다. 편안한 ...좋은 자료, 감사합니다. 편안한 ...
좋은 자료, 감사합니다. 편안한 하루 되세요.^^
플라타너스참고하려고 합니다. 스크랩할게요참고하려고 합니다. 스크랩할게요참고하려고 합니다. 스크랩할게요
참고하려고 합니다. 스크랩할게요
즐거운세상이런 좋은글에 추천이 많이 없어서 아쉽습니다. slide=180 넣으니 memory alloc 문제 해결되네요 감사합니다.이런 좋은글에 추천이 많이 없어...이런 좋은글에 추천이 많이 없어...
이런 좋은글에 추천이 많이 없어서 아쉽습니다.
slide=180 넣으니 memory alloc 문제 해결되네요 감사합니다.

해킨토시 | 커스텀맥 설치&사용팁 - Tip | 설치,사용,활용,안정화

21 공지 안읽으면 후회할! 해킨토시의 그패픽카드 설정에 대해서 꼭 한마디~~! 헤드레스 인텔그래픽 ATI... 41 필독
2.2k
18 공지 카탈리나를 위한 그래픽 카드 선택 팁 207 필독
7.9k
20 공지 노트북 하드웨어 구성/바이오스 변경 업데이트 시 DSDT/SSDTs 패치 안 하기: hotpatch 40 필독
2.5k
41 공지 인텔그래픽 퍼팩트하게 잡는 방법과 (이미 headless 구성하신분도 필독) headless 완벽 구성 226 필독
13k
58 공지 내장그래픽/퀵싱크/헤드레스모드 설정하기 (모하비 기준) 198 필독
10k
13 공지 FB-Patcher 를 사용한 모하비14.1+ USB3 잡기 55 필독
4.6k
27 공지 1탄 쌩 초보도 할수있다 DSDT-SSDT 패치를 하여보자. 90 필독
9.7k
30 공지 입문자 안내서보충 86 필독
15k
111 공지 입문자를 위한 x86 안내서 256 필독
141k
3 그래픽팁 맥토피아's : 10.15.2 베타 이후 부터 HEVC 에 문제가 있는 분들은 7
207
3 인텔보드 lucker's : X99 Catalina UPADTE 이후 스피드스탭 안될때 해결된 방법 7
230
11 커맥공통 아이뱅크's : 설치시 내장그래픽 잡는법 19
3.4k
2 인텔보드 호라이즌제로던's : Dell XPS 9570에 네이티브 맥 WIFI/BT 장착하기 7
163
13 커맥공통 Hazelnut's : AppleALC + Lilu 초보자도 따라하는 방법 24
1.8k
1 커맥공통 맥토피아's : LILU + APPLEALC 기능에 대해서 알아보자 8
355
5 커맥공통 산골멍게's : 왕초보를 위한 고스트 이미지 복원 방법 26
1.3k
17 커맥공통 라자's : 해킨에서 사용가능한 Wi-FI 무선랜 정리표 2번째 10.14 까지 23
1.0k
39 커맥공통 맥토피아's : 10.10 요세미티 / 10.8 ML /10.9 / Mavericks UEFI USB 설치 디스크 제작하기 32
46k
0 커맥공통 맥토피아's : 해킨토시 10.9 Mavericks Simple 설치 가이드 14
9.9k
9 커맥공통 shl628's : [Clover 활용하기] UEFI 가 지원되지 않는 Legacy BIOS 에서 하나의 GPT 디스크에 멀티 부팅 구... 17
750
10 커맥공통 호라이즌제로던's : DW1830, WIFI만 되고 BT가 안되거나 이상할때 조치방법 31
1.1k
21 커맥공통 뉴라이프's : 안읽으면 후회할! 해킨토시의 그패픽카드 설정에 대해서 꼭 한마디~~! 헤드레스 인텔그래픽 ATI... 41
2.2k
2 AMD보드 Lamia's : AMD USB 버스파워 문제 1
73
18 그래픽팁 맥토피아's : 카탈리나를 위한 그래픽 카드 선택 팁 207
7.9k
27 커맥공통 원도리's : 1탄 쌩 초보도 할수있다 DSDT-SSDT 패치를 하여보자. 90
9.7k
1 인텔보드 현이안's : 커맥을 설치할때 램 슬롯은 1,3번을 추천드립니다. 9
373
41 그래픽팁 뉴라이프's : 인텔그래픽 퍼팩트하게 잡는 방법과 (이미 headless 구성하신분도 필독) headless 완벽 구성 226
13k
3 인텔보드 에헹에헹에's : Z390 + 라데온 rx5700XT + 인텔 내장그래픽 조합 카탈리나 설치 안되시는 분 시도해보세요 6
255
4 커맥공통 Kazama's : VMware로 Mojave 10.14 구동 방법 21
986
20 커맥공통 뽀로로's : 노트북 하드웨어 구성/바이오스 변경 업데이트 시 DSDT/SSDTs 패치 안 하기: hotpatch 40
2.5k
2 커맥공통 새털구름's : 구형 메인보드에 USB 3.1 Gen2. 확장카드를 달아주었습니다 3
142
2 커맥공통 맥토피아's : LILU + 기타 플러그인 정리 2
258
0 커맥공통 맥토피아's : LILU + AIRPORTBRCCMFIXUP 에 대해서 알아보자 2
233
3 커맥공통 Zyxwv's : GTX1080 (원도우) + RX580 (맥) 사용 - 절반의 우회 성공기 - AddProperties for Nvidia bogus ... 17
707
10 커맥공통 원도리's : 5탄 쌩 초보도 할수있다 노트북 배터리 패치 DSDT-SSDT 패치를 하여보자. 42
2.2k
0 커맥공통 warp's : 카탈리나 애플 TV 해외계정 있으면 볼수 있네요^^ 3
109
0 그래픽팁 맥토피아's : 엔비디아 그래픽 카드 유저를 위한 별도 정리 - Mojave or Catalina 지원 여부 8
320
1 인텔보드 lucker's : OS UPDATE 때 선행되야 할 작업 1
158
3 인텔보드 뽀로로's : CPU 전력 관련: MSR lock을 커널 패치로 풀어주기 6
320
5 커맥공통 좌절금지's : 해킨툴로 알아보는 MSR Locked // MSR Unlocked + C-State Enabled // Disabled 9
580
9 그래픽팁 맥토피아's : LiLU + WhateverGreen(WEG) 기능에 대해서 알아보자 7
560
3 커맥공통 아이리스원's : cpu hex 코드표 확인 방법
171
1 커맥공통 talas's : 커맥 설치후 한영 변환이 안되고 시스템이 느려졌을 때... 3
218
6 커맥공통 Ohchang's : Z390 메인보드 부팅 불가능 해결 케이스(H370, B360 등도 적용 가능) 8
286
3 그래픽팁 산골멍게's : 모하비 HD4600 그래픽 잡기(같은 것이 같은것 아닌 것 같습니다) 18
857
3 커맥공통 재댕's : Error loading kernel cache (0x9) 해결방법 10
989
2 커맥공통 쑨블리's : 라이젠 에서 AX200 블투5.0/와이파이 2
161
18 커맥공통 hayanfafa's : 커맥 허세 팁 - PCI 정보 채우기 虛張聲勢 30
1.2k
2 커맥공통 야크트74's : 커맥에서 시스템 무결성 보호(SIP)'를 비활성화 하기 6
545
6 커맥공통 곰아자씨's : DELL DW1820a CN-08PKF4 모듈 WIFI BT 장착 사용기 11
342
7 커맥공통 원도리's : 4탄 쌩 초보도 할수있다 DW1560 (Broadcom BCM94352Z M.2 NGFF) 와이파이 교체기 16
1.7k
2 커맥공통 아이리스원's : 카탈리나 어도비 제품들 설치 가능하네요 4
208
21 커맥공통 KsJ's : [끝판왕 시리즈] DSDT 파헤치기 34
4.2k
11 커맥공통 KsJ's : DSDT를 수정하는데 있어서 필요한 최소한의 팁 v1.2 6
3.2k
7 커맥공통 신이's : 잠자기(슬립) 모드 설정 + (개인적인 실험 후) 추가 정보 12
1.2k
2 커맥공통 udnoes's : AIO 수냉쿨러 일명 짭수 커맥에서 컨트롤하기 feat. liquidctl 5
206
3 그래픽팁 뉴라이프's : RX 5700 XT 카탈리나 설치 팁 2
317
29 커맥공통 퓨리온's : 한 하드에(HDD, SSD) Windows, OSX 듀얼 O/S 설치하기.. 93
9.4k
0 커맥공통 두시기's : H.264 인식 성공 9
148
맨위로 가기
1 - 32
서버에 요청 중입니다. 잠시만 기다려 주십시오...