为MacBookPro 2011屏蔽损坏的独显(Linux)
书接上回
上次我们提到,捡来的这台a1297无法正常启动OSX的安装盘(比如10.13会直接进度条读到一半直接白屏卡住),确定是进门了。经过多重考虑,我决定为它安装linux并屏蔽独显使用。
- 如果你希望安装OSX,这里也列出两篇文章供参考:
具体步骤
手头刚好有AOSC(20250606)的安装盘,于是安装AOSC。着手开始之前明确我们要做的:
- 安装系统(完整安装,Safe Graphics模式)
- 如果安装完成后无法进入图形界面(大概率),从LiveCD启动并添加grub参数屏蔽独显,同时防止独显在启动时被使用
整个过程不需要网络连接
另一种思路应该也同理并可行,但我没有尝试:
- 安装无图形界面的版本
- 屏蔽独显后安装DE
系统安装过程略(这个过程中显示应该是基本正常的)。经过一番简单的操作我们安装好了系统,但无法正常启动,现在的状况大概表现为黑屏(背光往往是亮着的)或者黑屏+一个光标悬浮。
于是我们启动LiveCD,进入救援环境准备开始操作。在进行下面的操作之前,考虑到(至少对我来说!)硬盘里没有任何重要文件,所以建议在开始前先提权(比如直接sudo su -
登入root用户),会方便得多。
挂载硬盘上的原系统根分区到/mnt
:
1 |
|
挂载必要的系统目录
1 |
|
挂载完毕,chroot进硬盘上的系统
1 |
|
现在我们需要做三件事:
- 新建一个系统服务到
/etc/systemd/system
,让系统在启动的时候关闭独显 - 添加一行grub启动参数
- 把A卡的驱动加入黑名单
启动参数和系统服务的写法有现成的解决方案,不怎么需要动太多脑。
创建系统级服务(这里取名叫disable-gpu.service
),让系统在启动时关闭独显。
- 基本思路是用内核提供的双显卡切换接口
vgaswitcheroo
,为文件switch
写入值OFF
来强制关闭未使用的独立GPU - 系统启动进入
multi-user.target
阶段时就会自动执行[Service]
部分
之后我们启用它并重载守护进程。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15cat > /etc/systemd/system/disable-gpu.service <<EOF
[Unit]
Description=Disable Discrete GPU
Before=display-manager.service # 在图形界面启动前执行,这时候图形驱动还没加载
[Service]
Type=oneshot # 单次执行类型,执行完就退出
ExecStart=/bin/bash -c "echo OFF > /sys/kernel/debug/vgaswitcheroo/switch" # 关闭未使用的独立gpu电源
[Install]
WantedBy=multi-user.target # 绑定多用户模式
EOF
systemctl enable disable-gpu.service
systemctl daemon-reload
添加内核启动参数,然后更新
1 |
|
黑名单屏蔽驱动:
1 |
|
现在一切大功告成,exit
退出chroot并从硬盘启动。现在可以正常启动DE并看到没有异样的图形了。
最后
现在出现了两个新问题,虽然对于mac安装linux而言都是常见情况,但也并不是很快可以解决的,暂时留到以后处理:
- 盒盖睡死,开盖后系统唤醒但屏幕没有反应。
- 网卡驱动(BCM4331)打不上,但可以用以太网口联网。
据说后者在ubuntu下工作正常。
而且还不止这些。电脑现在用起来很烫,疑似独显并没有完全关闭而是在空载,这似乎只能通过拆电阻和刷bios来根治,但由于刚刚把这台机器拆散清洗又装回去,我现在懒得做,或许可以花几十块请人做。
为MacBookPro 2011屏蔽损坏的独显(Linux)
http://example.com/2025/07/12/为MacBookPro2011屏蔽损坏的独显-Linux/