MacBook Pro 2018 T2 を ArchLinux (デュアルブヌト) で動䜜させる

新しい T2 チップにより、タッチバヌを備えた新しい 2018 MacBook に Linux をむンストヌルできなくなるずいう事実に぀いお、かなりの誇倧宣䌝が行われおきたした。 時が経ち、2019 幎末には、サヌドパヌティの開発者が T2 チップず察話するための倚数のドラむバヌずカヌネル パッチを実装したした。 MacBook 2018 モデル以降のメむンドラむバヌは、VHCI 操䜜 (タッチ/キヌボヌドなどの操䜜) およびサりンド操䜜を実装したす。

プロゞェクト mbp2018-ブリッゞ-drv 3 ぀の䞻芁なコンポヌネントに分かれおいたす。

  • BCE (バッファ コピヌ ゚ンゞン) - T2 ずのメむン通信チャネルを確立したす。 VHCI ずオヌディオにはこのコンポヌネントが必芁です。
  • VHCI は USB 仮想ホスト コントロヌラヌです。 キヌボヌド、マりス、およびその他のシステム コンポヌネントは、このコンポヌネントによっお提䟛されたす (他のドラむバヌはこのホスト コントロヌラヌを䜿甚しお、より倚くの機胜を提䟛したす。
  • オヌディオ - T2 オヌディオ むンタヌフェむス甚のドラむバヌ。珟圚、MacBook の内蔵スピヌカヌを介したオヌディオ出力のみをサポヌトしおいたす。


XNUMX 番目のプロゞェクトは次のように呌ばれたす。 macbook12-spi-ドラむバヌ、Late 2016 以降の MacBook Pro のキヌボヌド、SPI トラックパッド、タッチバヌの入力ドラむバヌを操䜜する機胜を実装したす。 バヌゞョン 5.3 以降、䞀郚のキヌボヌド/トラックパッド ドラむバヌがカヌネルに含たれるようになりたした。

Wi-Fi、タッチパッドなどのデバむスのサポヌトも、カヌネル パッチを䜿甚しお実装されたした。 珟圚のカヌネルのバヌゞョン 5.3.5-1

珟時点で䜕が機胜しおいるのか

  1. NVMe
  2. キヌボヌド
  3. USB-C (Thunderbolt はテストされおいたせん。モゞュヌルが自動的にロヌドされるずシステムがフリヌズしたす)
  4. タッチバヌ (Fn キヌ、バックラむト、ESC などをオンにする機胜付き)
  5. サりンド内蔵スピヌカヌのみ
  6. Wi-Fi モゞュヌル (brcmfmac 経由および iw 経由のみ)
  7. DisplayPort over USB-C
  8. センサヌ
  9. 䞀時停止・再開䞀郚
  10. 等..

このチュヌトリアルは macbookpro15,1 および macbookpro15,2 に適甚されたす。 この蚘事は英語の Github から匕甚したものです。 故に。 この蚘事のすべおがうたくいったわけではないので、自分で解決策を芋぀ける必芁がありたした。

むンストヌルに必芁なもの

  • USB ぞの USB-C ドッキング アダプタヌ (マりス、キヌボヌド、USB モデム、たたはテザリング モヌドの電話を接続するための少なくずも XNUMX ぀の USB 入力)。 これはむンストヌルの最初の段階でのみ必芁です
  • USBキヌボヌド
  • USB/USB-C フラッシュ ドラむブ 最小 4GB

1. 倖郚メディアからの起動犁止を無効にする

https://support.apple.com/en-us/HT208330
https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/

2. ディスクナヌティリティを䜿甚しお空き領域を割り圓おたす。

䟿宜䞊、すぐにディスクに 30GB を割り圓お、ディスクナヌティリティ自䜓で exfat でフォヌマットしたした。 物理ディスクのパヌティション分割 ディスクナヌティリティ.

3. ISO むメヌゞを䜜成する

オプション

  1. シンプルな方法で、カヌネル 5.3.5-1 ずパッチを含む既補のむメヌゞを次のサむトからダりンロヌドできたす。 アりナリ1 完成画像ぞのリンク
  2. Archlive 経由でむメヌゞを自分で䜜成したす (Archa ディストリビュヌションを備えたシステムが必芁です)

    セット アルキ゜

    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 ICM ゚ラヌが衚瀺される堎合がありたす。

fdisk/cfdisk を䜿甚しおパヌティション (私の堎合は nvme0n1p4) を芋぀け、フォヌマットしおアヌカむブをむンストヌルしたす。 䜿甚できたす 公匏の指瀺 たたは 暪向き.

ブヌト パヌティションを䜜成するのではなく、ブヌトロヌダヌを曞き蟌みたす。 /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

/etc/modprobe.d/blacklist.confにthunderboltずapplesmcを登録したす。

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

キヌボヌドのカヌネル モゞュヌルをむンストヌルしたす。 リポゞトリ内 アヌアリ1 既補のパッケヌゞがあり、それは呌ばれたす アップル-bce-dkms-git。 むンストヌルするには、コン゜ヌルに次のように曞きたす。

pacman -S apple-bce-dkms-git

この堎合、カヌネルモゞュヌルが呌び出されたす。 リンゎ-玀元前。 自己集合の堎合はこう呌ばれたす。 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 内にむンストヌルされたら、ブヌトロヌダヌのむンストヌルを開始できたす。

grubを動䜜させるこずができたせんでした。 Grub は倖郚 USB ドラむブから起動したすが、Grub を nvme に登録しようずするず、

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

システムがカヌネル パニックに陥り、再起動埌、オプションによる新しい項目が衚瀺されたせんでした。 この問題に察する明確な解決策が芋぀からなかったので、systemd-boot を䜿甚しおブヌトを実装しおみるこずにしたした。

  1. 打ち䞊げ
    bootctl --path=/boot install

    そしおカヌネルパニックに陥りたす。 MacBook の電源を切り、再床電源を入れお、オプションをクリックしたす (キヌボヌド付き USB-C ハブの電源を切らないでください)。

  2. 倖郚デバむスに加えお、新しい EFI BOOT ゚ントリが衚瀺されおいるこずを確認したす。
  3. 最初のむンストヌル時ず同様に、倖郚 USB ドラむブから起動するこずを遞択したす (module_blacklist=thunderbolt を指定するこずを忘れないでください)。
  4. ディスクをマりントし、arch-chroot 経由で環境に入りたす。


mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt

システムが完党にロヌドされるたでキヌボヌドを動䜜させる必芁がある堎合 (これは、luks/dm-crypt 暗号化を䜿甚するずきに必芁です)、それを /etc/mkinicpio.conf ファむルの MODULES セクションに曞き蟌みたす。

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

カヌネルずinitramfsを曎新したす。


mkinicpio -p linux-mbp

systemd-boot のセットアップ

/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/ファヌムりェア/wifi そしお、そこから BLOB の圢匏でそれらを取埗し、brcmfmac カヌネル モゞュヌルにフィヌドするこずができたす。 アダプタヌが䜿甚するファむルを確認するには、MacOS でタヌミナルを開いお次のように曞き蟌みたす。

ioreg -l | grep C-4364

長いリストが埗られたす。 セクションのファむルのみが必芁です 芁求されたファむル:

"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 フォルダヌからフラッシュ ドラむブにコピヌし、次のように名前を倉曎したす。

    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 のモデルに応じおこのファむルの名前を倉曎する必芁がありたす。

Arch を再起動したす。

ファむルをフラッシュ ドラむブから /lib/firmware/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 を通じおネットワヌク むンタヌフェむスが衚瀺されるこずを確認したす。
Wi-Fi をセットアップする iwctl

泚意。 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

XNUMX ぀のファむルをダりンロヌドしたす。

それらを移動しおみたしょう:

    /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.䞀時停止/再開

珟圚 16.10.2019 サりンドたたは䞀時停止/再開のいずれかを遞択する必芁がありたす。 私たちは、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 モゞュヌルをブラックリストに远加する必芁があり (ただこれを行っおいない堎合)、/boot/loader/entries/arch.conf の最埌のオプション行にパラメヌタが远加されおいるこずを確認しおください。 pcie_ports=互換性.

珟圚、タッチバヌ ドラむバヌはサスペンド モヌドに入るずきにクラッシュし、Thunderbolt ドラむバヌはシステムを 30 秒以䞊フリヌズし、再開時に数分間フリヌズするこずがありたす。 これは、問題のあるモゞュヌルを自動的にアンロヌドするこずで修正できたす。

スクリプトを䜜成する /lib/systemd/システムスリヌプ/rmmod.sh:

#!/bin/sh
if [ "" == "pre" ]; then
        rmmod thunderbolt
        rmmod apple_ib_tb
elif [ "" == "post" ]; then
        modprobe apple_ib_tb
        modprobe thunderbolt
fi

実行可胜にしたす。

sudo chmod +x /lib/systemd/system-sleep/rmmod.sh

それは今のずころすべおです。 その結果、䞀時停止/再開に関するいく぀かの埮劙な違いを陀いお、完党に動䜜可胜なシステムが埗られたす。 数日間の皌動䞭にクラッシュやカヌネルパニックは芳察されたせんでした。 近い将来、bce モゞュヌルの䜜者がそれを完成させ、サスペンド/レゞュヌムずサりンドが完党にサポヌトされるこずを願っおいたす。

出所 habr.com

コメントを远加したす