MacBook Pro 2018 T2 ArchLinux-ekin funtzionatzea (abio bikoitza)
Izugarri samarra izan da T2 txip berriak 2018ko MacBook berrietan ukipen-barra duten Linux instalatzea ezinezkoa izango delakoan. Denbora pasa zen, eta 2019 amaieran, hirugarrenen garatzaileek hainbat kontrolatzaile eta kernel adabaki inplementatu zituzten T2 txiparekin elkarreragiteko. MacBook modeloen 2018 eta berriagoa den kontrolatzaile nagusiak VHCI funtzionamendua (ukitu/teklatua/etab. funtzionamendua) inplementatzen du, baita soinuaren funtzionamendua ere.
BCE (Buffer Copy Engine) - T2-rekin komunikazio kanal nagusia ezartzen du. VHCI eta Audioak osagai hau behar dute.
VHCI USB Virtual Host Controller bat da; teklatua, sagua eta sistemaren beste osagai batzuk osagai honek ematen ditu (beste kontrolatzaile batzuek ostalari kontrolagailu hau erabiltzen dute funtzionalitate gehiago emateko.
Audioa - T2 audio interfazearen kontrolatzailea, une honetan MacBook-en bozgorailu integratuen bidez soilik onartzen du audio-irteera
Bigarren proiektua deitzen da macbook12-spi-driver, eta MacBook Pro Late 2016 eta ondorengoetarako teklatuaren, SPI trackpad-aren eta ukipen-barraren sarrerako kontrolatzaile bat funtzionatzeko gaitasuna ezartzen du. Teklatu/trackpad kontrolatzaile batzuk nukleoan sartzen dira orain, 5.3 bertsiotik hasita.
Wi-Fi, touchpad, etab bezalako gailuetarako laguntza ere inplementatu zen nukleoaren adabakiak erabiliz. Egungo nukleoaren bertsioa5.3.5-1
Momentu honetan funtzionatzen duena
NVMe
teklatua
USB-C (Thunderbolt ez da probatu; modulua automatikoki kargatzen denean, sistema izoztu egiten du)
Ukipen-barra (Fn teklak, atzeko argia, ESC, etab. aktibatzeko aukerarekin)
Soinua (bozgorailu integratuak soilik)
Wi-Fi modulua (brcmfmac bidez eta iw bidez soilik)
DisplayPort USB-C bidez
Sentsoreak
Eten/Berrekin (partzialki)
eta abar ..
Tutorial hau macbookpro15,1 eta macbookpro15,2-etarako aplikagarria da. Github-en ingelesezko artikulu bat hartu zen oinarritzat. beraz,. Artikulu honetan denak ez zuen funtzionatu, beraz, nik neuk aurkitu behar izan nuen irtenbidea.
Instalatu behar duzuna
USB-C ainguratze-egokitzailea USBrako (gutxienez hiru USB sarrera sagua, teklatua, USB modema edo telefonoa ainguratze moduan konektatzeko). Hau instalazioaren lehen faseetan baino ez da beharrezkoa
USB teklatua
USB/USB-C flash drive gutxienez 4 GB
1. Desgaitu kanpoko euskarrietatik abiarazteko debekua
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Gehitu biltegia pacman.conf-era:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Pacman.conf-en jatorrizko nukleoa alde batera uzten dugu:
IgnorePkg = linux linux-headers
Gehitu beharrezko paketeak, amaieran linux-mbp kernel eta linux-mbp-headers gehitu
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Scripta modu interaktiboan lan egiteko aldatzen dugu (ordeztu pacstrap -C pacstrap -i -C-rekin):
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!"
}
Irudi bat osatzea:
sudo ./build.sh -v
Sakatu Y ez ikusitako paketeak saltatzeko, eta idatzi iso irudia USB flash unitatean:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Lehenengo abioa
Berrabiarazi flash drive eta teklatua sartuta. Sakatu aukerak sagarra agertzen denean, hautatu EFI BOOT.
Ondoren, "e" tekla sakatu eta komando lerroaren amaieran sartu behar duzu module_blacklist=trumoia. Hau egiten ez bada, baliteke sistema ez abiarazi eta Thunderbolt ICM errore bat agertuko da.
fdisk/cfdisk erabiliz gure partizioa aurkitzen dugu (niretzat nvme0n1p4 da), formateatu eta artxiboa instalatu. Erabili dezakezu argibide ofizialak edo alboan.
Ez gara abiarazteko partizioa sortzen ari; abio-kargatzailea idatziko dugu /dev/nvme0n1p1
/mnt-en ingurunea guztiz osatu ondoren eta arch-chroot-era pasatu aurretik, idatzi:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Gehitu /etc/pacman.conf-en:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Teklaturako nukleoaren moduluak instalatzea. Biltegian urteko1 prest egindako pakete bat dago, deitzen da apple-bce-dkms-git. Instalatzeko, idatzi kontsolan:
pacman -S apple-bce-dkms-git
Kasu honetan, nukleoaren modulua deituko da sagar-bce. Automuntatzearen kasuan, deitzen zaio Ka. Horren arabera, modulu bat mkinicpio.conf fitxategiko MODULUAK atalean erregistratu nahi baduzu, ez ahaztu zein modulu instalatu duzun.
Eskuzko muntaia:
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
Gehitu bce edo apple-bce modulua abiarazteko: /etc/modules-load.d/bce.conf
bce
Fn botoiak lehenespenez erabili nahi badituzu, idatzi /etc/modprobe.d/apple-tb.conf fitxategian:
options apple-ib-tb fnmode=2
Nukleoa eta initramfs eguneratzea.
mkinitcpio -p linux-mbp
Instalatu iwd:
sudo pacman -S networkmanager iwd
5. Kargagailua
Pakete nagusi guztiak chroot barruan instalatuta daudenean, abio-kargatzailea instalatzen has zaitezke.
Ezin izan dut lanera eraman. Grub-ek kanpoko USB disko batetik abiarazten du, baina nvme-n erregistratzen saiatzen zarenean
sistema nukleoaren izuan sartu zen, eta aukeren bidez elementu berri bat berrabiarazi ondoren ez zen agertu. Ez nuen arazo honi irtenbide argirik aurkitu eta, horregatik, systemd-boot erabiliz abiaraztea inplementatzen saiatzea erabaki nuen.
korrika
bootctl --path=/boot install
eta kernel izuan sartzen gara. Itzali MacBook, piztu berriro, egin klik aukerak (ez itzali USB-C hub-a teklatuarekin)
Kanpoko gailuaz gain EFI BOOT sarrera berri bat agertu dela egiaztatzen dugu
Kanpoko USB unitate batetik abiaraztea hautatzen dugu, lehen instalazioan bezala (ez ahaztu module_blacklist=thunderbolt zehaztea)
Gure diskoa muntatzen dugu eta arch-chroot bidez ingurunera sartzen gara
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Teklatuak sistema guztiz kargatu arte funtzionatzea beharrezkoa bada (beharrezkoa da luks/dm-crypt enkriptatzea erabiltzean), idatzi /etc/mkinicpio.conf fitxategian MODULUAK atalean:
Azkenean, MacOS-ek wi-fi egokigailuaren firmware fitxategiak gordetzen ditu karpetan /usr/share/firmware/wifi , eta hortik atera ditzakezu blob moduan eta brcmfmac kernel modulura elikatu. Zure egokitzaileak zein fitxategi erabiltzen dituen jakiteko, ireki terminal bat MacOS-en eta idatzi:
ioreg -l | grep C-4364
Zerrenda luzea jasotzen dugu. Ataleko fitxategiak baino ez ditugu behar EskatutakoFitxategiak:
Kasu honetan, azken testu-fitxategiak modelo-izenak ditu; zure modeloa macbookpro15,2 ez bada, fitxategi hau izena aldatu behar duzu zure MacBook modeloaren arabera.
Une honetan 16.10.2019 soinua edo eten/berreki aukeratu behar duzu. bce moduluaren egileak funtzionaltasuna osatzeko zain gaude.
Susped/berrerekin laguntzarekin modulu bat eraikitzeko, honako hau egin behar duzu:
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 biltegitik prest egindako apple-bce modulua instalatu baduzu, lehenik eta behin kendu beharko duzu eta ondoren bakarrik muntatu eta instalatu bce modulua eseki moduaren euskarriarekin.
Gainera, applesmc modulua zerrenda beltzean gehitu behar duzu (hau lehenago egin ez baduzu) eta ziurtatu amaierako aukeren lerroko /boot/loader/entries/arch.conf-en parametroa gehitzen dela. pcie_ports=konpat.
Gaur egun, ukipen-barrako kontrolatzaileak huts egiten du eteteko moduan sartzean, eta thunderbolt kontrolatzaileak batzuetan sistema izozten du 30 segundo baino gehiagoz, eta zenbait minutuz berriro hasten denean. Hau konpondu daiteke modulu problematikoak automatikoki deskargatuz.
Sortu gidoia /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
Egin exekutagarria:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Hori da guztia oraingoz. Emaitza guztiz funtzionagarria den sistema bat da, suspentsioa/berrekustea duten Γ±abardura batzuk izan ezik. Ez zen hutsegite edo kernel izurik ikusi funtzionamendu-egun batzuetan. Etorkizun hurbil batean bce moduluaren egileak amaitzea espero dut, eta suspentsio/represa eta soinurako laguntza osoa lortuko dugula.