Faciens MacBook Pro 2018 T2 opus cum ArchLinux (dualboot)

Aliquantum hype de eo quod novus T2 chip non potest efficere Linux in novis 2018 MacBooks cum tactus installari. Tempus elapsum, et in fine MMXIX, tincidunt tertia factio compluras exactores et panniculos nucleos implevit pro commercio cum T2019 chip. Praecipua agitator ad exempla MacBook 2 ac recentiora instrumenta operationis VHCI (operationis tactus/keyboard/etc.), necnon operatio sana.

project mbp2018-ponte-drv dividitur in III partes principales:

  • BCE (Buffer Copy Engine) - alveum principale communicationis cum T2. VHCI et Audio hanc componentem requirunt.
  • VHCI est USB Virtual Hostiam Controller; tincidunt, murem et alia elementa systematis ab hoc componente praebentur (alii rectores hac hospite moderatore utuntur ad maiorem functionem praebendam.
  • Audio - coegi pro T2 audio interface, currently tantum sustinet output audio per MacBook in loquentibus constructum.


Secundum consilium dicitur macbook12-spi-agitatoret facultatem exercendi input coegi pro tincidunt, SPI trackpad, et tactus pro Late 2016 et postea MacBook Pros. Nonnulli tincidunt/trackpad rectores nunc in nucleo includuntur, incipientes a versione 5.3.

Firmamentum ad machinas ut wi-fi, touchpad, etc etiam utens inaequaliter nucleos implevit. Current nucleus versionis 5.3.5-1

Quid opus in tempore

  1. NVMe
  2. keyboard
  3. USB-C (Thunderbolt non probatus est; modulus cum automatice oneratur, systema concrescit)
  4. Touchbar (cum facultate vertere in claves Fn, backlight, ESC, etc.)
  5. Sonus (instructum in loquentium modo)
  6. Wi-FI modulus (per brcmfmac et solum per iw)
  7. DisplayPort super USB-C
  8. sensoriis
  9. Suspendendi / Proin (ex parte)
  10. etc ..

Haec doceo applicabilis pro macbookpro15,1 et macbookpro15,2. Articulum pro fundamento a Github Anglice sumptum est. hic. Non omnia in hoc articulo laboraverunt, ut me solutionem invenirem.

Quid opus est ad institutionem

  • USB-C adaptor docking cum USB (saltem tres USB initibus applicandi murem, claviaturam, USB modem vel telephonum in modum ligandi). Hoc solum necessarium est inter initia institutionis
  • USB tincidunt
  • USB / USB-C mico coegi minimum 4GB

1. inactivare ban in patuissent ab externa media

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

2. Allocate liberum spatium per Orbis utilitatem

Pro commodo, statim 30GB ad disci collocavi, formans illud in ipsa Utilitate Orbis exfat. Disk Disk Utilitas Physica dividere.

3. crea in ISO imaginem

options:

  1. Iter simplicem ire potes et imaginem paratam factae cum nucleo 5.3.5-1 et inaequaliter depone aunali1 ad imaginem perfecti
  2. Fac imaginem te per archlive (ratio cum Archae distributione requiritur)

    install archiso

    pacman -S archiso

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

    Repositorium pacman.conf adde:

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

    nucleum originale in pacman.conf ignoramus:

    IgnorePkg   = linux linux-headers
    

    Fasciculis necessariis adde, in fine adde nucleum linux-mbp et caput capitis linux-mbp.

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

    Mutamus scripturam ad operandum in modo interactive (repone pacstrap -C cum 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!"
    }

    Formans imaginem;

    sudo ./build.sh -v

    Press Y to skip neglecta fasciculis, scribe imaginem in USB mico coegi:

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

4. Primum tabernus

Reboot cum mico coegi et claviaturae inseruntur. Optiones diurnariae cum apparet malum, elige EFI CALCEUS.

Deinde debes "e" clavem premere et in fine lineae praecepti inire module_blacklist = tonitrui. Si hoc non factum est, ratio non violenta et fulmen ICM Error apparebit.

Usura fdisk/cfdisk partitionem nostram invenimus (pro me est nvme0n1p4), formare eam et archivum instituere. Vos can utor officialis instructiones aut Latus.

Nos tabernus partitionem non creando; nos scribere in bootloader /dev/nvme0n1p1
Post ambitum in /mnt perfecte formatur et antequam ad archi-chroot moveatur, scribe:

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

Add to /etc/pacman.conf;


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

Acinum inaugurare:


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

Fulmen et applesmc subcriptio in /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Compendia, touchbar, etc

Yay install:


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

Moduli inaugurandi pro touchbar ad operandum:


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

Modulos addere incipiendi: /etc/modules-load.d/apple.conf

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

Acinum moduli tincidunt. In eclesiae reposito anuali1 Est sarcina parata facta, suus 'vocatur pomum-bce-dkms-git. Instituere eam scribe in console;

pacman -S apple-bce-dkms-git

Hoc in casu, modulus nucleus vocabitur pomum-bce. In conventu sui, vocatur BCE. Proinde si moduli in MODULES sectionem fasciculi mkinicpio.conf rescribere vis, noli oblivisci cuius moduli instituisti.

Manuale conventus;


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

Adde boe vel pomi-bce moduli ad satus: /etc/modules-load.d/bce.conf

bce

Si vis tesserae Fn per defaltam uti, scribe in tabella /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Adaequat nucleos et initramfs.


mkinitcpio -p linux-mbp

Install iwd:

sudo pacman -S networkmanager iwd

5. Loader

Cum omnes sarcinae principales intra chroot installantur, incipere potes praedones.

Vermis laborare non potui. Grub ocreae ab USB externa pellunt, sed cum eam in nvme via . subcriptio conantur

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

systema in terrorem nucleum perrexit et postquam novam item per optiones reboonavit non apparuit. Solutio huius problematis claram non inveni et idcirco tentare decrevi ut tabernus systemd-bombalum efficere.

  1. Launch
    bootctl --path=/boot install

    et itur in acinum terrorem. Averte MacBook, iterum verte, optiones preme (usB-C centrum cum claviaturis noli averte)

  2. Reprehendimus novam EFI CALCEUS ingressum apparuisse praeter machinam externam
  3. Tabernam ab externa USB coegi, sicut in prima institutione (nolite oblivisci moduli_blacklist=tonitrui) specificare.
  4. Orbem nostrum conscendimus et ingredimur in ambitu per archi-chroot


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

Si tincidunt ad operandum necessarium est donec ratio plene onerata est (hoc opus est cum encryption utens luks/dm-crypt), tunc scribe in fasciculo /etc/mkinicpio.conf in sectione MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Adaequat nucleos et initramfs.


mkinicpio -p linux-mbp

Occasus sursum systemd-tabernus

Fasciculum /boot/loader/loader.conf emendamus, omnia intus delemus et sequentia addimus:

default arch
timeout 5
editor 1

Vade ad folder /boot/loader/entries, arch.conf lima crea et scribe:

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

Si usus luks et lvm, tunc

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

Reboot in MacOS.

6. Wi-FI setup

Cum in fine evenit, MacOS files firmware pro fi adaptor in folder . reponit /usr/share/firmware/wifi et inde in modum blobs sume potes et pasce eas ad moduli nuclei brcmfmac. Ut invenias quae aptatorem tuum adhibeas, terminalem in MacOS aperi et scribe:

ioreg -l | grep C-4364

Longum indicem fuat. Tantum postulo lima ex sectione 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>"})

In casu tuo, tabella nomina differre possunt. Effingo eas a /usr/share/firmware/Wifi folder in mico coegi ac renominandi ut sequitur:

    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>

In hoc casu, novissimus fasciculus textus exemplorum nomina continet: si exemplar macbookpro15,2 non est, hunc fasciculum in nomine MacBook pro exemplo tuo nominare debes.

Reboot in Arch.

Effingo lima a mico coegi ad /lib/firmware/brcm/ folder


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/

Reprehendo ad moduli functionality:


rmmod brcmfmac
modprobe brcmfmac

Facimus ut interface retiacula per ifconfig/ip appareat.
WiFi via usque ad occasum iwctl

Animum. Via netctl, nmcli, etc. Instrumentum non operatur, nisi per iwd.

NetworkManager cogimur uti iwd. Ad hoc fac tabellam /etc/NetworkManager/NetworkManager.conf crea et scribe:

[device]
wifi.backend=iwd

Satus NetworkManager ministerium


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

7. Sanus

Ut ad sonum elaborandum, pulsaudium instituere debes;


sudo pacman -S pulseaudio

Download tria files:

Moveamus eos;

    /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 suspende / Proin

In statu 16.10.2019 elige tibi aut sonum aut suspendendi / Proin. Exspectamus auctorem boe moduli ad munus perficiendum.

Modulum aedificare cum suspenso / subsidium resumere, debes facere sequenti:


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

Si parato-boe moduli ex anuali1 repositorium instituisti, tunc primum removere debes et tunc demum convenias et modulum boe moduli cum sustentaculo suspenso institue.

Etiam, applesmc modulum notatione addere debes (si id prius non fecisti) et fac ut in /boot/loader/entries/arch.conf in linea optionum in fine moduli addatur. pcie_ports = compat.

In statu, agitator touchbar fragore cum modum suspendendi intrandi, et agitator fulminis interdum systema plus quam XXX secundis constringit, et per aliquot minutas resumit. Hoc figi potest ex automatice modulorum problematicorum problematicorum exonerationes.

Creare scriptor /lib/systemd/system-somnium/rmmod.sh:

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

Fac illud exsecutabile;

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

Quod ut 'quia iam omnia. Effectus est systema omnino operabile, aliquibus extenuationibus suspendendi/resumendi. Nullae fragores vel paniculi nuclei per aliquot dies uptime observati sunt. Spero in proximo futurum auctorem ascen- dendi moduli illud perficiet, et plenam sustentationem suspensa/resumendi et soni dabimus.

Source: www.habr.com