MacBookPro11,x

出自 ArchWiki

本文或本章节不符合笔记本电脑页面指南

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

MacBook Pro 11,x 包括 Apple 在 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 HDAPFS 容器分区,包含用于 Apple 的 EFI 加载器、macOS 系统/用户文件、恢复映像和 macOS 中的 交换分区 的卷。

作为一般规则,分区与 Arch Linux 可以安装的任何其他硬件没有什么不同。 如果您计划保留 OS X 以进行双启动,您需要从 OS X 的“磁盘工具”程序中手动缩小主 OS X HFS+/APFS 分区。

注意: OS X 恢复分区在“磁盘工具”中不可见。 但是,如果您调整 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 安装介质放在闪存驱动器上后,您可以在 Mac 启动时按住 Alt(或 Option)键来启动它,然后在 Apple 启动管理器出现时选择适用的 EFI Boot 选项。

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

$ setfont sun12x22

互联网

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

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

如果您两者都没有,唯一的选择是使用板载无线适配器。 根据您的型号,您可能拥有 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 中,因此使用 mount /dev/sdXY /mnt/boot 将其挂载为 /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 引导管理器应显示 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 徽标替换为您喜欢的任何其他图标。

提示: 如果您将 Arch Linux 与 OS X 一起安装,您将能够从 OS X 内的系统设置中更改默认启动位置。 如果 Arch Linux 没有显示为可能的启动选项,您将必须在 OS X 中挂载 EFI 系统分区,然后才能选择您的启动选项
$ diskutil mount disk0s1

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

安装后配置

有关系统管理方向和安装后教程,请参阅 通用建议

此外,您可能需要查看 电源管理 页面,以获取有关电源管理和省电软件的有用提示。

内核参数

警告: 由于内核版本 4.17.2-1 添加了 acpi_osi 参数,且值为空,会导致电池无法检测。 有关更多信息,请参阅此论坛帖子。 需要指定 acpi_osi=Darwin 作为内核启动参数,以使挂起/休眠正常工作。

由于 此错误,可能需要添加 acpi_osi= 作为内核启动参数,以提高电池续航时间。

由于 此错误,可能有必要通过添加 acpi_mask_gpe=0x06 作为内核启动参数来禁用 GPE06。 要验证是否需要这样做,请检查 cat /sys/firmware/acpi/interrupts/gpe06。 应该有大量快速增加的 interrupts 注册,并且您的一个核心应该固定在 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 可用于启用/禁用独立显卡,但这应该不是必要的。 确保安装了 X11 (xf86-video-amdgpu 和 xf86-video-intel) 或 Wayland 的驱动程序,用于 Intel graphicsAMDGPU。 将 REFInd 与 refind.conf 中启用的 spoof_osx_version 一起使用(设置为 10.11 已确认适用于此型号),以使固件启用图形 muxing 硬件。 这是一个 muxed 图形设备,有关 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 会导致“kernele rejected pixbuf”错误,从而冻结桌面。
    • nvidia-dkms 驱动程序崩溃了很多次。
    • nvidia 驱动程序似乎超级稳定,但 GNOME 桌面将无法启动,并向您显示“糟糕! 出问题了”消息。 Cinnamon 桌面在使用 NVIDIA 驱动程序时非常流畅,如果您想要 GNOME 桌面,您可以在 Cinnamon 桌面中运行 gnome-shell --replace & 以切换到 GNOME Shell 作为一种解决方法。

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

在 11,3 上使集成 intel 显卡工作

默认情况下,集成显卡已断电。 要解决此问题,我们需要一个名为 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 安装(但如果需要,可以使用它)。

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

然后您将需要下载一个名为 gpu-switch 的应用程序,用于在双显卡 MacBook Pro 上切换 GPU,它也相当容易使用。 可以从这里下载,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。 使用风险自负。

微码

您可能需要安装 intel-ucode,特别是如果您有 Nvidia 驱动程序。 阅读 wiki 页面以了解有关 微码的更多信息。

HiDPI

有关如何调整系统以适应 Retina 屏幕的信息,请参阅 HiDPI

声音

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

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

触摸板

一种方法是安装 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,适用于 MacBook Pro 11,1 和 11,3,通过 /sys/class/backlight/gmux_backlight/brightness
  • /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 回显到 /proc/acpi/wakeup 来禁用 USB 的唤醒能力,以防止挂起后立即唤醒。 这也适用于 MacBook Air 2013。 为了使此操作永久生效,请创建一个 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 配置文件中

bindcode 124 ...

摄像头

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

哪些不能工作

通用

无线网络

  • broadcom-wlbroadcom-wl-dkms 可以工作
    • 对于某些人来说,稳定性是一个问题,查看 Broadcom wireless 以获取可能的修复方案(例如,如果您的网卡是 BCM4360,则降级内核有效)
    • 如果在上述方法之后稳定性仍然是一个问题,一个可能的替代方案是连接到 802.11g 网络。更新的标准可能会导致 BCM4360 随机断开连接。

背光键 / 睡眠支持

linux-macbookAUR[broken link: package not found] 是一个专门为 MacBook 笔记本电脑创建的 AUR 软件包,它包含了针对这些问题的补丁,以及修复了正确关机和使用 intel_pstate 驱动的 CPU 频率调节。

讨论

参见

示例