为MacBookPro 2011屏蔽损坏的独显(Linux)

书接上回

上次我们提到,捡来的这台a1297无法正常启动OSX的安装盘(比如10.13会直接进度条读到一半直接白屏卡住),确定是进门了。经过多重考虑,我决定为它安装linux并屏蔽独显使用。

具体步骤

手头刚好有AOSC(20250606)的安装盘,于是安装AOSC。着手开始之前明确我们要做的:

  1. 安装系统(完整安装,Safe Graphics模式)
  2. 如果安装完成后无法进入图形界面(大概率),从LiveCD启动并添加grub参数屏蔽独显,同时防止独显在启动时被使用

    整个过程不需要网络连接

另一种思路应该也同理并可行,但我没有尝试:

  1. 安装无图形界面的版本
  2. 屏蔽独显后安装DE

系统安装过程略(这个过程中显示应该是基本正常的)。经过一番简单的操作我们安装好了系统,但无法正常启动,现在的状况大概表现为黑屏(背光往往是亮着的)或者黑屏+一个光标悬浮。

于是我们启动LiveCD,进入救援环境准备开始操作。在进行下面的操作之前,考虑到(至少对我来说!)硬盘里没有任何重要文件,所以建议在开始前先提权(比如直接sudo su -登入root用户),会方便得多。
挂载硬盘上的原系统根分区到/mnt

1
mount /dev/sdaX /mnt  

挂载必要的系统目录

1
2
3
4
mount --bing /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run

挂载完毕,chroot进硬盘上的系统

1
chroot /mnt

现在我们需要做三件事:

  1. 新建一个系统服务到/etc/systemd/system,让系统在启动的时候关闭独显
  2. 添加一行grub启动参数
  3. 把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
    15
    cat > /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
2
3
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT=\"/&amdgpu.dc=0 radeon.runpm=0 radeon.modeset=0 /' /etc/default/grub

update-grub

黑名单屏蔽驱动:

1
2
3
4
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf

update-initramfs -u

现在一切大功告成,exit退出chroot并从硬盘启动。现在可以正常启动DE并看到没有异样的图形了。
bc

最后

现在出现了两个新问题,虽然对于mac安装linux而言都是常见情况,但也并不是很快可以解决的,暂时留到以后处理:

  • 盒盖睡死,开盖后系统唤醒但屏幕没有反应。
  • 网卡驱动(BCM4331)打不上,但可以用以太网口联网。
    据说后者在ubuntu下工作正常。

而且还不止这些。电脑现在用起来很烫,疑似独显并没有完全关闭而是在空载,这似乎只能通过拆电阻和刷bios来根治,但由于刚刚把这台机器拆散清洗又装回去,我现在懒得做,或许可以花几十块请人做。


为MacBookPro 2011屏蔽损坏的独显(Linux)
http://example.com/2025/07/12/为MacBookPro2011屏蔽损坏的独显-Linux/
作者
TVEM
发布于
2025年7月12日
许可协议