由于采用了新的T2芯片,因此无法在带有触摸条的新型2018 MacBook上安装Linux。 随着时间的流逝,到2019年底,第三方开发人员实现了许多驱动程序和内核补丁,用于与T2芯片进行交互。 适用于2018年及更新型号的MacBook的主驱动程序实现VHCI的工作(触摸/键盘/等的操作)以及声音的功能。
mbp2018-bridge-drv项目分为3个主要组成部分:
- BCE(缓冲区复制引擎)-建立与T2的主要通信通道。 VHCI和音频需要此组件。
- VHCI是USB虚拟主机控制器; 该组件提供了键盘,鼠标和其他系统组件(其他驱动程序使用此主机控制器来提供更多功能。
- 音频-T2音频接口的驱动程序,当前仅支持通过MacBook内置扬声器输出的音频
第二个项目称为
macbook12-spi-driver ,它实现了键盘输入板,触控板SPI和MacBook Pro(2016年底及以后)的触摸板的输入驱动器的可能性。 从版本5.3开始,内核中现在包含一些键盘/触控板驱动程序。
还使用内核补丁为Wi-Fi,触摸板等设备实现了支持。 当前内核版本为
5.3.5-1目前有效的方法
- NVMe
- 琴键
- USB-C(未经测试的Thunderbolt,当模块自动加载时,它将紧紧地挂起系统)
- 触摸栏(具有打开Fn键,背光,ESC等的功能)
- 声音(仅限内置扬声器)
- Wi-Fi模块(通过brcmfmac且仅通过iw)
- 通过USB-C的DisplayPort
- 感测器
- 暂停/恢复(部分)
- 等..
本教程适用于macbookpro15.1和macbookpro15.2。 这篇文章是从github上用英语摘下来的。 并非所有本文都能奏效,所以我不得不自己寻找解决方案。
您需要安装什么
- USB-C USB扩展坞适配器(至少三个USB输入以网络共享模式连接鼠标,键盘,usb调制解调器或电话)。 仅在安装的早期阶段才需要这样做。
- USB键盘
- USB / USB-C闪存驱动器至少4GB
1.禁止从外部媒体下载的禁令
https://support.apple.com/zh-CN/HT208330https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/2.使用磁盘实用程序分配可用空间
为了方便起见,我立即为磁盘分配了30GB的磁盘空间,并将其格式化为在磁盘实用程序本身中可用。
将物理磁盘分区为“磁盘工具”分区 。
3.形成一个ISO映像
选项:- 您可以采用简单的方法,使用内核5.3.5-1下载完成的映像,并从aunali1 链接下载补丁到完成的映像。
- 通过archlive自己创建映像(您需要具有archa发行版的系统)
安装archiso
pacman -S archiso
cp -r /usr/share/archiso/configs/releng/ archlive cd archlive
将存储库添加到pacman.conf中:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch
忽略pacman.conf中的原始内核:
IgnorePkg = linux linux-headers
添加必要的软件包,最后添加linux-mbp和linux-mbp-headers内核
... wvdial xl2tpd linux-mbp linux-mbp-headers
将脚本更改为以交互方式工作(将pacstrap -C替换为pacstrap -i -C):
sudo nano /usr/bin/mkarchiso
# Install desired packages to airootfs _pacman () { _msg_info "Installing packages to '${work_dir}/airootfs/'..." if [[ "${quiet}" = "y" ]]; then pacstrap -i -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $* &> /dev/null else pacstrap -i -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $* fi _msg_info "Packages installed successfully!" }
我们形成一个图像:
sudo ./build.sh -v
按Y跳过忽略的软件包,然后将iso映像写入USB闪存驱动器:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4.第一次启动
使用插入的闪存驱动器和键盘重新启动。 苹果出现时,按选项,然后选择EFI BOOT。
接下来,您需要按“ e”键并在命令行末尾写入
module_blacklist = thunderbolt 。 如果不这样做,则系统可能无法启动,并且Thunderbolt ICM错误将崩溃。
使用fdisk / cfdisk,我们找到分区(我有nvme0n1p4),格式化并安装该arch。 您可以使用
官方说明或
第三方 。
我们不创建引导分区,我们将引导加载程序写入
/ dev / nvme0n1p1在/ mnt中的环境完全形成之后,并切换到arch-chroot之前,我们编写:
mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt /bin/bash
添加到/etc/pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch
安装内核:
sudo pacman -S linux-mbp linux-mbp-headers sudo mkinitcpio -p linux-mbp
将Thunderbolt和applesmc放在/etc/modprobe.d/blacklist.conf中
blacklist thunderbolt blacklist applesmc
键盘,触控栏等
安装呀:
sudo pacman -S git gcc make fakeroot binutils git clone https://aur.archlinux.org/yay.git cd yay makepkg -si
安装触摸条的模块:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git cd macbook12-spi-driver make install
将模块添加到自动加载:/etc/modules-load.d/apple.conf
industrialio_triggered_buffer apple-ibridge apple-ib-tb apple-ib-als
安装键盘的内核模块。
anuali1存储库具有一个现成的软件包,称为
apple-bce-dkms-git 。 要安装它,请在控制台中编写:
pacman -S apple-bce-dkms-git
在这种情况下,内核模块将称为
apple-bce 。 在自组装的情况下,称为
bce 。 因此,如果要在mkinicpio.conf文件的MODULES部分中注册模块,请不要忘记安装了哪个模块。
手动组装:
git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git cd mbp2018-bridge-drv make cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko
添加bce或apple-bce模块以自动加载:/etc/modules-load.d/bce.conf
bce
如果要默认使用Fn按钮,那么在/etc/modprobe.d/apple-tb.conf文件中,我们将编写:
options apple-ib-tb fnmode=2
更新内核和initramfs。
mkinitcpio -p linux-mbp
安装iwd:
sudo pacman -S networkmanager iwd
5.引导程序
一旦在chroot中安装了所有主要软件包,就可以继续安装引导程序。
我从来没有设法使g工作。 从外部USB驱动器启动grub,但是当您尝试通过nvme对其进行注册时
grub-install --target = x86_64-efi --efi-directory = / boot --bootloader-id = grub
系统崩溃至内核崩溃,并且通过选项重新启动新项目后未出现。 我没有找到任何可理解的解决方案,因此决定尝试使用systemd-boot实施引导。
- 我们启动
bootctl --path=/boot install
然后飞向内核恐慌。 关闭MacBook,再次打开,单击选项(不要使用键盘禁用USB-C集线器) - 检查除外部设备外是否还出现了新的EFI BOOT记录
- 正如第一次安装时一样,我们从外部USB驱动器中选择引导(不要忘记写module_blacklist = thunderbolt)
- 我们挂载磁盘并通过arch-chroot进入环境
mount /dev/nvme0n1p4 /mnt mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt
如果在系统完全加载之前键盘必须工作(如果使用luks / dm-crypt加密,则必须这样做),然后将其写在MODULES部分的/etc/mkinicpio.conf文件中:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
更新内核和initramfs。
mkinicpio -p linux-mbp
配置系统启动
我们编辑文件/boot/loader/loader.conf,删除其中的所有内容,然后添加以下内容:
default arch timeout 5 editor 1
转到/ boot / loader / entries文件夹,创建arch.conf文件并编写:
title arch linux /vmlinuz-linux-mbp initrd /initramfs-linux-mbp.img options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat
如果您使用luks和lvm,则
options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat
在MacOS上重新启动。
6. Wi-Fi设定
事实证明,MacOS将wi-fi适配器的固件文件存储在
/ usr / share / firmware / wifi文件夹中,您可以以blob的形式从那里获取它们,并将其提供给brcmfmac内核模块。 为了准确找出适配器使用的文件,请在MacOS中打开终端并输入:
ioreg -l | grep C-4364
我们得到一长串。 我们只需要
RequestedFiles部分中的文件:
"RequestedFiles" = ({"Firmware"="<b>C-4364__s-B2/maui.trx</b>","TxCap"="C-4364__s-B2/maui-X3.txcb","Regulatory"="C-4364__s-B2/<b>maui-X3.clmb</b>","NVRAM"="C-4364__s-B2/<b>P-maui-X3_M-HRPN_V-m__m-7.7.txt</b>"})
根据您的情况,文件名可能不同。 将它们从/ usr / share / firmware / wifi文件夹复制到USB闪存驱动器,并将其重命名为以下视图:
maui.trx -> brcmfmac4364-pcie.bin maui-X3.clmb -> brcmfmac4364-pcie.clm_blob P-maui-X3_M-HRPN_V-m__m-7.7.txt -> brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt</b>
在这种情况下,最后一个文本文件包含型号名称,如果您的型号不是macbookpro15,2,则需要根据macbook型号重命名此文件。
重新启动进入拱门。
将文件从USB闪存驱动器复制到/ lib /固件/ brcm /文件夹
sudo cp brcmfmac4364-pcie.bin /lib/firmware/brcm/ sudo cp brcmfmac4364-pcie.clm_blob /lib/firmware/brcm/ sudo cp 'brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt' /lib/firmware/brcm/
检查模块的运行状况:
rmmod brcmfmac modprobe brcmfmac
我们确保网络接口通过ifconfig / ip出现。
通过
iwctl配置wifi
注意事项 通过netctl,nmcli等 该接口不起作用,只能通过iwd。使NetworkManager使用iwd。 为此,创建文件/etc/NetworkManager/NetworkManager.conf并编写:
[device] wifi.backend=iwd
启动NetworkManager服务
sudo systemctl start NetworkManager.service sudo systemctl enable NetworkManager.service
7.声音
为了发出声音,您必须安装pulseaudio:
sudo pacman -S pulseaudio
下载三个文件:
移动它们:
/usr/share/alsa/cards/AppleT2.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf /usr/lib/udev/rules.d/91-pulseaudio-custom.rules
8.暂停/恢复
目前,
2019年 10月16日,您必须选择声音还是暂停/恢复。 我们正在等待bce模块的作者完成该功能。
要构建支持暂停/恢复的模块,您必须执行以下操作:
git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git cd mbp2018-bridge-drv git checkout suspend make cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko modprobe bce
如果从anuali1存储库中安装了现成的apple-bce模块,则必须先将其删除,然后再收集并安装支持暂停模式的bce模块。
另外,您需要将applesmc模块添加到黑名单中(如果您之前没有做过此操作),并确保
最后在选项行
中将pcie_ports = compat添加到/boot/loader/entries/arch.conf中。
此刻,当您进入挂起模式时,触控板驱动程序崩溃,而雷电驱动程序有时会使系统挂起30秒钟以上,而在恢复时则挂起几分钟。 这可以通过自动下载问题模块来解决。
创建脚本
/lib/systemd/system-sleep/rmmod.sh :
#!/bin/sh if [ "${1}" == "pre" ]; then rmmod thunderbolt rmmod apple_ib_tb elif [ "${1}" == "post" ]; then modprobe apple_ib_tb modprobe thunderbolt fi
使它可执行:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
现在就这些了。 结果是一个功能全面的系统,但在某些情况下具有暂停/恢复的细微差别。 几天的正常运行时间都没有发现崩溃和内核恐慌。 我希望bce模块的作者能够在不久的将来完成它,并且我们将获得对暂停/恢复和声音的全面支持。