TL;DR
보안 업데이트를 하기 위해선 다음 단계를 거쳐야 한다.
- System Integrity Protection 을 끄기(disable)
- 위를 위하여 안전모드(Recovery)로 부팅한 후, 터미널을 열고
csrutil disable
을 입력한다. - Recovery 진입이 불가능하다면, Reset NVRAM 을 한 뒤 다시 해본다.
- 이후 정상 부팅한 뒤,
csrutil stauts
로 확인한 후 업데이트 작업을 진행한다. - 작업이 완료되면 다시 안전모드로 진입 후
csrutil enable
해준다. (그러나… 이게 안된다. 안되면 다시 Reset NVRAM.)
언젠가부터 카탈리나에서 보안 업데이트가 잘 안되기 시작했다. NVRAM 을 날려주면 되는 경우도 있었고, 안되기도 했었고. 어쨌든 어찌 어찌해서 되긴 됐었으나, 어느 시점부터는 이런 행운이 찾아 와주질 않았다. 업데이트 파일을 받고, 재부팅을 하면 ‘사과’에서 반쯤 진행된 채로 그냥 얼어붙어버린다.
이게 아마도.. 2022-004 (Catalina) 쯤부터였던 듯 하다.
맥OS 를 쓸 일은, 지금으로선 딱 하나밖에 없고, 그나마 그다지 자주 쓰지도 않기 때문에 저 업데이트는 무시해왔다. 더구나, 아예 지원이 끊긴 하이 시에라도 가끔 쓰는 판국인데, 그보다 훨~씬 뒤에 나온 카탈리나야 뭐.. 업데이트 하든 말든 아무런 상관이 없었다.
그러다가!! 한번 파봤다. 왜 안되는지.
문제는 System Integrity Protection 때문이란다. 이게 뭐하는 건진 잘 모르겠으나, 아무튼 뭔가 보안 요소인가보다. 일례로, 이게 켜져있으면 /Library/Updates
에 있는 파일을 수정할 수가 없다. 물론, sudo 를 써도 불가능하다.
아무튼, 최근 macOS 는 이 기능을 꺼줘야 판올림이 된다는데.. 정식 mac 이라면 이 작업이 자동으로 되는 모양이지만, Hack!! 에선 그렇질 못하다. 따라서 수동으로 해줘야 한다.
또, 이 기능이 켜져있는 상태에서 업데이트 작업을 했을 경우, 이 기능을 끄더라도 제대로 진행이 되질 않았다. 이 때는 관련 파일을 삭제해준 뒤 판올림을 시도하면 된다.
이를 위해서 먼저 Recovery 로 진입해야 한다. 헌데.. 내 기계에선 리커버리로 갈 수가 없었다. 왜 그런지 이유는 모르겠고.. OpenCore 에서 뭔가를 만져줘야 하는지는 모르겠으나, 아무튼 불가.
이 짓 저 짓 하다가 성공한 방법은?? 바로, NVRAM 초기화!
이러고 나니 Recovery 입국권이 주어졌다.
하지만 세상이 그리 만만하지 않은게, NVRAM 초기화도 쉽게 되질 않았다. 예전에 리눅스에서 이 작업을 했었던 듯도 한데, 결국 방법은 못찾았고, OpenCore 의 힘을 빌릴 수밖에 없었다. 이전 오픈코어에는 이 메뉴가 기본제공됐었는데, 언젠가부터 또 사라져버렸다. (이 글을 쓴 시점에서 내가 사용한 OpenCore 는 최신판인 0.8.5 이다.)
OpenCore 에 ResetNVRAM 항목 넣기
Drivers 디렉토리에 ResetNvramEntry.efi
파일이 있는지 확인한다. 있다면, config.plist(UEFI/Drivers) 에 이 파일을 추가하고 Enabled 상태로 설정한다. 이 작업을 그냥 하기엔 복잡하므로, OpenCore Configurator 를 사용한다.
그리고 부팅하면, 저 메뉴가 보인다.
어떤 문서에선 ‘Misc – Security – Tools’ 쪽을 건드려야한다고도 하는데, 거기에도 비슷한 항목이 있지만, 그보단 위 방법이 제대로인 듯 하다.
Reset NVRAM 후, Recovery 진입. System Integrity Protection 끄기
내 경우, Reset NVRAM 후에 Recovery 로 진입할 수 있었다. 왜 이게 되는지는 아는 바 없다.
어쨌든 들어갔으면, 터미널을 열고 다음 명령을 수행한다.
csrutil disable
그리고 부팅하여 일반 모드로 들어간다.
System Integrity Protection 확인 후 판올림 진행
터미널을 열고, 현재 상태를 확인한다.
csrutil status
이게 disable 로 나와야 판올림을 할 수 있다.
** 만약 status 가 enable 인 상태에서 판올림을 했었고, 실패했었다면?
이럴 경우 그냥 판올림 작업을 하면 또 안된다.
이때는 이전 업데이트 파일을 지우고 새롭게 시작한다.
sudo rm -rf /Library/Updates
그리고 진행하면… 그리고 행운이 따른다면 성공이 함께할 수 있다!
다시 되돌리기..??
System Integrity Protection 을 원래대로 되돌리려면 csrutil enable
을 해줘야 하는데, 그러려면 다시 리커버리로 가야 한다. 근데.. 역시나 또 가지질 않는다. 왜 이러는지 알 수가 없네.
하여, 또 한번 그냥 Reset NVRAM 을 해준다.
그리고 정상 부팅해보면, 이 값이 enable 로 돌아와 있다.
이런 식으로 성공.
남의 거 살짝 훔쳐 쓰려니 어렵네..