2018년 1월 15일 월요일

맥북프로 2011 그레이스크린 문제해결

 

작년 연말을 맥북프로 2011 레이트 그레이스클린 문제해결로 4일가량을 씨름했다. 그냥 안쓰고 버릴까했는데 사실 아무런 문제없이 아주 잘 사용하던 맥북프로 빈티지가 왜 갑자기 안됐나?!
문제는 애플놈들이 시에라하이를 깔라고 꼬득인것 때문이다. 윈도우 pc를 사용할 때에는 새로운 윈도우 버전이 나와도 사람들은 그닥 새로운 윈도우에 끌리지 않는다. 사실 구매해야 하는 문제도 있기 때문이기도 하지만,,,,
그럼에도 절대로 쉽게 윈도우 신버전을 쉽게 깔진 않는다. 하지만 애플은 새로운 os를 공짜로 제공하고 새로운 기능들을 추가해서 기대감을 가지게 하고 왠지모르게 빨리 깔아보는 사람이 뭔가 있어보이게 하는 무엇이 있다. 이놈들의 이런 짓거리가 최근 성능저하라는 꼼수로 나타나긴했다.

사실 워크스테이션으로 작업용, 그래픽, 편집용으로 사용하는 분들은 쉽게 버전을 바꾸지 않는다. 기존에 작업했던 프로젝트파일과 데이터들이 새로운 버전에서 호환되지도 않고, 갑작스레 모든 데이터가 휴지조각이 될 수도 있다는 두려움 때문이다. 나도 그런 경험이 있다.

암튼 각설하고 새로운 하이시에라로 갈아타다가 갑자기 그레이 스크린이 발생했다.
처음에는 그냥 간다하게 해결할 수 있다는 가벼움 마음으로 작업에 임했는데 이놈이 쉽게 해결되지 않고 3박4일을 매달리게 만들었다.

한글로 검색되는 모든 자료를 찾아도 역시나 안보인다.
결국 애플고객센터로 연락해 문의를 했으나,,, 뭐 당연한 결과다. 2012년도에 산 맥북프로를 애플이 제정신이 아니고서야 고쳐주겠는가?? 결국 구글링을 통해서 알 수 있는 간단한 해결은 하드웨어를 손보는 것인데 절대로 내가 맥북프로를 떨궈서 하드웨어가 손상되게 한 적은 없는데?? 검색결과 해당 기종은 과거에 이런 문제로 보드를 무상으로 수리해줬다고 한다 이런 제길,,, 양아치 같은 애플놈들
그래도 역시 대가들이 세계에는 존재하다... 맥포럼에서 발견한 방법으로 해결을 찾았다.

정리하면 해당 문제는 외장 그래픽카드가 세월이 흘러서 접속문제가 생겨 맥os가 그래픽을 제대로 인식하지 못해서 그런다고 한다. 고수들이 찾은 답은 자신들도 하드웨어를 30만원을 주고 가느니 그냥 기존 외장하드를 인식목하게 프로그램을 변경하는 방법을 제시했고, 그방법이 제대로 들어맞아 작동이 된다고 했다. 나도 여러번의 실패를 거듭한 후에야 가능하게 되었다.



2년은 더 사용하고 보관하자, 욕은 나오지만 컴퓨터를 4년 정도 사용할 수 있는 것은 그래도 애플이라는...

아래 내용 참고

1) Create the Arch Linux LiveCD/LiveUSB :

You need a working computer for that and a spare CD/DVD/USB drive. Download the latest Arch Linux ISO image from this page - https://www.archlinux.org/download/ , at the time of writing it is archlinux-2017.03.01-dual.iso . Then you could either simply burn this ISO to CD/DVD (which later could be either inserted to MBP's SuperDrive or External DVD Drive connected to MBP by two USB cables) or create a bootable USB: use the great detailed instructions from this page, https://wiki.archlinux.org/index.php/USB_flash_installation_media

