MacBook Pro 2011 显卡门 High Serria 解决方案软件篇
制作Arch Linux启动U盘
- 首先你需要一台可以用的mac和一支U盘。
- 下载Arch Linux,在china的镜像里,我看到了163镜像,选择最新的archlinux.iso。
- 打开mac的终端,输入以下命令,列出所有的设备。
diskutil list
你的USB设备会以/dev/disk1
这样的形式列出来。根据你的U盘的名称和容量确定你的盘符名称,他的命名方式应该大致是/dev/diskX
。
- USB 设备在Mac系统里一般会自动装载,在执行dd块写拷贝命令之前,你必须在终端里卸载(卸载不等于推出)它。
diskutil unmountDisk /dev/diskX
- 现在通过终端命令,拷贝镜像文件到U盘,注意dd命令里有个r在 disk前,意思是原始文件模式,为的是传输文件更快。
sudo dd if=path/to/arch.iso of=/dev/rdiskX bs=1m
- 传输完成之后Mac系统会提示
此电脑不能读取您插入的磁盘
,选择忽略
就好,现在这个U盘已经是可以引导的了。
启动Arch Linux修改EFI参数
- 把U盘插入到MacBook Pro,按住⌥按键启动电脑,选择“EFI boot”启动方式,在选中Arch Linux archiso x86_64 UEFI CD菜单的情况下,按下按键“e”来编辑启动参数;在启动命令的最后加入空格nomodeset,然后按回车,如果没什么问题,Linux就会开始启动了,需要一点时间,请耐心等待。
- 启动完成后输入如下命令。
cd /sys/firmware/efi/efivars
- 列出目录下所有文件
ls
你将会看到有“gpu-power-prefs-…”为前缀的文件名列出(…的地方是UUID的值)。如果你有没有看到“gpu-power-prefs-…”这个文件,也不用着急,因为我也是这个情况,那么请跳过下面步骤,直接去创建“gpu-power-prefs-…”文件
的部分;
有“gpu-power-prefs-…”文件的情况
- 用
rm
命令删除“gpu-power-prefs-…”文件(按Tab键,可以补足“…”的字符串部分)
rm gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
也会发生权限不够的情况,如果运行rm
命令报错提示如下。
operation not permitted
说明在当前状态下efivarfs目录被装载成可读权限,你需要重新装载为可读、可写权限才能删除它,逐行运行下面的命令重新装载。
cd /
umount /sys/firmware/efi/efivars/
mount -t efivarfs rw /sys/firmware/efi/efivars/
cd /sys/firmware/efi/efivars/
rm gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
如果这时候还是报错,你需要用chattr命令来消除文件的持久性,然后再删除它,命令如下。
chattr -i "/sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9”
cd /sys/firmware/efi/efivars/
rm gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
我看到另外一个教程里的情况,就是一直到最后一步,才删除了“gpu-power-prefs-…”这个顽固的文件。
创建“gpu-power-prefs-…”文件
如果找不到 “gpu-power-prefs-… ” 文件,不存在就没必要删掉它了,在有些年份的机器里就找不到这个文件,比如我的机器就是这样。
- 接着我们自行创建这个“gpu-power-prefs-…”文件,按我们给的参数,命令如下。
printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
- 锁定“gpu-power-prefs-…”文件,让它只能被超级用户修改,这样启动的时候你的设置就不会被EFI程序所修改,命令如下。
chattr +i "/sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9"
- 卸载efivars目录并重启,命令如下。
cd /
umount /sys/firmware/efi/efivars/
reboot
移动AMD驱动
禁用SIP(System Integrity Protection)
SIP(System Integrity Protection)模式会锁定系统文件夹,开启状态无法移动系统目录的文件;
SIP模式的开启和关闭,只能在Recovery模式下,通过终端运行命令开启或关闭,默认状态为开启。
- 开机启动时,同时按住⌘+⌥+R,进入网络Recovery模式。
因为我电脑没有安装本地Recovery模式,只能通过网络Recovery模式进入,你们可以直接按⌘+R进入本地Recovery模式,这样更快。 - 点击实用工具,进入终端,输入以下命令。
csrutil status
- 如果结果反馈为enable,则为开启;为disable,则为关闭;输入以下命令,关闭SIP模式。
csrutil disable
reboot
移动AMD显卡驱动文件
- 开机按下⌘+S,进入命令模式,逐行键入以下命令。
fsck -fy(进行磁盘检测)
mount -uw /(装载root文件系统,并获得读写权限)
sudo mkdir /AMD_Kexts/(创建一个目录,来移动和备份AMD驱动文件)
sudo mv /System/Library/Extensions/AMD*.* /AMD_Kexts/(移动所有AMD驱动文件到刚才创建的目录里)
# 这一步我遇到了系统反馈,我没有权限,因为我没有关闭SIP「苹果系统保护」,而我又无法进入recovery模式,通过终端关闭SIP,所以我只好把硬盘拆下来,装进一个移动硬盘盒里,然后通过其他电脑,将/System/Library/Extensions/目录下的AMD相关驱动,移动到我们刚才创建的/AMD_Kexts/目录下。
# 完成上面操作后,再次将电脑回到命令模式
sudo rm -rf /System/Library/Caches/com.apple.kext.caches/(删除所有的驱动缓存)
sudo mkdir /System/Library/Caches/com.apple.kext.caches/(创建一个空的驱动缓存目录,以防系统出错)
sudo touch /System/Library/Extensions/(更新驱动缓存文件的时间戳,这样系统会重新生成驱动缓存)
sudo umount /(卸载分区,以确保修改被保存)
sudo reboot(重启)
修改NARAM参数
- 开机按下⌘+S,进入命令模式,输入以下命令。
nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
sudo reboot
再次重启后,你应该就可以看到熟悉的Mac系统登录界面了,到这里软件修复的工作也基本完成了。你可以继续使用这台电脑再战些时日了。
软件修复之后的其他问题
无法调节背光亮度
合上笔记本无法关闭显示器背光,同时也无法调节亮度,笔记本的显示器会始终以最亮的状态(或者上一次正常显示的亮度)显示,这样对眼睛和对显示屏灯管本身也有伤害,推荐Mac AppStore里有个叫Brightness Slider的软件。
无法使用外接显示器
网传这里有个例外,就是如果你在接了外界显示器的同时,开机屏幕亮起后迅速合上笔记本屏幕,就可以单独使用外接显示器(但是我没有成功过)。
重启后集成显卡驱动失效
有时候用外置移动硬盘启动系统后,可能会造成驱动再次失效的问题,可以在开机时,按下⌘+S,进入命令模式,输入以下命令。
nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
sudo reboot
参考资料
MacBook Pro显卡门解决办法
Force 2011 MacBook Pro 8,2 with failed AMD GPU to ALWAYS use Intel integrated GPU (EFI variable fix)
2011 MacBook Pro显卡问题High Serria解决方式之软件篇
macbook显卡门精简教程
如何重置 NVRAM
重置 SMC
单用户模式启动
进入Apple硬件检测模式
修改EFI参数
Congratulations @meks! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word
STOP
Do not miss the last post from @steemitboard: