A’ toirt air MacBook Pro 2018 T2 obrachadh le ArchLinux (dualboot)

Tha beagan hype air a bhith ann mu dheidhinn gun dèan a’ chip T2 ùr e do-dhèanta Linux a chuir a-steach air na 2018 MacBooks ùra le bàr-suathaidh. Chaidh ùine seachad, agus aig deireadh 2019, chuir luchd-leasachaidh treas-phàrtaidh grunn dhraibhearan agus pìosan kernel an gnìomh airson eadar-obrachadh leis a’ chip T2. Is e am prìomh dhraibhear airson modalan MacBook 2018 agus innealan nas ùire gnìomhachd VHCI (obrachadh suathadh / meur-chlàr / msaa), a bharrachd air obrachadh fuaim.

Am pròiseact mbp2018-drochaid-drv air a roinn ann an 3 prìomh phàirtean:

  • BCE (Einnsean Leth-bhreac Bufair) - a’ stèidheachadh a’ phrìomh sianal conaltraidh le T2. Feumaidh VHCI agus Audio am pàirt seo.
  • Tha VHCI na Rianadair Host Virtual USB; tha am meur-chlàr, an luchag agus co-phàirtean siostam eile air an toirt seachad leis a’ phàirt seo (bidh draibhearan eile a’ cleachdadh an rianadair aoigheachd seo gus barrachd gnìomh a thoirt seachad.
  • Fuaim - draibhear airson eadar-aghaidh claisneachd T2, an-dràsta a’ toirt taic do thoraidhean claisneachd tro luchd-labhairt togte MacBook


Canar an dàrna pròiseact ris Driver airson macbook12 spi, agus bidh e a’ buileachadh comas draibhear cuir a-steach obrachadh airson a’ mheur-chlàr, trackpad SPI, agus bàr-touch airson MacBook Pro anmoch 2016 agus nas fhaide air adhart. Tha cuid de dhraibhearan meur-chlàr / trackpad a-nis air an toirt a-steach don kernel, a’ tòiseachadh le dreach 5.3.

Chaidh taic airson innealan leithid wi-fi, touchpad, msaa a chuir an gnìomh cuideachd a’ cleachdadh pìosan kernel. Tionndadh kernel gnàthach 5.3.5-1

Dè tha ag obair an-dràsta

  1. NVMe
  2. Meur-chlàr
  3. USB-C (Cha deach Thunderbolt a dhearbhadh; nuair a thèid am modal a luchdachadh gu fèin-ghluasadach, bidh e a’ reothadh an t-siostam)
  4. Touchbar (le comas na h-iuchraichean Fn a thionndadh, backlight, ESC, msaa.)
  5. Fuaim (luchd-labhairt togte a-mhàin)
  6. Modal Wi-Fi (tro brcmfmac agus dìreach tro iw)
  7. DisplayPort thairis air USB-C
  8. Sensors
  9. Cuir stad air / ath-thòiseachadh (gu ìre)
  10. etc ..

Tha an oideachadh seo buntainneach airson macbookpro15,1 agus macbookpro15,2. Chaidh an artaigil a thogail mar bhunait bho Github sa Bheurla. bho seo. Cha do dh’ obraich a h-uile dad san artaigil seo, agus mar sin bha agam ri fuasgladh a lorg mi-fhìn.

Dè dh'fheumas tu airson an stàladh

  • Adaptor docking USB-C gu USB (co-dhiù trì cuir a-steach USB airson luchag, meur-chlàr, modem USB no fòn a cheangal ann am modh tethering). Chan eil seo riatanach ach anns na ciad ìrean de stàladh
  • Meur-chlàr USB
  • Dràibhear flash USB/USB-C aig a’ char as lugha 4GB

1. Cuir dheth an casg air booting bho mheadhanan a-muigh

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

2. Roinn àite an-asgaidh a 'cleachdadh Disk Utility

Airson goireasachd, thug mi 30GB don diosc sa bhad, ga chruth ann an exfat ann an Disk Utility fhèin. A’ sgaradh goireas diosc corporra.

3. Cruthaich ìomhaigh ISO

Roghainnean:

  1. Faodaidh tu a dhol air an t-slighe shìmplidh agus luchdaich sìos ìomhaigh deiseil le kernel 5.3.5-1 agus pìosan bho aunail 1 ceangal ris an dealbh chrìochnaichte
  2. Cruthaich ìomhaigh thu fhèin tro archlive (tha feum air siostam le cuairteachadh Archa)

    Stàlaich ariso

    pacman -S archiso

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

    Cuir an stòr gu pacman.conf:

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

    Bidh sinn a’ seachnadh an kernel tùsail ann am pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Cuir ris na pacaidean riatanach, aig an deireadh cuir ris an kernel linux-mbp agus linux-mbp-headers

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

    Bidh sinn ag atharrachadh an sgriobt gus obrachadh ann am modh eadar-ghnìomhach (cuir pacstrap -i -C an àite pacstrap -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!"
    }

    A 'cruthachadh ìomhaigh:

    sudo ./build.sh -v

    Brùth Y gus pasganan nach deach an aire a sheachnadh, an uairsin sgrìobh an ìomhaigh iso chun an draibhear USB flash:

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

4. A 'chiad boot

Dèan ath-thòiseachadh leis an draibhear flash agus am meur-chlàr air a chuir a-steach. Brùth roghainnean nuair a nochdas an ubhal, tagh EFI BOOT.

An ath rud, feumaidh tu an iuchair “e” a bhrùthadh agus cuir a-steach aig deireadh na loidhne-àithne module_blacklist=tàirneanach. Mura dèanar seo, dh’ fhaodadh nach tòisich an siostam agus nochdaidh Mearachd Thunderbolt ICM.

A’ cleachdadh fdisk/cfdisk lorgaidh sinn ar dealachadh (dhomhsa is e nvme0n1p4 a th’ ann), cruth e agus stàlaich an tasglann. Faodaidh tu a chleachdadh stiùiridhean oifigeil no taobh.

Chan eil sinn a’ cruthachadh sgaradh bròg; sgrìobhaidh sinn am bootloader a-steach /dev/nvme0n1p1
Às deidh don àrainneachd ann an / mnt a bhith air a chruthachadh gu tur agus mus gluais thu gu arch-chroot, sgrìobh:

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

Cuir ri /etc/pacman.conf:


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

Stàlaich an kernel:


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

Bidh sinn a’ clàradh tàirneanach agus applesmc ann an /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Meur-chlàr, bàr-touch, msaa

Stàlaich yay:


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

A’ stàladh mhodalan airson am bàr-touch a bhith ag obair:


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

Cuir modalan ris airson tòiseachadh: /etc/modules-load.d/apple.conf

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

A' stàladh mhodalan kernel airson a' mheur-chlàir. Anns an ionad-tasgaidh uair 1 tha pasgan deiseil ann, canar ris apple-bce-dkms-git. Gus a stàladh, sgrìobh sa chonsail:

pacman -S apple-bce-dkms-git

Anns a 'chùis seo, thèid am modal kernel a ghairm ubhal-bce. Ann an cùis fèin-chruinneachadh, canar BCE. Mar sin, ma tha thu airson modal a chlàradh anns an roinn MODULES den fhaidhle mkinicpio.conf, na dì-chuimhnich dè am modal a chuir thu a-steach.

Co-chruinneachadh làimhe:


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

Cuir ris a’ mhodal bce no apple-bce airson tòiseachadh: /etc/modules-load.d/bce.conf

bce

Ma tha thu airson na putanan Fn a chleachdadh gu bunaiteach, sgrìobh am faidhle /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Ag ùrachadh an kernel agus initramfs.


mkinitcpio -p linux-mbp

Stàlaich iwd:

sudo pacman -S networkmanager iwd

5. Luchdaich

Aon uair ‘s gu bheil na prìomh phasganan uile air an stàladh taobh a-staigh a’ chroot, faodaidh tu tòiseachadh air an bootloader a stàladh.

Cha deach agam air grub fhaighinn a dh’ obair. Boots Grub bho dhràibhear USB taobh a-muigh, ach nuair a dh'fheuchas tu ri clàradh ann an nvme tro

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

chaidh an siostam a-steach gu clisgeadh kernel, agus às deidh dha rud ùr ath-thòiseachadh tro roghainnean cha do nochd e. Cha do lorg mi fuasgladh soilleir sam bith air an duilgheadas seo agus mar sin cho-dhùin mi feuchainn ri booting a chuir an gnìomh a’ cleachdadh systemd-boot.

  1. Cur air bhog
    bootctl --path=/boot install

    agus thèid sinn a-steach gu clisgeadh kernel. Cuir dheth am MacBook, tionndaidh air a-rithist e, cliog air roghainnean (na cuir dheth am mòr-ionad USB-C le meur-chlàr)

  2. Bidh sinn a’ dèanamh cinnteach gu bheil inntrigeadh ùr EFI BOOT air nochdadh a bharrachd air an inneal a-muigh
  3. Bidh sinn a’ roghnachadh bròg bho dhràibhear USB taobh a-muigh, mar rè a’ chiad stàladh (na dìochuimhnich modal_blacklist=thunderbolt a shònrachadh)
  4. Bidh sinn a’ cur suas ar diosc agus a’ dol a-steach don àrainneachd tro arch-chroot


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

Ma tha e riatanach gum bi am meur-chlàr ag obair gus am bi an siostam làn làn (tha seo riatanach nuair a bhios tu a’ cleachdadh crioptachadh luks/dm-crypt), sgrìobh e san fhaidhle /etc/mkinicpio.conf anns an roinn MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ag ùrachadh an kernel agus initramfs.


mkinicpio -p linux-mbp

A’ stèidheachadh systemd-boot

Deasaichidh sinn am faidhle /boot/loader/loader.conf, sguab às a h-uile càil a-staigh, agus cuiridh sinn na leanas ris:

default arch
timeout 5
editor 1

Rach don phasgan / boot/loader/entries, cruthaich am faidhle arch.conf agus sgrìobh:

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

Ma chleachd thu luks agus lvm, mar sin

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

Ath-thòisich gu macOS.

6. Wi-Fi setup

Mar a thàinig e a-mach aig a’ cheann thall, bidh MacOS a’ stòradh na faidhlichean firmware airson an adapter wi-fi sa phasgan /usr/share/firmware/wifi , agus faodaidh tu an toirt às an sin ann an cruth bloban agus am biadhadh chun mhodal kernel brcmfmac. Gus faighinn a-mach dè na faidhlichean a bhios an inneal-atharrachaidh agad a’ cleachdadh, fosgail inneal-crìochnachaidh ann an MacOS agus sgrìobh:

ioreg -l | grep C-4364

Gheibh sinn liosta fhada. Chan fheum sinn ach faidhlichean bhon roinn Faidhlichean a chaidh iarraidh:

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

Anns a 'chùis agad, faodaidh ainmean faidhle a bhith eadar-dhealaichte. Dèan lethbhreac dhiubh bhon phasgan / usr/share/firmware/wifi chun an flash drive agus ath-ainmich iad mar a leanas:

    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>

Anns a 'chùis seo, tha na h-ainmean modail anns an fhaidhle teacsa mu dheireadh; mura h-eil am modail agad macbookpro15,2, feumaidh tu am faidhle seo ath-ainmeachadh a rèir do mhodail MacBook.

Dèan ath-thòiseachadh gu Arch.

Dèan lethbhreac de na faidhlichean bhon dreach flash chun phasgan /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/

A’ sgrùdadh comas-gnìomh a’ mhodal:


rmmod brcmfmac
modprobe brcmfmac

Nì sinn cinnteach gun nochd an eadar-aghaidh lìonra tro ifconfig/ip.
Suidheachadh wifi tro iwctl

An aire. Tro netctl, nmcli, etc. Chan eil an eadar-aghaidh ag obair, dìreach tro iwd.

Bidh sinn a’ toirt air NetworkManager iwd a chleachdadh. Gus seo a dhèanamh, cruthaich am faidhle /etc/NetworkManager/NetworkManager.conf agus sgrìobh:

[device]
wifi.backend=iwd

Tòisich seirbheis NetworkManager


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

7. Fuaim

Gus am bi am fuaim ag obair, feumaidh tu pulseaudio a stàladh:


sudo pacman -S pulseaudio

Luchdaich sìos trì faidhlichean:

Gluaisidh sinn iad:

    /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.Suspend / Ath-thòiseachadh

Aig an àm seo 16.10.2019 feumaidh tu an dàrna cuid fuaim a thaghadh no stad / ath-thòiseachadh. Tha sinn a’ feitheamh ri ùghdar a’ mhodal bce gus an gnìomh a chrìochnachadh.

Gus modal a thogail le taic amharasach / ath-thòiseachadh, feumaidh tu na leanas a dhèanamh:


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

Ma chuir thu a-steach am modal apple-bce deiseil bhon stòr anuali1, feumaidh tu an toiseach a thoirt air falbh agus dìreach an uairsin cruinnich agus stàlaich am modal bce le taic modh crochte.

Cuideachd, feumaidh tu am modal applesmc a chur ris an liosta dhubh (mura h-eil thu air seo a dhèanamh roimhe) agus dèan cinnteach gu bheil am paramadair air a chur ris ann an /boot/loader/entries/arch.conf anns an loidhne roghainnean aig an deireadh pcie_ports = compat.

An-dràsta, bidh draibhear a’ bhàr-touch a’ tuiteam nuair a thèid e a-steach don mhodh crochaidh, agus bidh an draibhear tàirneanach uaireannan a’ reothadh an t-siostam airson còrr is 30 diog, agus airson grunn mhionaidean nuair a thòisicheas e a-rithist. Faodar seo a chàradh le bhith a’ luchdachadh mhodalan trioblaideach gu fèin-ghluasadach.

Cruthaich sgriobt /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

Dèan e so-ghnìomhaichte:

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

Tha sin uile airson a-nis. Is e an toradh siostam gu tur obrachail, ach a-mhàin cuid de nuances le stad / ath-thòiseachadh. Cha deach tubaistean no clisgeadh kernel fhaicinn rè grunn làithean de uptime. Tha mi an dòchas gun cuir ùghdar a’ mhodal bce crìoch air a dh’ aithghearr, agus gum faigh sinn làn thaic airson stad/ath-thòiseachadh agus fuaim.

Source: www.habr.com

Cuir beachd ann