ProHoster > Blog > Adminisztráció > A MacBook Pro 2018 T2 működése az ArchLinux-szal (kettős rendszerindítás)
A MacBook Pro 2018 T2 működése az ArchLinux-szal (kettős rendszerindítás)
Elég nagy a hírverés arról, hogy az új T2 chip lehetetlenné teszi a Linux telepítését az új 2018-as érintősávos MacBookokra. Telt-múlt az idő, és 2019 végén a külső fejlesztők számos illesztőprogramot és kernelfoltot implementáltak a T2 chippel való interakcióhoz. A 2018-as és újabb MacBook modellek fő meghajtója a VHCI működést (érintés/billentyűzet/stb. működés), valamint a hangkezelést valósítja meg.
BCE (Buffer Copy Engine) - létrehozza a fő kommunikációs csatornát a T2-vel. A VHCI és az Audio szükséges ehhez az összetevőhöz.
A VHCI egy USB Virtual Host Controller; a billentyűzetet, az egeret és az egyéb rendszerelemeket ez az összetevő biztosítja (más illesztőprogramok ezt a gazdagépvezérlőt használják a több funkció biztosítására.
Audio - illesztőprogram a T2 audio interfészhez, jelenleg csak a hangkimenetet támogatja a MacBook beépített hangszóróin keresztül
A második projekt az ún macbook12-spi-illesztőprogram, és megvalósítja a beviteli illesztőprogram működtetését a billentyűzethez, az SPI trackpadhez és az érintősávhoz a MacBook Pro 2016 végi és újabb verzióihoz. Néhány billentyűzet/trackpad illesztőprogram most már benne van a kernelben, az 5.3-as verziótól kezdve.
Az olyan eszközök támogatása, mint a wi-fi, touchpad stb., szintén kerneljavításokkal valósult meg. Jelenlegi kernel verzió5.3.5-1
Mi működik jelenleg
NVMe
billentyűzet
USB-C (a Thunderboltot nem tesztelték; ha a modul automatikusan betöltődik, lefagy a rendszer)
Érintősáv (az Fn billentyűk, a háttérvilágítás, az ESC stb. bekapcsolásának lehetőségével)
Hang (csak beépített hangszórók)
Wi-Fi modul (brcmfmac-on keresztül és csak iw-n keresztül)
DisplayPort USB-C-n keresztül
Érzékelők
Felfüggesztés/Folytatás (részben)
stb..
Ez az oktatóanyag a macbookpro15,1 és a macbookpro15,2 rendszerekhez használható. A cikket a Githubból vettük alapul angolul. ezért. Ebben a cikkben nem minden működött, ezért magamnak kellett megoldást találnom.
Mit kell telepíteni
USB-C dokkoló-adapter USB-hez (legalább három USB bemenet egér, billentyűzet, USB modem vagy telefon internetmegosztási módban történő csatlakoztatásához). Ez csak a telepítés első szakaszában szükséges
USB billentyűzet
USB/USB-C flash meghajtó minimum 4 GB
1. Kapcsolja ki a külső adathordozóról történő rendszerindítás tilalmát
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Adja hozzá a tárolót a pacman.conf fájlhoz:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Figyelmen kívül hagyjuk az eredeti kernelt a pacman.conf fájlban:
IgnorePkg = linux linux-headers
Add hozzá a szükséges csomagokat, a végén add hozzá a linux-mbp kernelt és a linux-mbp-headereket
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Megváltoztatjuk a szkriptet, hogy interaktív módban működjön (a pacstrap -C helyére pacstrap -i -C lép):
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!"
}
Kép kialakítása:
sudo ./build.sh -v
Nyomja meg az Y billentyűt a figyelmen kívül hagyott csomagok kihagyásához, majd írja be az iso képet az USB flash meghajtóra:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Első indítás
Indítsa újra a flash meghajtót és a billentyűzetet. Nyomja meg az opciókat, amikor megjelenik az alma, és válassza az EFI BOOT lehetőséget.
Ezután meg kell nyomnia az „e” billentyűt, és be kell írnia a parancssor végén module_blacklist=thunderbolt. Ha ez nem történik meg, előfordulhat, hogy a rendszer nem indul el, és Thunderbolt ICM Error jelenik meg.
Az fdisk/cfdisk használatával megkeressük a partíciónkat (nekem ez az nvme0n1p4), formázzuk és telepítjük az archívumot. Te tudod használni hivatalos utasításokat vagy oldalt.
Nem hozunk létre rendszerindító partíciót, beírjuk a rendszerbetöltőt / dev / nvme0n1p1
Miután a /mnt-ben lévő környezet teljesen kialakult, és mielőtt az arch-chroot-ra váltana, írja be:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Hozzáadás az /etc/pacman.conf fájlhoz:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Kernel modulok telepítése a billentyűzethez. Az adattárban anuali1 van kész csomag, úgy hívják apple-bce-dkms-git. A telepítéshez írja be a konzolba:
pacman -S apple-bce-dkms-git
Ebben az esetben a rendszermag modul meghívásra kerül alma-bce. Önszerelődés esetén ún i. e. Ennek megfelelően, ha egy modult szeretne regisztrálni az mkinicpio.conf fájl MODULES szakaszában, ne felejtse el, melyik modult telepítette.
Kézi összeszerelés:
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
Adja hozzá a bce vagy az apple-bce modult az indításhoz: /etc/modules-load.d/bce.conf
bce
Ha alapértelmezés szerint az Fn gombokat szeretné használni, akkor írja be az /etc/modprobe.d/apple-tb.conf fájlba:
options apple-ib-tb fnmode=2
A kernel és az initramfs frissítése.
mkinitcpio -p linux-mbp
iwd telepítése:
sudo pacman -S networkmanager iwd
5. Rakodó
Miután az összes fő csomag telepítve van a chrootban, elkezdheti a rendszerbetöltő telepítését.
Nem sikerült a grubot munkába vinnem. A Grub külső USB-meghajtóról indul, de amikor megpróbálja regisztrálni az nvme-n keresztül
a rendszer kernelpánikba került, és az opciókon keresztüli újraindítás után nem jelent meg egy új elem. Nem találtam egyértelmű megoldást erre a problémára, ezért úgy döntöttem, hogy megpróbálom megvalósítani a rendszerindítást a systemd-boot segítségével.
Dob
bootctl --path=/boot install
és kernelpánikba kerülünk. Kapcsolja ki a MacBookot, kapcsolja be újra, kattintson az opciókra (ne kapcsolja ki az USB-C elosztót a billentyűzettel)
Ellenőrizzük, hogy a külső eszközön kívül megjelent-e egy új EFI BOOT bejegyzés
A rendszerindítást külső USB-meghajtóról választjuk, mint az első telepítéskor (ne felejtse el megadni a module_blacklist=thunderbolt)
Felcsatoljuk a lemezünket, és arch-chroot segítségével belépünk a környezetbe
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Ha szükséges, hogy a billentyűzet a rendszer teljes betöltéséig működjön (erre a luks/dm-crypt titkosítás használatakor van szükség), akkor írja be az /etc/mkinicpio.conf fájlba a MODULOK szakaszban:
Mint a végén kiderült, a MacOS a mappában tárolja a wi-fi adapter firmware fájljait /usr/share/firmware/wifi , és onnan blobok formájában átveheti őket és betáplálhatja a brcmfmac kernel moduljába. Ha meg szeretné tudni, hogy az adapter mely fájlokat használja, nyisson meg egy terminált a MacOS rendszerben, és írja be:
ioreg -l | grep C-4364
Hosszú listát kapunk. Csak fájlokra van szükségünk a szakaszból RequestedFiles:
Ebben az esetben az utolsó szövegfájl tartalmazza a modellneveket; ha az Ön modellje nem macbookpro15,2, akkor át kell neveznie ezt a fájlt a MacBook modelljének megfelelően.
Indítsa újra az Arch-ba.
Másolja a fájlokat a flash meghajtóról a /lib/firmware/brcm/ mappába
Jelenleg 16.10.2019 ki kell választania a hangot vagy a felfüggesztést/folytatást. Várjuk, hogy a bce modul szerzője befejezze a funkcionalitást.
Felfüggesztett/újraindítási támogatással rendelkező modul létrehozásához a következőket kell tennie:
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
Ha az anuali1 tárolóból telepítette a kész apple-bce modult, akkor először el kell távolítania, és csak ezután kell összeállítania és telepítenie a felfüggesztési mód támogatásával rendelkező bce modult.
Ezenkívül hozzá kell adnia az applesmc modult a feketelistához (ha ezt korábban nem tette meg), és győződjön meg arról, hogy a /boot/loader/entries/arch.conf fájl végén a beállítások sorában a paraméter hozzáadásra került. pcie_ports=kompat.
Jelenleg az érintősáv illesztőprogramja összeomlik felfüggesztési módba lépéskor, és a thunderbolt illesztőprogram néha több mint 30 másodpercre lefagy a rendszerben, illetve néhány percre, amikor újraindul. Ez a problémás modulok automatikus eltávolításával javítható.
Hozzon létre egy szkriptet /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
Tedd végrehajthatóvá:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Ez minden most. Az eredmény egy teljesen működőképes rendszer, kivéve néhány árnyalatot a felfüggesztéssel/folytatással kapcsolatban. Több napos üzemidő alatt nem figyeltek meg összeomlást vagy kernelpánikot. Remélem, hogy a közeljövőben a bce modul szerzője befejezi, és teljes támogatást kapunk a felfüggesztéshez/resume-hoz és a hangzáshoz.