E hana ana i ka MacBook Pro 2018 T2 me ArchLinux (dualboot)

Ua nui ka hype e pili ana i ka ʻoiaʻiʻo e hiki ʻole i ka chip T2 hou ke hoʻokomo iā Linux ma ka 2018 MacBooks hou me kahi pā. Ua hala ka manawa, a ma ka hopena o 2019, ua hoʻokō nā mea hoʻomohala ʻekolu i nā mea hoʻokele a me nā ʻāpana kernel no ka launa pū ʻana me ka chip T2. ʻO ka mea hoʻokele nui no nā hiʻohiʻona MacBook 2018 a me nā mea hou e hoʻokō i ka hana VHCI (hoʻopā / keyboard / etc. hana), a me ka hana kani.

ʻO ka papahana mbp2018-alahaka-drv mahele i 3 mau mea nui:

  • BCE (Buffer Copy Engine) - hoʻokumu i ke ala kamaʻilio nui me T2. Pono ʻo VHCI a me Audio i kēia ʻāpana.
  • ʻO VHCI kahi USB Virtual Host Controller; Hāʻawi ʻia ka papa keyboard, ʻiole a me nā ʻōnaehana ʻē aʻe e kēia ʻāpana (hoʻohana nā mea hoʻokele ʻē aʻe i kēia mea hoʻokele hoʻokipa e hāʻawi i nā hana hou aku.
  • Leo - mea hoʻokele leo T2, kākoʻo wale i ka hoʻopuka leo ma o ka MacBook i kūkulu ʻia i loko


Kapa ʻia ka papahana ʻelua mea hoʻokele macbook12-spi, a hoʻokō i ka hiki ke hoʻohana i ka mea hoʻokele hoʻokomo no ka keyboard, SPI trackpad, a me ka touchbar no MacBook Pro Late 2016 a ma hope. Hoʻokomo ʻia kekahi mau mea hoʻokele keyboard/trackpad i ka kernel, e hoʻomaka ana me ka mana 5.3.

Ua hoʻokō ʻia ke kākoʻo no nā polokalamu e like me wi-fi, touchpad, etc. ʻO ka mana kernel o kēia manawa 5.3.5-1

He aha ka hana i kēia manawa

  1. NVMe
  2. Keyboard
  3. USB-C (ʻAʻole i hoʻāʻo ʻia ʻo Thunderbolt; ke hoʻouka ʻia ka module, hoʻokuʻu ia i ka ʻōnaehana)
  4. Touchbar (me ka hiki ke hoʻohuli i nā kī Fn, backlight, ESC, etc.)
  5. Kani (nā leo i loko wale nō)
  6. Module Wi-Fi (ma o brcmfmac a ma o iw wale nō)
  7. HōʻikePort ma luna o USB-C
  8. Nā mīkini uila
  9. Hoʻokuʻu/Hoʻomau (ʻāpana)
  10. a pela aku ..

Pili kēia kumu aʻo no ka macbookpro15,1 a me ka macbookpro15,2. Ua lawe ʻia ka ʻatikala ma ke ʻano he kumu mai Github ma ka ʻōlelo Pelekania. mai kēia wahi. ʻAʻole pono nā mea a pau o kēia ʻatikala, no laila pono wau e ʻimi i kahi hopena iaʻu iho.

He aha kāu e pono ai e hoʻouka

  • USB-C docking adapter i USB (ma ka liʻiliʻi ʻekolu mau mea hoʻokomo USB no ka hoʻopili ʻana i ka ʻiole, ka papa keyboard, ka modem USB a i ʻole ke kelepona ma ke ʻano hoʻopili). Pono wale kēia i nā manawa mua o ka hoʻokomo
  • kīwī USB
  • USB/USB-C flash drive ka palena iki 4GB

1. Hoʻopau i ka pāpā ʻana i ka hoʻopaʻa ʻana mai ka media waho

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

2. E hoʻokaʻawale i kahi kaʻawale me ka hoʻohana ʻana i ka Disk Utility

No ka maʻalahi, ua hoʻokaʻawale koke wau i ka 30GB i ka disk, e hoʻopili ana iā ia i exfat ma Disk Utility pono'ī. Hoʻokaʻawale i kahi mea hoʻohana Disk Disk Kino.

3. Hana i kahi kiʻi ISO

Nā koho:

  1. Hiki iā ʻoe ke hele i ke ala maʻalahi a hoʻoiho i kahi kiʻi i mākaukau me ka kernel 5.3.5-1 a me nā pā mai aunali1 loulou i ke kiʻi i hoʻopau ʻia
  2. E hana i kiʻi iā ʻoe iho ma o archlive (pono ʻia kahi ʻōnaehana me ka puʻunaue Archa)

    E hoʻouka archiso

    pacman -S archiso

    
    cp -r /usr/share/archiso/configs/releng/ archlive
    cd archlive
    

    Hoʻohui i ka waihona i pacman.conf:

    
    [mbp]
    Server = https://packages.aunali1.com/archlinux/$repo/$arch
    

    Haʻalele mākou i ka kernel kumu ma pacman.conf:

    IgnorePkg   = linux linux-headers
    

    E hoʻohui i nā pūʻolo e pono ai, ma ka hopena e hoʻohui i ka linux-mbp kernel a me linux-mbp-headers

    ...
    wvdial
    xl2tpd
    linux-mbp
    linux-mbp-headers
    

    Hoʻololi mākou i ka palapala e hana ma ke ʻano pāʻani (e hoʻololi i ka pacstrap -C me ka 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!"
    }

    Ke hana nei i kiʻi:

    sudo ./build.sh -v

    E kaomi iā Y e hoʻokuʻu i nā pūʻolo i nānā ʻole ʻia, a laila e kākau i ke kiʻi iso i ka USB flash drive:

    sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M

4. Pua mua

E hoʻomaka hou me ka flash drive a me ka keyboard i hoʻokomo ʻia. E kaomi i nā koho ke ʻike ʻia ka ʻāpala, koho i ka EFI BOOT.

A laila, pono ʻoe e kaomi i ke kī "e" a komo i ka hope o ka laina kauoha module_blacklist=hekili. Inā ʻaʻole i hana ʻia kēia, ʻaʻole paha e hoʻomaka ka ʻōnaehana a ʻike ʻia kahi Thunderbolt ICM Error.

Ma ka hoʻohana ʻana i fdisk/cfdisk ʻike mākou i kā mākou pāhele (noʻu ʻo nvme0n1p4), hoʻohālikelike a hoʻokomo i ka waihona. Hiki iā ʻoe ke hoʻohana kuhikuhi oihana ai ole ia, ʻaoʻao.

ʻAʻole mākou e hana i kahi ʻāpana boot; e kākau mākou i ka bootloader i loko /dev/nvme0n1p1
Ma hope o ka hoʻokumu ʻia ʻana o ke kaiapuni i / mnt a ma mua o ka neʻe ʻana i arch-chroot, e kākau:

mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash

Hoʻohui i /etc/pacman.conf:


[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch

E hoʻouka i ka kernel:


sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp

Hoʻopaʻa inoa mākou i ka hekili a me ka applemc ma /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Papa keyboard, touchbar, etc

E hoʻouka ʻia:


sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Ke hoʻouka nei i nā modules no ka hana ʻana o ka touchbar:


git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install

Hoʻohui i nā modules i ka hoʻomaka: /etc/modules-load.d/apple.conf

industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als

Ke hoʻokomo nei i nā modula kernel no ka papa keyboard. Ma ka waihona makahikili1 aia he pūʻolo mākaukau, ua kapa ʻia apple-bce-dkms-git. No ka hoʻouka ʻana, e kākau i ka console:

pacman -S apple-bce-dkms-git

I kēia hihia, e kāhea ʻia ka module kernel apple-bce. Ma ka hihia o ka hui pū ʻana, ua kapa ʻia bce. No laila, inā makemake ʻoe e hoʻopaʻa inoa i kahi module ma ka ʻāpana MODULES o ka faila mkinincpio.conf, a laila mai poina i ka module āu i hoʻokomo ai.

Hui lima lima:


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

Hoʻohui i ka module bce a i ʻole apple-bce i ka hoʻomaka: /etc/modules-load.d/bce.conf

bce

Inā makemake ʻoe e hoʻohana i nā pihi Fn ma ke ʻano paʻamau, a laila e kākau ma ka waihona /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Hoʻonui i ka kernel a me initramfs.


mkinitcpio -p linux-mbp

E hoʻouka i ka iwd:

sudo pacman -S networkmanager iwd

5. Mea lawe ukana

Ke hoʻokomo ʻia nā pūʻolo nui i loko o ka chroot, hiki iā ʻoe ke hoʻomaka e hoʻokomo i ka bootloader.

ʻAʻole hiki iaʻu ke kiʻi i ka grub e hana. ʻO nā kāmaʻa Grub mai kahi USB USB waho, akā ke hoʻāʻo ʻoe e hoʻopaʻa inoa iā ia ma nvme ma

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

Ua hele ka ʻōnaehana i ka panic kernel, a ma hope o ka hoʻihoʻi hou ʻana i kahi mea hou ma o nā koho ʻaʻole i ʻike ʻia. ʻAʻole i loaʻa iaʻu kahi hopena maopopo i kēia pilikia a no laila ua hoʻoholo wau e hoʻāʻo e hoʻokō i ka booting me ka hoʻohana ʻana i ka systemd-boot.

  1. Hoʻolana
    bootctl --path=/boot install

    a hele mākou i loko o ka hopohopo kernel. Hoʻopau i ka MacBook, hoʻohuli hou, kaomi i nā koho (mai hoʻopau i ka hub USB-C me ka keyboard)

  2. Nānā mākou ua ʻike ʻia kahi hoʻokomo EFI BOOT hou ma waho o ka hāmeʻa waho
  3. Koho mākou e kāʻei mai kahi USB USB waho, e like me ka wā o ka hoʻokomo mua ʻana (mai poina e kuhikuhi i ka module_blacklist=thunderbolt)
  4. Kau mākou i kā mākou disk a hele i ke kaiapuni ma o arch-chroot


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

Inā pono e hana ka papa keyboard a hoʻopiha piha ʻia ka ʻōnaehana (pono kēia i ka wā e hoʻohana ai i ka luks/dm-crypt encryption), a laila e kākau iā ia ma ka faila /etc/mkinicpio.conf ma ka ʻāpana MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Hoʻonui i ka kernel a me initramfs.


mkinicpio -p linux-mbp

Hoʻonohonoho i ka systemd-boot

Hoʻoponopono mākou i ka faila /boot/loader/loader.conf, holoi i nā mea a pau i loko, a hoʻohui i kēia:

default arch
timeout 5
editor 1

E hele i ka waihona /boot/loader/entry, e hana i ka faila arch.conf a kākau:

title arch
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat

Inā ʻoe i hoʻohana i ka luks a me ka lvm, a laila

options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat

Hoʻomaka hou i loko o MacOS.

6. Hoʻonohonoho Wi-Fi

E like me ka hopena i ka hopena, mālama ʻo MacOS i nā faila firmware no ka adapter wi-fi i loko o ka waihona /usr/share/firmware/wifi , a hiki iā ʻoe ke lawe iā lākou mai laila mai ma ke ʻano o nā blobs a hānai iā lākou i ka module kernel brcmfmac. I mea e ʻike ai i nā faila e hoʻohana ai kāu adapter, e wehe i kahi pahu ma MacOS a kākau:

ioreg -l | grep C-4364

Loaʻa iā mākou kahi papa inoa lōʻihi. Pono mākou i nā faila mai ka ʻāpana Nā faila i noi ʻia:

"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>"})

I kou hihia, ʻokoʻa paha nā inoa faila. E kope iā lākou mai ka /usr/share/firmware/wifi folder i ka flash drive a hoʻololi hou iā lākou penei:

    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>

I kēia hihia, aia i ka waihona kikokikona hope nā inoa hoʻohālike; inā ʻaʻole ʻo macbookpro15,2 kāu kumu hoʻohālike, a laila pono ʻoe e inoa hou i kēia faila e like me kāu kumu hoʻohālike MacBook.

Hoʻomaka hou i ka Arch.

E kope i nā faila mai ka flash drive i ka waihona /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/

Ke nānā nei i ka hana o ka module:


rmmod brcmfmac
modprobe brcmfmac

Hoʻomaopopo mākou i ka ʻike ʻana o ke kikowaena pūnaewele ma o ifconfig/ip.
Hoʻonohonoho wifi ma o iwctl

Nānā. Via netctl, nmcli, etc. ʻAʻole hana ka interface, ma o iwd wale nō.

Ke koi nei mākou iā NetworkManager e hoʻohana i ka iwd. No ka hana ʻana i kēia, hana i ka faila /etc/NetworkManager/NetworkManager.conf a kākau:

[device]
wifi.backend=iwd

E hoʻomaka i ka lawelawe NetworkManager


sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service

7. Kani

I mea e hana ai ke kani, pono ʻoe e hoʻokomo i ka pulseaudio:


sudo pacman -S pulseaudio

Hoʻoiho i ʻekolu faila:

E hoʻoneʻe kākou iā lākou:

    /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. Hoʻomaha / Hoʻomau

I kēia manawa 16.10.2019 pono ʻoe e koho i ke kani a i ʻole ke hoʻopanee/hoʻomau. Ke kali nei mākou i ka mea kākau o ka module bce e hoʻopau i ka hana.

No ke kūkulu ʻana i kahi module me ke kākoʻo susped/resume, pono ʻoe e hana i kēia:


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

Inā ʻoe i hoʻokomo i ka module apple-bce i mākaukau ʻia mai ka waihona anuali1, a laila pono ʻoe e wehe mua a laila hoʻohui a hoʻokomo i ka module bce me ke kākoʻo mode suspend.

Eia kekahi, pono ʻoe e hoʻohui i ka module applesmc i ka papa inoa ʻeleʻele (inā ʻaʻole ʻoe i hana i kēia ma mua) a e hōʻoia i loko /boot/loader/entries/arch.conf i ka laina koho ma ka hopena ua hoʻohui ʻia ka ʻāpana. pcie_ports=compat.

I kēia manawa, hāʻule ka mea hoʻokele touchbar i ke komo ʻana i ke ʻano hoʻomaha, a i kekahi manawa hoʻokuʻu ka mea hoʻokele hekili i ka ʻōnaehana ma mua o 30 kekona, a no kekahi mau minuke ke hoʻomaka hou. Hiki ke hoʻopaʻa ʻia kēia ma ka wehe ʻana i nā modules pilikia.

Hana i kahi palapala /lib/systemd/system-sleep/rmmod.sh:

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

E hoʻokō iā ia:

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

ʻO ia wale nō i kēia manawa. ʻO ka hopena he ʻōnaehana holoʻokoʻa, me ka ʻokoʻa o kekahi mau nuances me ka suspend/resume. ʻAʻole ʻike ʻia nā pōʻino a i ʻole nā ​​​​panic kernel i nā lā he nui o ka uptime. Manaʻo wau i ka wā e hiki mai ana e hoʻopau ka mea kākau o ka module bce, a e loaʻa iā mākou ke kākoʻo piha no ka hoʻomaha / hoʻomau a me ke kani.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka