Kuita MacBook Pro 2018 T2 kushanda neArchLinux (dualboot)

Pakave nekamwe hype nezve chokwadi chekuti itsva T2 chip ichaita kuti zvisaite kuisa Linux pane itsva 2018 MacBooks ine touchbar. Nguva yakapfuura, uye pakupera kwa2019, vagadziri vebato rechitatu vakaisa akati wandei madhiraivha uye kernel zvigamba zvekudyidzana neT2 chip. Mutyairi mukuru weMacBook modhi 2018 uye itsva zvishandiso VHCI kushanda (touch/keyboard/etc. operation), pamwe nekuita ruzha.

Iyo purojekiti mbp2018-bridge-drv yakakamurwa kuita zvikamu zvitatu zvikuru:

  • BCE (Buffer Copy Engine) - inogadza nzira huru yekukurukurirana neT2. VHCI uye Audio inoda chikamu ichi.
  • VHCI ndeye USB Virtual Host Controller; iyo keyboard, mbeva uye zvimwe zvikamu zvehurongwa zvinopihwa nechikamu ichi (mamwe madhiraivha anoshandisa iyi host controller kupa mamwe maitiro.
  • Odhiyo - mutyairi weiyo T2 odhiyo interface, parizvino inotsigira odhiyo kubuda kuburikidza neMacBook's akavakirwa-mukati matauri


Chirongwa chechipiri chinonzi macbook12-spi-mutyairi, uye inoshandisa kugona kushandisa mutyairi wekupinza wekhibhodi, SPI trackpad, uye touchbar yeLate 2016 uye gare gare MacBook Pros. Mamwe madhiraivha ekhibhodi/trackpad ave kusanganisirwa mukernel, kutanga neshanduro 5.3.

Tsigiro yemidziyo yakaita sewi-fi, touchpad, nezvimwe yakaitwa zvakare uchishandisa kernel zvigamba. Yazvino kernel vhezheni 5.3.5-1

Chii chiri kushanda panguva ino

  1. NVMe
  2. Keyboard
  3. USB-C (Kutinhira hakuna kuedzwa; kana module inotakurwa otomatiki, inoomesa sisitimu)
  4. Touchbar (nekukwanisa kubatidza makiyi eFn, backlight, ESC, nezvimwewo)
  5. Ruzha (vakavakwa-mukati chete vatauri)
  6. Wi-Fi module (kuburikidza nebrcmfmac uye chete kuburikidza iw)
  7. DisplayPort pamusoro pe USB-C
  8. Sensors
  9. Misa / Tangazve (zvishoma)
  10. nezvimwewo ..

Ichi chidzidzo chinoshanda kune macbookpro15,1 uye macbookpro15,2. Chinyorwa chakatorwa sehwaro kubva kuGithub muChirungu. kubva pano. Hazvisi zvese zviri munyaya ino zvakashanda, saka ndaifanira kutsvaga mhinduro ini.

Zvaunoda pakuisa

  • USB-C docking adapta ku USB (angangoita matatu ma USB ekubatanidza mbeva, keyboard, USB modem kana foni mune tethering mode). Izvi zvinongodiwa chete pamatanho ekutanga ekuiswa
  • USB keyboard
  • USB/USB-C flash drive shoma 4GB

1. Dzima kurambidzwa kwebhoti kubva kunze media

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

2. Govera nzvimbo yemahara uchishandisa Disk Utility

Kuti zvive nyore, ini ndakabva ndagovera 30GB kune diski, ndichiigadzira mu exfat muDisk Utility pachayo. Kugovera Physical Disk Disk Utility.

3. Gadzira mufananidzo weISO

Sarudzo:

  1. Unogona kuenda nenzira iri nyore uye kurodha mufananidzo wakagadzirwa une kernel 5.3.5-1 uye zvigamba kubva. aunali1 link kumufananidzo wapera
  2. Gadzira mufananidzo wega kuburikidza ne archlive (system ine Archa kugovera inodiwa)

    Install archiso

    pacman -S archiso

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

    Wedzera iyo repository kune pacman.conf:

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

    Isu tinoregeredza iyo yekutanga kernel mu pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Wedzera mapakeji anodiwa, kumagumo wedzera iyo linux-mbp kernel uye linux-mbp-misoro.

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

    Isu tinoshandura script kuti ishande mune inopindirana modhi (tsiva pacstrap -C ne 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!"
    }

    Kugadzira mufananidzo:

    sudo ./build.sh -v

    Dzvanya Y kuti usvetuke mapakeji asina kufuratirwa, wobva wanyora iyo iso mufananidzo kune usb flash drive:

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

4. Bhutsu yekutanga

Reboot ne flash drive uye keyboard yakaiswa. Dzvanya sarudzo kana apuro raonekwa, sarudza EFI BOOT.

Tevere, iwe unofanirwa kudzvanya kiyi "e" uye pinda pamagumo emutsara wekuraira module_blacklist= thunderbolt. Kana izvi zvikasaitwa, sisitimu inogona kusabhowa uye Thunderbolt ICM Kanganiso ichaonekwa.

Tichishandisa fdisk/cfdisk tinowana chikamu chedu (kwandiri nvme0n1p4), chifomete uye isa dura. Unogona kushandisa mirairo yepamutemo kana kumativi.

Isu hatisi kugadzira chikamu chebhoti; isu tichanyora iyo bootloader mukati /dev/nvme0n1p1
Mushure mekunge nharaunda mu / mnt yanyatsoumbwa uye usati waenda kune arch-chroot, nyora:

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

Wedzera ku /etc/pacman.conf:


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

Isa kernel:


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

Isu tinonyoresa thunderbolt uye applesmc mukati /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Keyboard, touchbar, nezvimwe

Install yay:


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

Kuisa modules kuti touchbar ishande:


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

Wedzera ma module ekutanga: /etc/modules-load.d/apple.conf

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

Kuisa kernel modules yekhibhodi. Munzvimbo inochengeterwa zvinhu anuali1 pane pasuru yakagadzirwa, inonzi apple-bce-dkms-git. Kuti uiise, nyora mu console:

pacman -S apple-bce-dkms-git

Muchiitiko ichi, iyo kernel module ichadaidzwa apple-bce. Panyaya yekuzvibatanidza, inonzi ecb. Saizvozvo, kana iwe uchida kunyoresa module muMODULES chikamu chemkinicpio.conf faira, saka usakanganwa kuti ndeipi module yawakaisa.

Manual assembly:


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

Wedzera iyo bce kana apuro-bce module kuti utange: /etc/modules-load.d/bce.conf

bce

Kana uchida kushandisa mabhatani eFn nekusingaperi, wobva wanyora mukati /etc/modprobe.d/apple-tb.conf faira:

options apple-ib-tb fnmode=2

Kugadziridza kernel uye initramfs.


mkinitcpio -p linux-mbp

Isa iwd:

sudo pacman -S networkmanager iwd

5. Loader

Kana ese makuru mapakeji akaiswa mukati mechroot, unogona kutanga kuisa iyo bootloader.

Handina kukwanisa kuwana grub kushanda. Grub bhutsu kubva kune yekunze USB drive, asi paunoyedza kuinyoresa mu nvme kuburikidza

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

iyo sisitimu yakapinda kernel panic, uye mushure mekutangazve chinhu chitsva kuburikidza nesarudzo haina kuoneka. Ini handina kuwana mhinduro yakajeka padambudziko iri uye saka ndakafunga kuyedza kuita booting uchishandisa systemd-boot.

  1. Kutanga
    bootctl --path=/boot install

    uye tinopinda mukuvhunduka kwe kernel. Dzima MacBook, ibatidze zvakare, tinya sarudzo (usadzima USB-C hub nekhibhodi)

  2. Isu tinotarisa kuti nyowani EFI BOOT yekupinda yakaonekwa mukuwedzera kune yekunze mudziyo
  3. Isu tinosarudza boot kubva kune yekunze USB drive, sepanguva yekutanga kuisirwa (usakanganwa kutsanangura module_blacklist = thunderbolt)
  4. Isu tinokwira dhisiki yedu uye tinoenda munharaunda kuburikidza nearch-chroot


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

Kana zvichidikanwa kuti keyboard ishande kusvika sisitimu yazara zvizere (izvi zvinodiwa kana uchishandisa luks/dm-crypt encryption), wobva wanyora mu /etc/mkinicpio.conf faira muchikamu cheMODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Kugadziridza kernel uye initramfs.


mkinicpio -p linux-mbp

Kugadzika systemd-boot

Isu tinogadzirisa iyo /boot/loader/loader.conf faira, bvisa zvese zviri mukati, uye wedzera zvinotevera:

default arch
timeout 5
editor 1

Enda ku /boot/loader/entries folda, gadzira iyo arch.conf faira uye nyora:

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

Kana iwe wakashandisa luks uye lvm, ipapo

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

Reboot muMacOS.

6. Wi-Fi setup

Sezvazvakazoitika pakupedzisira, MacOS inochengeta mafaera e firmware eiyo wi-fi adapta mufolda /usr/share/firmware/wifi , uye iwe unogona kuvatora kubva ipapo muchimiro chemablobs uye wovadyisa kune bcmfmac kernel module. Kuti uwane kuti ndeapi mafaera anoshandisa adapta yako, vhura terminal muMacOS uye nyora:

ioreg -l | grep C-4364

Tinowana runyora rurefu. Tinongoda mafaira kubva muchikamu 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>"})

Muchiitiko chako, mazita emafaira anogona kusiyana. Kopa iwo kubva ku /usr/share/firmware/wifi folda kune flash drive uye uvape zita sezvizvi:

    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>

Muchiitiko ichi, faira rekupedzisira rine mazita emuenzaniso; kana modhi yako isiri macbookpro15,2, saka unofanirwa kupa zita refaira iri zvinoenderana neMacBook modhi yako.

Reboot muArch.

Kopa mafaira kubva ku flash drive kuenda ku /lib/firmware/brcm/ folda


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/

Kuongorora kushanda kweiyo module:


rmmod brcmfmac
modprobe brcmfmac

Isu tinoita shuwa kuti network interface inoonekwa kuburikidza ifconfig/ip.
Kuisa wifi kuburikidza iwctl

Attention. Via netctl, nmcli, nezvimwe. Iyo interface haishande, chete kuburikidza ne iwd.

Isu tinomanikidza NetworkManager kushandisa iwd. Kuti uite izvi, gadzira iyo faira /etc/NetworkManager/NetworkManager.conf uye nyora:

[device]
wifi.backend=iwd

Tanga iyo NetworkManager sevhisi


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

7. Inzwi

Kuti ruzha rushande, unofanirwa kuisa pulseaudio:


sudo pacman -S pulseaudio

Dhaunirodha mafaera matatu:

Ngativafambise:

    /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. Kumisa / Tangazve

Panguva ino 16.10.2019 iwe unofanirwa kusarudza chero ruzha kana kumisa / kutangazve. Isu takamirira munyori we bce module kuti apedze kushanda.

Kuvaka module ine yakamiswa / kutangazve rutsigiro, iwe unofanirwa kuita zvinotevera:


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

Kana iwe ukaisa iyo yakagadzirira-yakagadzirwa apuro-bce module kubva kune anuali1 repository, saka iwe unofanirwa kutanga waibvisa uye chete wozounganidza uye nekuisa iyo bce module ine suspend mode rutsigiro.

Uyezve, unoda kuwedzera applesmc module kune blacklist (kana usati waita izvi kare) uye iva nechokwadi chokuti mu /boot/loader/entries/arch.conf mumutsara wekusarudza pamagumo parameter inowedzerwa. pcie_ports=compati.

Parizvino, mutyairi wekubata bata anorovera kana achipinda yekumisa modhi, uye mutyairi webhanhire dzimwe nguva anoomesa sisitimu kweanopfuura masekondi makumi matatu, uye kwemaminetsi akati wandei kana uchitangazve. Izvi zvinogona kugadziriswa nekuburitsa otomatiki mamodule anonetsa.

Gadzira chinyorwa /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

Ita kuti iite executable:

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

Ndizvo zvose ikozvino. Mhedzisiro iyi inonyatso shanda sisitimu, kunze kwemamwe nuances nekumisa / kutangazve. Hapana kuparara kana kernel panics yakaonekwa mukati memazuva akati wandei enguva yekukwira. Ndinovimba kuti munguva pfupi iri kutevera munyori we bce module achaipedza, uye isu tichawana rutsigiro rwakazara rwekumisa / kutangazve uye ruzha.

Source: www.habr.com

Voeg