跳转至内容

MacBookPro11,x

来自 ArchWiki

本文或章节未遵循 笔记本电脑页面指南

原因: 此页面完全忽略了所有可能的 样式 规则 (在 Talk:MacBookPro11,x 讨论)

MacBook Pro 11,x 包括苹果在 2013 年末和 2014 年中推出的配备 Retina 显示屏的型号。与前代产品一样,它基于 Intel 芯片组,但为了处理与 Apple 相关的功能,在特定情况下可能需要进行一些手动配置。

与之前的 MacBook 型号一样,MacBook Pro 11,x 支持 UEFI。本文将涵盖 Arch Linux 上的硬件支持的当前状态以及安装后建议。

固件

在继续安装 Arch Linux 之前,请务必确保您的 MacBook 已安装最新的固件更新。此过程需要 OS X。在 OS X 中,打开 App Store 并检查更新。如果您的 Mac 找到并安装了任何更新,请务必重新启动您的计算机,然后再次检查更新以确保您已安装所有内容。

注意 如果您卸载了 OS X 或想重新安装它,Apple 提供了很好的说明。

建议保留 OS X 安装,因为 MacBook 固件更新只能在 OS X 中安装。但是,如果您计划完全删除 OS X,请备份这些文件,在 Linux 中调整颜色配置文件时您会需要它们。

/Library/ColorSync/Profiles/Displays/*

分区

MacBook 默认使用 GPT 分区方案。对于运行 OS X 10.12 及更早版本的 MacBook,分区布局通常如下所示:

  • EFI: 约 200 MB 的 EFI 系统分区
  • Macintosh HD: 包含您的 OS X 安装的主分区,使用 HFS+ 格式化
  • Recovery HD: 一个次要的 HFS+ 分区,包含用于恢复备份、格式化和重新安装 OS X 的实用程序,通常通过在 MacBook 启动时按住 Cmd+r 来启动。

对于运行 macOS 10.13 或更高版本的 2013/2014 年款 MacBook,分区布局更简单。

  • EFI: 约 200 MB 的 EFI 系统分区
  • Macintosh HD: 一个 APFS 容器分区,包含 Apple 的 EFI 加载器、macOS 系统/用户文件、恢复映像以及 macOS 的 交换 卷。

总的来说,分区与 Arch Linux 可以安装的任何其他硬件没有区别。如果您计划保留 OS X 以便双系统启动,您需要从 OS X 的磁盘工具程序中手动缩小 OS X 的主 HFS+/APFS 分区。

注意 OS X 的恢复分区在磁盘工具中不可见。但是,在调整 OS X 分区大小时,该分区将自动移动。在使用 APFS 的 MacBook 上,恢复映像存储在 APFS 主分区中,调整 APFS 分区大小会移动所有 macOS 数据。
提示 您可以在 OS X 中通过打开终端并运行 diskutil list 来查看系统的真实分区结构。或者,如果您已经启动了 Arch 安装介质,您可以通过运行 fdisk -l 来检索类似信息。
警告 如果您的 OS X 分区使用 FileVault 2 加密,您必须在继续之前禁用磁盘加密。在 OS X 分区调整大小后,可以重新启用 FileVault 2。
注意 如果您计划删除 OS X,建议在进行分区之前禁用 MacBook 的启动声音。只需在 OS X 中启动,静音您的系统声音,然后重新启动到 Arch Linux 安装介质。请记住,启动声音的音量只能在 OS X 中可靠地修改。

安装

安装与任何其他标准笔记本电脑的安装类似。请参阅官方 安装指南 以获取更详细的说明,因为以下内容主要描述了特定于此 MacBook 型号的与这些说明的偏差。

由于此 Mac 型号不包含 CD 或 DVD 驱动器,您可能希望将 Arch 安装介质复制到 USB 闪存驱动器。将 Arch 安装介质放在 U 盘上后,您可以通过在 Mac 启动时按住 Alt(或 Option)键,然后在 Apple 启动管理器出现时选择适用的 EFI 引导选项来启动它。

由于此型号的笔记本电脑具有高 DPI 显示屏,因此控制台字体显示将非常小,并且根据您的偏好,可能难以使用。您可能希望更改为更易读的字体,例如:

$ setfont sun12x22

网络

Thunderbolt 以太网适配器和 USB 转以太网适配器通常会自动识别。如果您使用 Thunderbolt 以太网适配器,则可能需要在适配器插入的情况下为机器供电,以便系统能够识别它。

另一个简单的选择是使用 Android 设备通过 USB 网络共享。有关更多信息,请参阅 Android tethering

如果您两者都没有,唯一的选择是使用板载无线适配器。根据您的型号,您可能拥有 Broadcom BCM43602,它受开源 brcmfac 模块支持,该模块内置于 Linux 内核中,通常默认启用。如果是这种情况,您应该可以在安装程序中使用无线网络,无需进一步配置。

其他 BCM43XX 芯片组可能仅受专有驱动程序支持,例如 b43wlbroadcom-wl 包包含在 Arch 安装程序介质中,但可能需要在芯片组正常工作之前手动启用。b43 驱动程序也内置于内核中并包含在安装程序介质中,但它需要来自 b43-firmwareAUR 包的外部专有固件,该固件需要从另一台已连接到互联网的机器下载。

您可以通过运行 ip link show 来列出安装程序环境中的可用网络接口。如果您可以在列表中看到您的无线接口,您现在应该可以使用 wifi-menu 来选择并连接到您的无线网络。

如果 Linux 回送设备是唯一列出的接口,您可能需要加载一个替代的 Broadcom 驱动程序。为此,请首先确保所有 Broadcom 驱动程序都已卸载。

# rmmod ssb
# rmmod bcma
# rmmod b43
# rmmod wl

然后尝试再次加载 brcmfmac

# modprobe bcma

等待几秒钟,然后再次列出您的网络接口。如果您仍然看不到您的无线接口,请再次卸载 brcmfmac 并尝试重新加载 wl

# rmmod bcma
# modprobe wl

如果仍未列出无线接口,您需要在另一台安装了 pacman 的计算机上编译 b43-firmwareAUR 包,将生成的包文件放在第二个 USB 存储设备上,在 Arch Live 环境中安装该包,然后加载 b43 模块,如上所述。有关更多信息,请参阅 Broadcom wirelessmakepkg

注意 如果您使用了 wlb43 驱动程序,它们将需要手动安装到您的新 Arch 系统中。这可以通过同步 broadcom-wl/broadcom-wl-dkmsb43-firmwareAUR 包(根据需要)来完成,可以在设置期间或启动到新 Arch 系统后进行。

设置引导加载程序

MacBook 可以轻松地配置为直接从 Apple 启动加载器使用 systemd-bootGRUB,而无需第三方工具,如 rEFInd。对于支持 UEFI 的系统,systemd-boot 是推荐的方式。

  • 首先,请确保您已将 EFI 系统分区挂载到 /boot(在 chroot 环境内,因此将其挂载为 /mnt/boot,使用 mount /dev/sdXY /mnt/boot)。
  • 正常继续 安装指南
  • 进入 chroot 环境后,键入以下命令安装 systemd-boot
    # bootctl --path=/boot install
    上述命令会将 systemd-boot 二进制文件复制到 /boot/EFI/Boot/BOOTX64.EFI,并将 systemd-boot 本身添加为 EFI 引导管理器加载的默认 EFI 应用程序(默认引导条目)。
  • 继续进行 systemd-boot#Configuration 以正确设置 引导加载器

下次重启时,按住 MacBook 启动时的 Option 键时出现的 Apple Boot Manager 应该会显示 Arch Linux(它将显示为 EFI Boot 作为可能的引导选项)。

注意 如果您想使用 GRUB,请查看 Mac#GRUB
提示 安装后,可以选择性地在 MacBook 启动管理器中设置一个自定义图标。为此,您需要安装 wgetlibrsvglibicns 包。之后,只需按照以下命令操作:
$ wget -O /tmp/archlinux.svg https://archlinux.org.cn/logos/archlinux-icon-crystal-64.svg
$ rsvg-convert -w 128 -h 128 -o /tmp/archlogo.png /tmp/archlinux.svg
# png2icns /boot/.VolumeIcon.icns /tmp/archlogo.png
$ rm /tmp/archlogo.png
$ rm /tmp/archlinux.svg

显然,您可以将 Arch logo 替换为您喜欢的任何其他图标。

提示 如果您将 Arch Linux 与 OS X 并排安装,您将能够从 OS X 中的系统设置更改默认引导位置。如果 Arch Linux 未显示为可能的引导选项,您必须在 OS X 中挂载 EFI 系统分区,然后再选择您的引导选项。
$ diskutil mount disk0s1

请记住,也可以从 systemd-boot 加载 OS X。

安装后

有关系统管理方向和安装后教程,请参阅 General recommendations

此外,您可能还想查看 Power management 页面,其中包含有关电源管理和省电软件的有用提示。

内核参数

警告 自 4.17.2-1 内核版本以来,添加具有空值的 acpi_osi 参数会导致电池无法检测。有关更多信息,请参阅此 论坛主题。为了使挂起到正常工作,需要将 acpi_osi=Darwin 指定为 内核引导参数

由于 此 bug,可能需要将 acpi_osi= 添加为内核引导参数以提高电池寿命。

由于 此 bug,可能需要通过将 acpi_mask_gpe=0x06 添加为内核引导参数来禁用 GPE06。要验证这是否是必需的,请检查 cat /sys/firmware/acpi/interrupts/gpe06。此处应有一个快速增长的中断计数,并且您的一个核心应达到 100% 的占用率。

风扇控制

安装 mbpfan-gitAURmacfand-gitAUR(或不再维护的 macfanctldAUR)并启用 mbpfan.service、macfanctld.service 或 macfand.service,以防止笔记本过热。

控制台

要获得最大的控制台字体,可以使用

/etc/vconsole.conf
...
FONT=sun12x22

图形

仅配备集成 Intel 显卡且没有独立 GPU 的 MacBook Pro 开箱即可支持。有关更多详细信息和配置选项,请参阅 Intel graphics

  • MacbookPro11,5 (MacBook Pro Retina, 15 英寸, 2015 年中配 AMD Radeon R9 M370X)
    • 这通过 mesa 驱动程序使用 amdgpu。这应该可以正常工作并默认安装。amdgpu-pro 驱动程序不支持此 GPU。
    • 要启用 GPU 切换:在 GRUB 中设置一个启动到终端的选项,以及在出现问题时设置 rEFInd。可以使用 https://github.com/0xbb/gpu-switch 来启用/禁用独立显卡,但这不应是必需的。请确保安装了 Intel 显卡AMDGPU 的 X11(xf86-video-amdgpu 和 xf86-video-intel)或 Wayland 驱动程序。使用 REFInd 并启用 refind.conf 中的 spoof_osx_version(设置为 10.11 已确认适用于此型号)以使固件能够启用显卡复用硬件。这是一个复用显卡设备,有关 apple-gmux 的更多信息可以在这里找到:https://docs.linuxkernel.org.cn/gpu/vga-switcheroo.html。使用以下命令测试:
      $ glxinfo | grep "OpenGL renderer" && DRI_PRIME=1 glxinfo | grep "OpenGL renderer"

包含独立 Nvidia GPU 的版本需要额外的配置。

  • MacBook Pro 11,3
    • nvidia 驱动程序可以工作,请参阅 NVIDIANouveau。如果您使用专有驱动程序,请参阅以下链接 [1] 获取更多详细信息。
    • 如果使用 GRUB 作为您的 引导加载器,则可以配置集成 Intel GPU。下面将提供详细信息。
    • xf86-video-nouveau 包似乎很稳定。在 MATE 和 GNOME 中切换到 VT 再返回工作正常。有时 Chromium 会导致“内核拒绝像素缓冲区”错误,从而导致桌面冻结。
    • nvidia-dkms[broken link: replaced by nvidia-open-dkms] 驱动程序经常崩溃。
    • nvidia[broken link: package not found] 驱动程序似乎非常稳定,但 GNOME 桌面可能无法启动,显示“哦,不!发生了一些错误”消息。Cinnamon 桌面在使用 NVIDIA 驱动程序时非常流畅,如果您想要 GNOME 桌面,您可以在 Cinnamon 桌面中运行 gnome-shell --replace & 来切换到 GNOME Shell 作为一种变通方法。

请注意,视频输出端口(HDMI 和 DisplayPort)已硬连接到 Nvidia GPU,因此如果您使用 Intel GPU 并关闭 Nvidia GPU,它们将无法工作。切换 GPU 需要重新启动,因此如果您主要将笔记本电脑放在办公桌上,配置可切换显卡可能不值得麻烦设置然后每次需要切换时都重新启动。但是,Nvidia GPU 的功耗确实比 Intel 的高很多,因此您的电池续航时间将受到显著影响。

让集成 Intel 显卡在 11,3 上工作

默认情况下,集成显卡处于关闭状态。要解决此问题,我们需要一个名为 apple_set_os 的 GRUB 函数。此函数尚未正式合并,因此我们需要自己构建 GRUB。

  • 从 AUR 下载 grub-gitAUR 包。
  • [2] 获取补丁。
  • 将补丁内容放入一个文件,例如命名为 apple.patch
  • 将此补丁添加到您的 PKGBUILD 并运行 makepkg -si
  • 重启进入 OS X 并下载 gfxCardStatus v2.2.1(新版本无法正常工作)。运行该应用程序并指定集成显卡。
  • 重启,在 GRUB 提示符处键入 c 进入控制台,然后在提示符处键入 apple_set_os

您现在应该可以安装 xf86-video-intel 并让您的显卡工作。

请注意,HDMI 端口和 MiniDP 已焊接到 NVIDIA 显卡上,这意味着要运行外部显示器,您需要使用专用显卡。

禁用 NVIDIA 显卡的替代方法

虽然上述切换显卡的方法有效,但还有一种更有效的方法,不需要使用 gfxCardStatus 或修补的 GRUB 安装(但如果需要,也可以使用)。

首先,Intel GPU 在没有名为 apple_set_os 的补丁的情况下将无法工作。您可以使用修补的 GRUB 或使用 rEFInd,并在 refind.conf 中将 spoof_osx_version 设置为所需值。这需要在每次启动 Arch 之前加载,否则 Intel GPU 将无法工作。它可以被 GRUB 链式加载。

然后您需要下载一个名为 gpu-switch 的应用程序,用于切换双显卡的 MacBook Pro。它也相当易于使用。可以从此处下载:https://github.com/0xbb/gpu-switch

其次,下载 gpu-switch 后,将应用程序提取到您的主目录,并打开终端模拟器,cd 到该目录。要切换到 Intel 显卡,请以 root 身份运行 gpu-switch -i,重启后显卡将生效。反之,要启用专用显卡,请以 root 身份运行 gpu-switch -d。您必须已使用上述补丁启动才能使其工作。

接下来,gpu-switch 不会完全关闭专用显卡。要做到这一点,您必须创建一个自定义 grub 菜单项并编译一个程序来关闭专用显卡。

为此,请参阅以下文章:MacBookPro10,x#Graphics

您现在应该拥有工作的集成显卡,并且专用 GPU 应该已关闭。如果您在执行此操作后看到黑屏,请等待片刻,看看会发生什么。如果屏幕长时间保持黑色,请尝试重置 SMC,然后重新启动到 Arch。

我注意到之后 VGA switcheroo 禁用了 nouveau 驱动程序。如果此解决方法仍无效,请尝试安装一个 cronjob 包,并添加以下内容:

@reboot echo OFF > /sys/kernel/debug/vgaswitcheroo/switch @reboot echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

我不确定 vgaswitcheroo 命令是否真的起作用,我需要有人测试此解决方法并告诉我他们的测试结果。

要查看您的专用 GPU 是否已成功禁用,请运行:

# cat /sys/kernel/debug/vgaswitcheroo/switch
注意 gpu-switch 仅在少数型号上进行了测试,包括 MacBookPro9,1、MacBookPro10,1 和 MacBookPro11,3。请自行承担风险使用。

微代码 (Microcode)

您可能需要安装 intel-ucode,特别是如果您有 Nvidia 驱动程序。有关 Microcode 的更多信息,请阅读 Wiki 页面。

HiDPI

有关调整 Retina 屏幕系统设置的信息,请参阅 HiDPI

声音

如果您不想听到系统启动时的恼人声音,一种摆脱它的方法是在 Mac OS 下将声音关闭。

此外,如果您使用的是 PulseAudio,有时它会认为 HDMI 是默认声卡;要解决此问题,请安装 pavucontrol 并将模拟立体声设置为备用设备。

触控板

一种方法是安装 xf86-input-synaptics 并根据您的喜好进行配置。

/etc/X11/xorg.conf.d/50-synaptics.conf
Section "InputClass"
    MatchIsTouchpad "on"
    Identifier      "touchpad catchall"
    Driver          "synaptics"
    # 1 = left, 2 = right, 3 = middle
    Option          "TapButton1" "1"
    Option          "TapButton2" "3"
    Option          "TapButton3" "2"
    # Palm detection
    Option          "PalmDetect" "1"
    # Horizontal scrolling
    Option "HorizTwoFingerScroll" "1"
    # Natural Scrolling (and speed)
    Option "VertScrollDelta" "-100"
    Option "HorizScrollDelta" "-100"
EndSection

Ctrl+点击作为右键点击

使用这个 SuperUser 文章 [3],我让 Ctrl+点击作为右键点击工作。我不得不将睡眠时间增加到 0.1。

input-mtrack

另一种方法是使用 xf86-input-mtrack-gitAUR。如果您喜欢将拇指放在触摸板上,这款驱动程序是正确的选择,因为它有一个 IgnoreThumb 选项。

通过此配置,触摸板的行为会更像 osx。

/etc/X11/xorg.conf.d/00-touchpad.conf
Section "InputClass"
    MatchIsTouchpad "on"
    Identifier      "Touchpads"
    Driver          "mtrack"
    Option          "Sensitivity" "0.64"
    Option          "FingerHigh" "5"
    Option          "FingerLow" "1"
    Option          "IgnoreThumb" "true"
    Option          "IgnorePalm" "true"
    Option          "DisableOnPalm" "true"
    Option          "TapButton1" "1"
    Option          "TapButton2" "3"
    Option          "TapButton3" "2"
    Option          "TapButton4" "0"
    Option          "ClickFinger1" "1"
    Option          "ClickFinger2" "2"
    Option          "ClickFinger3" "3"
    Option          "ButtonMoveEmulate" "false"
    Option          "ButtonIntegrated" "true"
    Option          "ClickTime" "25"
    Option          "BottomEdge" "30"
    Option          "SwipeLeftButton" "8"
    Option          "SwipeRightButton" "9"
    Option          "SwipeUpButton" "0"
    Option          "SwipeDownButton" "0"
    Option          "ScrollDistance" "75"
    Option          "VertScrollDelta" "-111"
    Option          "HorizScrollDelta" "-111"
EndSection

交换 Opt 和 Command 键

hid_apple 模块支持交换 opt 和 cmd 键。

# echo 1 > /sys/module/hid_apple/parameters/swap_opt_cmd

要使更改永久生效,请将选项添加到 /etc/modprobe.d/hid_apple.conf重新生成 initramfs

options hid_apple swap_opt_cmd=1

键盘背光

请参阅 Mac/Troubleshooting#Keyboard backlight

屏幕背光

  • Intel,在 Linux 3.13 上工作。
  • Framebuffer,通过 /sys/class/backlight/gmux_backlight/brightness 在 MacBook Pro 11,1 和 11,3 上工作。
  • /sys/class/backlight/gmux_backlight/brightness 中的亮度可以通过 gmux_backlightAUR[broken link: package not found] 工具在没有 root 权限的情况下轻松修改。需要下面的 setpci 设置。
  • Nvidia,默认设置下无效。尝试以 root 身份执行 setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0。创建 systemd 服务在启动时执行此操作可能很有价值。
  • AMD 型号可能需要一个修补过的内核才能调整背光。linux-macbookAUR[broken link: package not found] 内核可以解决此问题。
注意 如果屏幕不显示提示符或登录管理器(即黑屏),请将 i915.invert_brightness=1 追加到内核参数中。

挂起

本文或本章节已过时。

原因: 引用了 2013 年的内核版本 (在 Talk:MacBookPro11,x 讨论)

在 Linux 3.13 上工作。

为了防止休眠时立即唤醒,可能需要通过将 XHC1 echo 到 /proc/acpi/wakeup 来禁用 USB 的唤醒能力。这也适用于 2013 年款 MacBook Air。要使此设置永久生效,请创建一个 systemd 服务:

/etc/systemd/system/fix-spurious-wakeups.service
[Service]
Type=oneshot
ExecStart=sh -c "echo XHC1 > /proc/acpi/wakeup"
RemainAfterExit=true
[Install]
WantedBy=multi-user.target

然后执行 daemon-reload启用 fix-spurious-wakeups.service

Linux 3.12 休眠后无背光。请使用休眠功能。

省电

禁用内置读卡器和蓝牙控制器可能可以节省电池寿命。当不使用它们时,创建以下 udev 规则:

/etc/udev/rules.d/99-apple_cardreader.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="8406", RUN+="/usr/local/sbin/remove_ignore_usb-device.sh 05ac 8406"
/etc/udev/rules.d/99-apple_broadcom_bcm2046_bluetooth.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="8289", RUN+="/usr/local/sbin/remove_ignore_usb-device.sh 05ac 8289"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="4500", RUN+="/usr/local/sbin/remove_ignore_usb-device.sh 0a5c 4500"

由于 udev 的 OPTIONS=="ignore_device" 可能无法可靠工作,上述规则使用 一个脚本 手动从 /sys/bus/usb/devices/ 中删除 USB 设备。

如果电池寿命不满意,使用省电工具可能有所帮助,例如官方仓库中的 tlp 和/或 powertop。为了更好地优化电池寿命,TLP 还有一个配置文件位于 /etc/default/tlp,您可以编辑该文件以适应您的机器。有关更多信息,请分别访问这些工具的 Wiki 页面 TLPPowertop

SD 卡读卡器

截至 Linux 3.18,在挂起后偶尔会消失。解决方法:

/etc/modprobe.d/xhci-reset-on-suspend.conf
# Reset XHCI USB devices on suspend/resume, fixes SD Card reader vanishing after suspend
options xhci_hcd quirks=0x80

注意:截至 Linux 3.18.6-1(可能还有更早的 3.18 之后版本),此修复可能不再需要,并且可能会导致问题,从挂起失败到 SD 卡根本不被识别。测试此修复是否有效,以确定最适合您的设置。

重新配置电源键

默认情况下,systemd 会根据 /etc/systemd/logind.conf 中的定义处理电源键。通过将 HandlePowerKey=ignore 设置为,systemd 将忽略电源键事件。

现在可以将电源键重新配置为键码 124。例如,在 i3 conf 中:

bindcode 124 ...

摄像头

一个逆向工程驱动程序正在开发中:https://github.com/patjak/facetimehd/。它被标记为实验性,但基本功能似乎有效。安装 facetimehd-dkmsAURfacetimehd-dataAUR

无效的内容

常规

Wi-Fi

  • broadcom-wlbroadcom-wl-dkms 工作正常。
    • 对某些人来说,稳定性是一个问题,请参阅 Broadcom wireless 了解可能的修复方法(例如,如果您的网卡是 BCM4360,则降级内核可能有效)。
    • 如果在进行上述操作后稳定性仍然存在问题,一个可能的替代方法是连接到 802.11g 网络。更现代的标准可能导致 BCM4360 随机断开连接。

背光键 / 休眠支持

linux-macbookAUR[broken link: package not found] 是一个专门为 MacBook 笔记本电脑创建的 AUR 包,其中包含用于解决这些问题的补丁,以及正确关闭电源和使用 intel_pstate 驱动程序进行 CPU 频率缩放的功能。

讨论

参见

示例