Brave
@47c132035ed7a1105a867946b99d67af 网络安全与大数据研究小组 公开
讨论 Intel MacBook Pro 全系安装 Ubuntu/Linux 完整配置指南

Intel MacBook Pro 全系安装 Ubuntu/Linux 完整配置指南

涵盖 2016–2020 年所有 Intel 版 MacBook Pro(13" / 15" / 16"), 包括无 Touch Bar 款、Touch Bar 款,以及 T2 安全芯片款。

系统版本:Ubuntu 24.04 LTS / 24.10 / 25.04 及衍生发行版(Pop!_OS、Linux Mint、Zorin OS 等)


机型速查

第一代:2016–2017(无 T2 芯片)

型号标识年份尺寸Touch BarTouch ID独显声卡芯片
MacBookPro13,1201613"Cirrus CS8409
MacBookPro13,2201613"Cirrus CS8409
MacBookPro13,3201615"✅ AMDCirrus CS8409
MacBookPro14,1201713"Cirrus CS8409
MacBookPro14,2201713"Cirrus CS8409
MacBookPro14,3201715"✅ AMDCirrus CS8409

第二代:2018–2020(带 T2 安全芯片)

型号标识年份尺寸Touch BarTouch ID独显声卡
MacBookPro15,12018-1915"✅ AMDT2 (apple-bce)
MacBookPro15,22018-2013"T2 (apple-bce)
MacBookPro15,3201915"✅ AMD VegaT2 (apple-bce)
MacBookPro15,42019-2013"T2 (apple-bce)
MacBookPro16,1201916"✅ AMD 5000MT2 (apple-bce)
MacBookPro16,2202013"T2 (apple-bce)
MacBookPro16,3202013"T2 (apple-bce)
MacBookPro16,4202016"✅ AMD 5000MT2 (apple-bce)

Apple Silicon(M1/M2/M3/M4)不在此文范围,请参考 Asahi Linux


硬件兼容性总表

组件2016–2017(无 T2)2018–2020(有 T2)
Intel 显卡✅ 内核 i915 免驱✅ 内核 i915 免驱
AMD 独显✅ 内核 amdgpu 免驱✅ 内核 amdgpu 免驱
键盘 & 触控板✅ 内核 applespiapple-bce VHCI(需 T2 内核)
内置扬声器✅ 需第三方驱动✅ 需 T2 内核 + apple-bce
麦克风⚠️ 部分正常⚠️ 部分正常
Wi-Fi⚠️ BCM43602 信号弱✅ BCM43602 同,16寸款需额外固件
蓝牙✅ 免驱✅ 免驱
摄像头uvcvideo 免驱✅ 通过 apple-bce 暴露为 USB
屏幕 HiDPI
Touch Bar⚠️ 需 SPI 驱动⚠️ 需 T2 内核 + tiny-dfr
Touch ID❌ 不支持❌ 不支持
电池
NVMe SSD
Thunderbolt⚠️ 可能需禁用 IOMMU
挂起/休眠⚠️ 可能有问题⚠️ 部分修复
风扇控制✅ 内核自带t2fanrd 守护进程

第一章:2016–2017 款(无 T2 芯片)

1.1 安装概述

这些机型不需要特殊内核。标准 Ubuntu ISO 即可安装。安装后需要额外配置音频和 Touch Bar。

1.2 音频修复(Cirrus Logic CS8409)

所有六款 2016-2017 MacBook Pro 均使用 Cirrus Logic CS8409 HDA 编解码器,主线内核未包含完整驱动。

# 安装依赖
sudo apt install wget make gcc linux-headers-$(uname -r) git

# 克隆驱动
git clone https://github.com/davidjo/snd_hda_macbookpro.git
cd snd_hda_macbookpro

# 如果使用 HWE 内核(6.11+),需手动安装 linux-source
# 确认所需版本:
uname -r | cut -d- -f1   # 例:6.14.0
# 从 Ubuntu 新版仓库下载对应版本:
wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-source-$(uname -r | cut -d- -f1)_*.deb
sudo dpkg -i linux-source-*.deb

# 编译安装(脚本会自动检测内核版本选择合适的分支)
sudo ./install.cirrus.driver.sh

# 重启
sudo reboot

内核版本与脚本对应:

内核脚本说明
< 6.17install.cirrus.driver.pre617.sh旧流程,提取 sound/pci/hda 编译
≥ 6.17install.cirrus.driver.sh新流程,适配重构后的内核源码树

注意事项:

  • 每次内核更新后需重新运行安装脚本
  • 耳机接口通常不受影响
  • 如果 pavucontrol 有跳动条但喇叭无声,检查是否静音或输出设备选错

1.3 Touch Bar 配置(13,2 / 13,3 / 14,2 / 14,3)

# 克隆 SPI 驱动
git clone https://github.com/almas/macbook12-spi-driver
cd macbook12-spi-driver
git checkout touchbar-driver-hid-driver

sudo ln -s "$(pwd)" /usr/src/applespi-0.1
sudo dkms install applespi/0.1 --force

# 添加模块到 initramfs
sudo tee -a /etc/initramfs-tools/modules >/dev/null <<'EOF'
applespi
apple_ib_tb
intel_lpss_pci
spi_pxa2xx_platform
EOF

echo -e "apple-ibridge\napple-ib-tb" | sudo tee -a /etc/modules

# 配置 Touch Bar 行为(fnmode=2 默认显示媒体键)
sudo tee /etc/modprobe.d/apple_ib_tb.conf >/dev/null <<'EOF'
options apple_ib_tb fnmode=2
options apple_ib_tb idle_timeout=60
EOF

# 修复 hid-sensor-hub 抢占总线
sudo tee /etc/udev/rules.d/90-apple-ibridge.rules >/dev/null <<'EOF'
ACTION=="add", SUBSYSTEM=="hid", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="8600", ENV{HID_PHYS}=="*/input3", RUN+="/bin/sh -c 'echo %k > /sys/bus/hid/drivers/hid-sensor-hub/unbind 2>/dev/null; sleep 1; echo %k > /sys/bus/hid/drivers/apple-ibridge-hid/bind 2>/dev/null'"
EOF

sudo udevadm control --reload-rules
sudo update-initramfs -u -k $(uname -r)
sudo reboot

1.4 Wi-Fi 信号优化(BCM43602)

所有 2016-2017 款以及部分 2018+ 款均使用 BCM43602。开源驱动 brcmfmac 信号偏弱。

# 部署调优 NVRAM 固件
sudo apt install iw
curl -L -o /tmp/brcmfmac43602-pcie.txt \
  "https://gist.githubusercontent.com/cristianmiranda/ba9d64b4324f0803d9422d765de62252/raw/fa8c3db4ece70e21b9619d918a5e5bfb6a28d72b/brcmfmac43602-pcie.txt"
sudo cp /lib/firmware/brcm/brcmfmac43602-pcie.txt \
        /lib/firmware/brcm/brcmfmac43602-pcie.txt.bak 2>/dev/null || true
sudo cp /tmp/brcmfmac43602-pcie.txt /lib/firmware/brcm/
sudo modprobe -r brcmfmac && sudo modprobe brcmfmac

# 关闭 Wi-Fi 省电模式
sudo tee /etc/NetworkManager/conf.d/wifi-powersave-off.conf >/dev/null <<'EOF'
[connection]
wifi.powersave = 2
EOF
sudo systemctl restart NetworkManager

1.5 键盘 & 触控板

# 键盘重复延迟(蝶式键盘手感偏硬,调低延迟可改善)
gsettings set org.gnome.desktop.peripherals.keyboard delay 250
gsettings set org.gnome.desktop.peripherals.keyboard repeat-interval 25

# 触控板
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll true

1.6 屏幕 HiDPI

# 开启分数缩放
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
  • 13英寸(2560×1600)建议 175%–200%
  • 15英寸(2880×1800)建议 150%–175%

第二章:2018–2020 款(T2 安全芯片)

2.1 T2 芯片简介

T2 是 Apple 自研安全芯片,负责:

  • 键盘、触控板输入(通过 VHCI 虚拟 USB 控制器)
  • 内置扬声器、耳机接口(通过 apple-bce 音频驱动)
  • 摄像头(通过 apple-bce 暴露为 USB 设备)
  • 风扇控制、SMC 系统管理
  • 启动安全、加密存储

因此,T2 Mac 需要特制内核才能驱动这些设备。

2.2 安装方式

方式 A:使用 T2 定制 ISO(推荐)

t2linux 项目 提供预集成的 Ubuntu/Debian ISO,开箱支持键盘、触控板、音频。

# 下载 T2 Ubuntu ISO
# https://github.com/t2linux/T2-Ubuntu/releases
# 写盘启动,安装过程与标准 Ubuntu 一致

方式 B:标准 ISO + 后装 T2 内核

如果已用标准 ISO 安装,手动替换内核:

# 添加 T2 APT 源
curl -fsSL https://raw.githubusercontent.com/AdityaGarg8/t2-ubuntu-repo/main/add repo.sh | sudo bash

# 安装 T2 内核(会自动拉入 apple-bce 等依赖)
sudo apt update
sudo apt install linux-t2  # 主线内核
# 或
sudo apt install linux-t2-lts  # LTS 内核

# 添加必要内核参数
sudo tee /etc/default/grub.d/t2-params.conf >/dev/null <<'EOF'
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT intel_iommu=on iommu=pt pm_async=off"
EOF
sudo update-grub

# 配置音频
sudo apt install apple-t2-audio-config

# 重启
sudo reboot

方式 C:手动安装 T2 内核 deb

T2-Ubuntu-Kernel Releases 下载 linux-image-*t2*.deblinux-headers-*t2*.deb

sudo dpkg -i linux-headers-*.deb linux-image-*.deb
sudo update-grub
sudo reboot

2.3 键盘 & 触控板(T2 款)

T2 款不需要 applespi。键盘、触控板通过 apple-bce 模块暴露为 USB HID 设备。安装 T2 内核后自动生效。

如果键位映射不对(Ctrl / Option / Command 错位),可配置 hid_apple 模块:

# 交换 Option 和 Command 键(PC 键盘布局习惯)
sudo tee /etc/modprobe.d/hid_apple.conf >/dev/null <<'EOF'
options hid_apple swap_opt_cmd=1
options hid_apple fnmode=2
EOF

2.4 音频(T2 款)

T2 款音频通过 apple-bce 驱动,安装 T2 内核后需额外配置:

sudo apt install apple-t2-audio-config

# PipeWire 用户(Ubuntu 24.04+ 默认)还需:
sudo apt install pipewire-audio

16寸机型(MacBookPro16,1 / 16,4)低音增强:

sudo apt install t2-apple-audio-dsp-speakers161

麦克风修复(T2 款麦克风音量普遍偏低):

sudo apt install t2-apple-audio-dsp-mic

2.5 Touch Bar(T2 款)

T2 款 Touch Bar 通过 tiny-dfr 驱动,可自定义显示内容:

sudo apt install tiny-dfr
sudo systemctl enable --now tiny-dfr

2.6 风扇控制

T2 款没有传统 SMC,需用 t2fanrd 控制风扇:

sudo apt install t2fanrd
sudo systemctl enable --now t2fanrd

配置文件 /etc/t2fanrd/config.toml

# 温度阈值(摄氏度)
[[temperature_zones]]
name = "CPU"
high = 75
critical = 95

[[temperature_zones]]
name = "GPU"
high = 70
critical = 90

# 风扇转速映射
[fans]
min_speed = 2000
max_speed = 6200

2.7 已知问题(T2 款)

问题说明
Thunderbolt 热插拔IOMMU 配置不当可导致内核崩溃
音频输入/输出切换插入耳机时自动切换偶有不灵
挂起恢复部分内核版本有问题
Touch ID完全无解
内置麦克风音量低,需 DSP 配置
首次启动键盘不响应偶发,重启 apple-bce 模块即可

第三章:通用配置与优化

3.1 Bluetooth BLE 延迟优化

sudo tee -a /etc/bluetooth/main.conf >/dev/null <<'EOF'

[LE]
MinConnectionInterval=6
MaxConnectionInterval=9
ConnectionLatency=0
ConnectionSupervisionTimeout=200
EOF
sudo systemctl restart bluetooth

3.2 挂起修复

# 2016-2017 款
sudo tee /etc/default/grub.d/mbp-suspend-fix.conf >/dev/null <<'EOF'
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT acpi_sleep=nonvs s2idle"
EOF

# T2 款需要不同的参数(已在 T2 内核安装时配置)
# 检查现有参数:
grep GRUB_CMDLINE_LINUX_DEFAULT /etc/default/grub

sudo update-grub

3.3 AMD 独显功耗控制(15"/16" 双显卡机型)

sudo tee /usr/local/bin/gpu-mode >/dev/null <<'SCRIPT'
#!/bin/bash
[ "$1" != "low" ] && [ "$1" != "high" ] && [ "$1" != "auto" ] && {
    echo "Usage: gpu-mode [low|high|auto]"; exit 1
}
echo "$1" > /sys/class/drm/card1/device/power_dpm_force_performance_level
notify-send "GPU 模式" "已切换至: $1"
SCRIPT
sudo chmod +x /usr/local/bin/gpu-mode

3.4 省电设置

sudo apt install tlp tlp-rdw
sudo systemctl enable tlp

# Intel 显卡省电
sudo tee /etc/modprobe.d/i915-power.conf >/dev/null <<'EOF'
options i915 enable_psr=1 enable_fbc=1
EOF

3.5 查看电池状态

upower -i /org/freedesktop/UPower/devices/battery_BAT0

第四章:内核选择建议

策略2016–2017(无 T2)2018–2020(有 T2)
标准内核✅ 可用❌ 键盘/触控板/音频均失效
T2 内核✅ 必需
Ubuntu GA(6.8)✅ 最稳定⚠️ 需降级或使用 LTS T2 内核
Ubuntu HWE(6.11+)⚠️ 需手动 linux-source⚠️ 需 T2 主线内核
主线最新(6.x+)⚠️ 可能引入回归⚠️ 关注 t2linux 发布页

第五章:已知无法解决的问题

功能所有 Intel MacBook Pro
Touch IDT1/T2 安全芯片协议未公开
硬件加密引擎Apple 专属
macOS 独有功能(Handoff、Universal Clipboard)Apple 生态封闭
原生 Thunderbolt 热插拔(T2 款)IOMMU 兼容性问题
原装充电器快充信息SMC 协议未公开

第六章:卸载指南

2016-2017 款

# 音频驱动
cd ~/snd_hda_macbookpro
sudo ./install.cirrus.driver.sh -r

# Touch Bar
sudo dkms remove applespi/0.1 --all
sudo rm -rf /usr/src/applespi-0.1

T2 款

# 移除 T2 内核,回到默认内核
sudo apt remove linux-t2 linux-t2-lts
sudo update-grub

# 移除 T2 工具
sudo apt remove apple-bce apple-t2-audio-config t2fanrd tiny-dfr

第七章:快速上手脚本

2016-2017 款一键脚本

#!/bin/bash
set -e
echo "=== MacBook Pro 2016-2017 Ubuntu 配置 ==="

# 音频
git clone https://github.com/davidjo/snd_hda_macbookpro.git /tmp/snd
cd /tmp/snd
sudo ./install.cirrus.driver.sh

# Wi-Fi 省电关闭
sudo tee /etc/NetworkManager/conf.d/wifi-powersave-off.conf >/dev/null <<'EOF'
[connection]
wifi.powersave = 2
EOF

# 键盘/触控板
gsettings set org.gnome.desktop.peripherals.keyboard delay 250
gsettings set org.gnome.desktop.peripherals.keyboard repeat-interval 25
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll true

# HiDPI
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

echo "=== 完成,重启后生效 ==="

T2 款一键脚本

#!/bin/bash
set -e
echo "=== MacBook Pro T2 Ubuntu 配置 ==="

# 添加 T2 源
curl -fsSL https://raw.githubusercontent.com/AdityaGarg8/t2-ubuntu-repo/main/add_repo.sh | sudo bash
sudo apt update

# 安装 T2 内核
sudo apt install -y linux-t2 apple-t2-audio-config t2fanrd tiny-dfr

# 内核参数
sudo tee /etc/default/grub.d/t2-params.conf >/dev/null <<'EOF'
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT intel_iommu=on iommu=pt pm_async=off"
EOF
sudo update-grub

# Wi-Fi 省电关闭
sudo tee /etc/NetworkManager/conf.d/wifi-powersave-off.conf >/dev/null <<'EOF'
[connection]
wifi.powersave = 2
EOF

# 风扇守护
sudo systemctl enable t2fanrd

# 键盘映射(交换 Option/Cmd)
sudo tee /etc/modprobe.d/hid_apple.conf >/dev/null <<'EOF'
options hid_apple swap_opt_cmd=1
EOF

echo "=== 完成,重启进入 T2 内核 ==="

参考链接