发布于 2026-01-06 3 阅读
0

在 2016/2017 款 MacBook Pro 上安装 Linux 📖 背景 ⚠️ 免责声明 🛒 你需要准备什么 🐧 发行版 💿 分区和 Linux 安装 🧙 Linux 设置调整 不适用的功能 状态 就这些啦!AWS 安全直播!

MacBook Pro 2016/2017 上的 Linux

📖 背景

⚠️免责声明

🛒 你需要准备什么

🐧 发行版

💿 分区和 Linux 安装

🧙 Linux 微调

哪些方法行不通

地位

就到这里啦!

AWS 安全直播!

大家好!👋 这是我在 dev.to 上的第一篇文章。我不知道该写些什么,所以就决定分享一下我现在正在做的事情:在我的 2016 款 MacBook Pro(13,3 型号,双显卡带触控栏)上安装 Linux 系统。这篇文章或许也能帮助到那些想在没有 T2 芯片的 MacBook(2017 年或更早的型号)上安装 Linux 系统的人。


📖 背景

这一切始于几个月前,当时我对平铺式窗口管理器产生了兴趣,想看看它如何能提高我的日常工作效率。我是一名软件开发人员,经常同时打开很多窗口和程序,所以我决定尝试一下平铺式窗口管理器。可惜的是,macOS 上的选择并不多,我找到了yabai,它很棒!但是,当我开始调整配置文件以更好地适应我的笔记本电脑时,我感觉它还不够完善。

替代文字

用了 yabai 大概一个月后,我遇到了i3-wm,并立刻爱上了它。唯一的问题是……它只支持 Linux。所以我心想,管它呢,不如在我的 MacBook 上装个 Linux 吧……于是,我的 Linux 之旅就此开始。


⚠️免责声明

GitHub 上有很多写得很好的指南,介绍了如何做到这一点(我会在下面放上链接),所以我只想写下我在自己的具体情况下遵循的步骤以及我遇到的问题。

🛒 你需要准备什么

  1. 2016款 MacBook Pro 13,3(带触控栏 - 无 T2 芯片)
  2. 至少8GB的U盘
  3. macOS。具体版本其实并不重要,但重要的是要保留安装,这样触控栏和其他一些功能才能正常工作。

这款 MacBook 有一些组件会让事情变得比平时复杂一些,那就是触控栏和 AMD 独立显卡。

一些非常棒的人参与了驱动程序的开发,力求让一切都以最佳方式运行,所以不用担心,他们已经帮我们搞定了💪


🐧 发行版

我的配置是 i7 CPU,16GB 内存。我试过 Manjaro、Ubuntu 和 Linux Mint,最终选择了后者,我觉得它更稳定。不过,只要内核版本是 5.0.0 或更高,你可以随意选择,这一点很重要,因为有些功能在内核版本较低时就能直接使用。另外,amdgpu 似乎在 5.6 内核上无法正常工作,详情请点击此处


💿 分区和 Linux 安装

1. 禁用系统完整性保护 (SIP)

为了执行安装和启动 Linux 所需的一些后续步骤,我们需要禁用 SIP(​​系统完整性保护)。

  • 重启你的Mac。当启动屏幕出现时,按住Ctrl键Command + R直到屏幕上出现苹果标志。
  • 加载完成后进入恢复模式,点击“实用工具 -> 终端”。
  • 在终端窗口中,输入csrutil disable并按回车键。
  • 重启你的Mac电脑。

2. 创建新分区

我从这篇精彩的指南中截取了所有图片,因为它讲解得非常清楚,而且我写这篇文章时用的也不是 macOS 系统。

  • 从“/应用程序/实用工具”文件夹打开磁盘工具。
  • 在侧边栏中选择启动磁盘,然后单击“分区”按钮。替代文字
  • 在对话框中单击“分区”进行确认。

替代文字

  • 点击“+”按钮添加分区

替代文字

  • 设置分区大小和名称。分区类型选择“MS-DOS (FAT)”。Ubuntu 安装程序将擦除此分区。

替代文字

  • 点击“应用”,然后点击“分区”执行。

替代文字

3. 创建 Linux 启动盘

  • 从Linux Mint 页面或您偏好的发行版下载 ISO 文件。
  • 请下载并安装Etcher,以便将 ISO 文件刻录到 U 盘中。
  • 现在插入U盘,打开Etcher并选择ISO文件进行刻录。

替代文字点击“闪光!”按钮。

4. 从U盘启动

现在我们的U盘里已经有了Linux系统,可以开始安装了。我安装的时候没用到外接键盘/鼠标,但请注意,如果内置键盘/鼠标无法与U盘配合使用,你可能就需要用到它们了。

  • 按住(⌥)键,同时插入 U 盘,重启 Mac 。这将启动 Apple 的“启动管理器”,其中会显示连接到电脑的可启动设备。您的 U 盘应显示为金黄色,并标有“EFI Boot”。选择此 U 盘将进入发行版启动菜单。Option/alt

替代文字

5. 运行安装程序

  • 连接到您的无线网络(如果可以),然后选择安装第三方软件。
  • 在安装选择界面,从底部选择“其他选项”。
  • 选择您之前创建的 FAT-32 分区。单击“-”按钮将其删除。替代文字
  • 选中可用空间后,点击“+”创建新分区。

替代文字

  • 将大小设置为 4000 MB,并将“用途”设置为“交换分区”。(有人说,为了使休眠功能正常工作,交换分区的大小应该是 RAM 大小的 1.5 倍左右。我不确定是否如此,但无论如何,休眠功能对我来说不起作用。)

替代文字

  • 使用“+”按钮创建另一个新分区。使用所有可用空间。将“用途”设置为“Ext4 日志文件系统”。将挂载点设置为“/”。

替代文字

  • 在“用于安装引导加载程序的设备”下选择 ext4 分区。

替代文字

  • 点击完成剩余步骤以创建用户并完成安装。

🧙 Linux 微调

替代文字

目前为止,您的 MacBook 上的 Linux 系统应该安装正常,内置显示屏、键盘和触控板也应该都能正常工作。接下来,我们将修复以下问题:

  1. 📶 无线网络
  2. 🕵️ 伪装 macOS
  3. 📼 切换到集成显卡
  4. 🔊 音频
  5. 👉 触控栏

请注意,重启电脑前 Wi-Fi 将无法使用。

1. 无线网络

这款 MacBook 机型使用的是博通无线网卡,虽然不算优秀,但至少能获得不错的 Wi-Fi 连接。内核使用的 brcmfmac 模块存在问题以下是解决方法。

  • 下载此文件
  • 进而cp brcmfmac43602-pcie.txt /lib/firmware/brcm

无线网络总体上运行良好,但您应该注意以下几个问题:

  • 网络连接信号不太好。
  • 睡眠/唤醒后,5GHz 网络无法显示,即使显示也无法连接。2.4GHz 网络工作正常。

2. 伪造 macOS

我们需要让笔记本电脑误以为它要启动 macOS,否则某些组件(包括集成 Intel GPU)将无法获得电源。为此,我们将使用如下所示的自定义 EFI 文件:



cd /tmp
# See more at https://github.com/0xbb/apple_set_os.efi/issues/20#issuecomment-557352747
wget https://github.com/0xbb/apple_set_os.efi/files/3877561/apple_set_os.zip
unzip apple_set_os.zip

# As root...
sudo su 
mkdir -p /boot/efi/EFI/custom
mv /tmp/apple_set_os.efi /boot/efi/EFI/custom


Enter fullscreen mode Exit fullscreen mode

现在我们需要编辑 GRUB



sudo su
nano /etc/grub.d/40_default

# Add the following lines:
search --no-floppy --set=root --label EFI
chainloader (${root})/EFI/custom/apple_set_os.efi
boot

# Update grub
update-grub


Enter fullscreen mode Exit fullscreen mode

**注意: * 如果您更喜欢使用 rEFInd,完全没问题。只需记得取消注释 refind.conf 文件中的“spoof_osx_version”行即可。更多信息请参阅rEFInd 的文档网站。*

3. 切换到集成显卡

这台笔记本电脑有两个显卡,一个是集成的英特尔显卡,另一个是独立显卡ATI Radeon。由于没有适用于该独立显卡的驱动程序,我们需要切换到集成显卡,然后关闭独立显卡。



sudo su

