让 Ubuntu 使用 MacBook Pro 的核显

前面已经说过,从 MacBook Air(2013 Late,11″)上备份下来的 Ubuntu,迁移到 MacBook(2018,12″)尽管失败了,然而却在 MacBook Pro(2013 Late,15″)上重生。重生之后的 Ubuntu 当然看起来更加性感了,屏大盘大速度快,很不错。

有个小小的缺点就是,运行起来温度有点高,风扇时不时就会转起来。显然,NVIDIA 的 GeForce GT 750M 是罪魁祸首。这台本子是双显卡,我老人家又不玩儿游戏,所以如果能用 Intel 的核显工作,理论上应该会大幅降温。到网上查了下资料,得知 nvidia-prime 是可以执行切换工作的组件(切换操作请参见 http://ubuntuhandbook.org/index.php/2016/04/switch-intel-nvidia-graphics-ubuntu-16-04/ 或者 https://www.linuxbabe.com/desktop-linux/switch-intel-nvidia-graphics-card-ubuntu,后者提及了命令行下的切换),不过可悲的是,2010 年后的 MacBook Pro,系统需要是 macOS 的时候,才能把核显激活。Ubuntu 当然不是 macOS,好在先行者们作了努力,鼓捣出来一个模块,可以让硬件误以为引导起来的 Ubuntu 就是 macOS。这个模块叫做 apple_set_os.efi,项目地址为 https://github.com/0xbb/apple_set_os.efi

这是一个 EFI 模块,而迁移过来的系统,因为种种历史上的考虑,三太爷一直保持的是传统的 BIOS 引导方式。现在不得不做一点变化。如何把一份已经安装好的 Ubuntu 从 BIOS 引导方式切换为 UEFI 引导方式(当然前提是硬件支持,这个条件 MacBook Pro 是符合的),成了当务之急。网上其实有不少人问过这个问题(也有不少是需要倒过来的),最后发现有一个帖子和我的情况以及要求吻合度很高,因此主要就参照了它:https://askubuntu.com/questions/509423/which-commands-to-convert-a-ubuntu-bios-install-to-efi-uefi-without-boot-repair。这个帖子非常纯粹,一个问题,以及被广泛接受的唯一的一个回答。通过仔细阅读回答,可以把核心思想总结为以下步骤:

0、确保硬盘上有用以安装 EFI 引导程序的独立 EFI 分区,三个条件:大小 200MB+、FAT16/FAT32 文件系统格式、卷标为 EFI,最后一个可能非必须;
1、确保机器以 UEFI 模式将 Ubuntu LiveUSB/LiveCD 引导成功(执行 [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS 来检测);
2、将 Ubuntu 所在分区 mount 起来,并且通过 chroot 切换到其中;
3、使用 apt 命令安装 grub-efi-amd64 软件包(这一过程将导致原先用于引导 BIOS 模式的 grub-pc 被卸载);
4、软件包安装成功后,使用 grub-install 命令安装 grub(显然在执行此命令之前要把 EFI 分区 mount 起来);

我开始的时候,步骤 2 里把 Ubuntu 所在分区记错了,写成了 Linux 引导分区,结果一直 chroot 失败;后来在命令行里指定对了分区,但是由于分区是处于 LVM 管理下的,命令执行又失败,后来是使用 disks 图形工具直接 mount 起来的,虽然加载点比示例命令行里的 /mnt 长了许多,但省去了研究 mount 命令如何加载 LVM 分区的部分。

遇到的另一个问题是,执行步骤 4 之后重启,直接引导失败,出现了 grub 的命令行,一度灰心,认为需要重新来过。后来摸索中直接输入 initrd 竟然把系统给引导起来了,进入后,再次执行了步骤 4,重启正常。

接下来,终于轮到处理那个 efi 模块了。按照其官方说明,把模块复制到相应目录,并修改 /etc/grub.d/40_custom 文件,update-grub 后重启。检查显卡的命令是 lspci -k | grep -A 2 -i “VGA”,果然出现了两块显卡。

打开 NVIDIA X Server Settings,PRIME profiles 并没有出现。于是只好在命令行下 prime-select intel,重启,图形界面显示了 X Server 无检测图形/输入设备之类的提示框,就停住了,鼠标和键盘基本失去响应。Ctrl+Alt+F1 切到终端下,登录,用 prime-select nvidia 换回,然后重启,又正常了,然而副作用是文本终端模式变成了黑屏。

暂告一段落,容后再续。

更新(2018-05-19):最终放弃在 MacBook Pro 上运行 Ubuntu。在网络上周游甚久,发现温度问题是老大难,联想起当年我的第一台 MacBook Pro 曾经被 Ubuntu 半夜更新引发高温,导致一个风扇过载转残的事件,还是不折腾了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注