2) Boot to it: insert this CD/DVD/USB to Macbook Pro, hold Option key while booting, choose "EFI boot" (that is your bootable installation media), press "e" key to edit the GRUB options of the Arch Linux archiso x86_64 UEFI CD menu entry while it is selected at the main screen, add nomodeset to the end of this line and press Enter. If everything is done correctly, you will find yourself at the Linux console!

3) Edit EFI vars: looks like efivarfs filesystem is mounted by default! So you can already cd /sys/firmware/efi/efivars and ls to explore this directory and see if there is a "gpu-power-prefs-..." variable (where ... is UUID of this variable). If there is such a variable, its better to remove it with rm. In my case the efivarfs has been mounted by default with read/write permissions, but if you are getting the "operation not permitted" message while attempting to rm, it means that in your case efivarfs has been mounted as read-only and you need to remount it with read-write permissions and try again (credits to totoe_84 for this valuable addition) :
*) cd /
*) umount /sys/firmware/efi/efivars/
*) mount -t efivarfs rw /sys/firmware/efi/efivars/
*) cd /sys/firmware/efi/efivars/

If your screen is so distorted that it is difficult to see the letters, just start typing the rm gpu-power-pre and then press TAB key for autocompletion. In my case there were not such a EFI variable, only "gpu-active-..." and maybe somehow related "gfx-saved-config-restore-status-..." . Then I looked again at that gpu-switch text file (mentioned above, https://github.com/0xbb/gpu-switch/blob/master/gpu-switch),
and entered THESE COMMANDS:

*) chattr -i "/sys/firmware/efi/efivars/" <----- skip this command

Actually a gpu-switch script had "${sysfs_efi_vars}/${efi_gpu}" but I didnt have a "gpu-power-prefs-..." variable - so, partially by mistake, I didn't add that efi_gpu suffix and entered this incomplete path accidentally

*) printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9

Did not have a EFI "gpu-power-prefs-" variable so I thought that it will be OK to create a new one with a random UUID - in this case, taken directly from a gpu-switch script

*) chattr +i "/sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9"

http://www.tecmint.com/chattr-command-examples/ - chattr (Change Attribute) is a command line Linux utility that is used to set/unset certain attributes to a file in Linux system to secure accidental deletion or modification of important files and folders, even though you are logged in as a root user.
...
Syntax of chattr ---> chattr [operator] [flags] [filename]
...
A file is set with ‘i‘ attribute (+i as you see in this command) ---> cannot be modified (immutable). Means no renaming, no symbolic link creation, no execution, no writable, only superuser can unset the attribute.
...
Operator
  1. + : Adds the attribute to the existing attribute of the files.
  2. : Removes the attribute to the existing attribute of the files.
  3. = : Keep the existing attributes that the files have.
This chattr command is supposed to lock a file to make it accessible only by "superuser" - and so that, while booting, your EFI will have no chance to screw up your gpu-power-prefs-... variable under any circumstances

*) cd /

Could not unmount efivars if you are inside this directory, so change to the root directory

*) umount /sys/firmware/efi/efivars/

Guarantees that your EFI variables are flushed to efivarfs filesystem, please unmount it safely before rebooting)

*) reboot

===> IF YOU DID EVERYTHING CORRECTLY, MOST LIKELY THAT YOUR MACBOOK PRO IS NOW USING INTEGRATED GRAPHICS WHILE BOOTING, AFTER BOOTING, AND IS WORKING GREAT AGAIN !

In the future maybe you could need to re-apply this solution if you would have to reset your PRAM / NVRAM / SMC because of some other problems, so remember this solution somewhere... Funny thing: now you can't switch to Discrete GPU even using gfxCardStatus, it is forever stuck at Integrated

I spent two working days to discover this solution, and really hope that it will work flawlessly for every MBP owner with a broken discrete GPU. Good luck!

댓글 없음:

댓글 쓰기