# Blacklist amdgpu
echo "blacklist amdgpu" > /etc/modprobe.d/blacklist-amdgpu.conf

# Switch to integrated GPU
cd && git clone https://github.com/0xbb/gpu-switch
cd gpu-switch
sudo ./gpu-switch -i


Enter fullscreen mode Exit fullscreen mode
  • 重启
  • 现在我们将加载 amdgpu 模块并正确关闭显卡。```bash

sudo su
gpu-manager | grep 'amdgpu loaded? no' && sudo modprobe amdgpu || echo 'AMD GPU already loaded'
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

See more at https://github.com/Dunedan/mbp-2016-linux/issues/6#issuecomment-416015734

***Note:** Repeat last three steps every time you reboot (can be automated)*

## 4. Audio
Audio doesn't work out of the box, here's how to fix it.

```bash


sudo su
cd /tmp
sudo apt-get install wget make gcc linux-headers-generic
git clone https://github.com/leifliddy/snd_hda_macbookpro.git
cd snd_hda_macbookpro
./install.cirrus.driver.sh


Enter fullscreen mode Exit fullscreen mode

**注意: * 更改需重启系统后才会生效。*

5. 触控栏



sudo apt-get install git dkms

cd /tmp
echo -e "\n# macbook12-spi-drivers\napplespi\napple_ib_tb\nspi_pxa2xx_platform\nintel_lpss_pci" >> /etc/initramfs-tools/modules

git clone https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
git checkout touchbar-driver-hid-driver
dkms add .
uname -r # check kernel version
dkms install -m applespi -v 0.1 -k 5.3.0-24-generic # replace this with your kernel version

# lsinitramfs /boot/initrd.img-5.3.0-24-generic | grep -i "dkms/apple"
lib/modules/5.3.0-24-generic/updates/dkms/apple-ibridge.ko
lib/modules/5.3.0-24-generic/updates/dkms/apple-ib-tb.ko
lib/modules/5.3.0-24-generic/updates/dkms/applespi.ko


Enter fullscreen mode Exit fullscreen mode

如果您希望 F 键默认始终启用,并且使用 Fn 键在 F 键和特殊键之间切换,则使用以下命令(否则,fnmode=1):



echo 'options apple_ib_tb fnmode=2' | sudo tee /etc/modprobe.d/apple_ib_tb.conf
echo 'options apple_ib_tb idle_timeout=60' | sudo tee /etc/modprobe.d/apple_ib_tb.conf
update-initramfs -u -k 5.3.0-24-generic # replace this with your kernel version


Enter fullscreen mode Exit fullscreen mode

您还可以交换fn钥匙control



echo 'options applespi fnremap=1' | tee /etc/modprobe.d/applespi.conf
update-initramfs -u -k 5.3.0-24-generic # replace this with your kernel version


Enter fullscreen mode Exit fullscreen mode

或者将其重新映射到任何其他按键:



# modinfo applespi | grep -w fnremap
parm: fnremap:Remap fn key ([0] = no-remap; 1 = left-ctrl, 2 = left-shift, 3 = left-alt, 4 = left-meta, 6 = right-shift, 7 = right-alt, 8 = right-meta) (uint)

Enter fullscreen mode Exit fullscreen mode




🎉 奖励 1 - 键盘

这里有一篇关于如何重新映射键盘的指南。https
://medium.com/@petrstepanov/a-macos-like-keyboard-remap-on-ubuntu-linux-cae1d108a97

🎉 额外奖励 2 - 触控板

Linux 系统下的触控板体验不太好,这里介绍一下如何改进它。https
://int3ractive.com/2018/09/make-the-best-of-MacBook-touchpad-on-Ubuntu.html


哪些方法行不通

  • 内置麦克风
  • 冬眠
  • 暂停后音频
  • 挂起后的 5 GHz WiFi 网络

地位

请访问https://github.com/Dunedan/mbp-2016-linux查看各组件的最新状态。

替代文字

就到这里啦!

希望这篇指南对您有所帮助。如果您有任何疑问或关于此主题的任何新发现,请随时留言。

非常感谢所有为此付出努力的人。难以置信,竟然有这么多人无私奉献,投入这么多时间精力 🙏

来源

文章来源:https://dev.to/cmiranda/linux-on-macbook-pro-2016-1onb