Prohoster > Blog > quản lý > Làm cho MacBook Pro 2018 T2 hoạt động với ArchLinux (dualboot)
Làm cho MacBook Pro 2018 T2 hoạt động với ArchLinux (dualboot)
Đã có khá nhiều sự cường điệu về việc chip T2 mới sẽ khiến việc cài đặt Linux trên MacBook 2018 mới bằng thanh cảm ứng không thể thực hiện được. Thời gian trôi qua, vào cuối năm 2019, các nhà phát triển bên thứ ba đã triển khai một số trình điều khiển và bản vá kernel để tương tác với chip T2. Trình điều khiển chính cho các mẫu MacBook 2018 và mới hơn triển khai hoạt động VHCI (hoạt động cảm ứng/bàn phím/v.v.), cũng như hoạt động âm thanh.
BCE (Buffer Copy Engine) - thiết lập kênh liên lạc chính với T2. VHCI và Audio yêu cầu thành phần này.
VHCI là Bộ điều khiển máy chủ ảo USB; bàn phím, chuột và các thành phần hệ thống khác được cung cấp bởi thành phần này (các trình điều khiển khác sử dụng bộ điều khiển máy chủ này để cung cấp nhiều chức năng hơn.
Audio - driver cho giao diện âm thanh T2, hiện chỉ hỗ trợ phát âm thanh qua loa tích hợp của MacBook
Dự án thứ hai có tên trình điều khiển macbook12-spivà nó triển khai khả năng vận hành trình điều khiển đầu vào cho bàn phím, bàn di chuột SPI và thanh cảm ứng cho MacBook Pro Cuối năm 2016 trở lên. Một số trình điều khiển bàn phím/bàn di chuột hiện đã được bao gồm trong kernel, bắt đầu từ phiên bản 5.3.
Hỗ trợ cho các thiết bị như wi-fi, bàn di chuột, v.v. cũng được triển khai bằng các bản vá kernel. Phiên bản hạt nhân hiện tại5.3.5-1
Những gì đang làm việc vào lúc này
NVMe
bàn phím
USB-C (Thunderbolt chưa được thử nghiệm; khi mô-đun được tải tự động, nó sẽ đóng băng hệ thống)
Hướng dẫn này có thể áp dụng cho macbookpro15,1 và macbookpro15,2. Bài viết được lấy làm cơ sở từ Github bằng tiếng Anh. do đó. Không phải mọi thứ trong bài viết này đều hiệu quả nên tôi phải tự mình tìm ra giải pháp.
Những gì bạn cần cài đặt
Bộ chuyển đổi đế cắm USB-C sang USB (ít nhất ba đầu vào USB để kết nối chuột, bàn phím, modem USB hoặc điện thoại ở chế độ kết nối). Điều này chỉ cần thiết trong giai đoạn cài đặt đầu tiên
bàn phím USB
Ổ đĩa flash USB/USB-C tối thiểu 4GB
1. Vô hiệu hóa lệnh cấm khởi động từ phương tiện bên ngoài
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Thêm kho lưu trữ vào pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Chúng tôi bỏ qua kernel gốc trong pacman.conf:
IgnorePkg = linux linux-headers
Thêm các gói cần thiết, cuối cùng thêm kernel linux-mbp và linux-mbp-headers
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Chúng tôi thay đổi tập lệnh để hoạt động ở chế độ tương tác (thay thế pacstrap -C bằng 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!"
}
Hình thành một hình ảnh:
sudo ./build.sh -v
Nhấn Y để bỏ qua các gói bị bỏ qua, sau đó ghi image iso vào ổ flash USB:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Lần khởi động đầu tiên
Khởi động lại với ổ đĩa flash và bàn phím được lắp vào. Nhấn tùy chọn khi quả táo xuất hiện, chọn EFI BOOT.
Tiếp theo, bạn cần nhấn phím “e” và enter ở cuối dòng lệnh module_blacklist=sấm sét. Nếu điều này không được thực hiện, hệ thống có thể không khởi động được và Lỗi Thunderbolt ICM sẽ xuất hiện.
Sử dụng fdisk/cfdisk, chúng tôi tìm thấy phân vùng của mình (đối với tôi là nvme0n1p4), định dạng nó và cài đặt kho lưu trữ. Bạn có thể dùng hướng dẫn chính thức hoặc một bên.
Chúng tôi không tạo phân vùng khởi động; chúng tôi sẽ ghi bộ nạp khởi động vào /dev/nvme0n1p1
Sau khi môi trường trong /mnt được hình thành hoàn toàn và trước khi chuyển sang Arch-chroot, hãy viết:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Thêm vào /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Cài đặt mô-đun hạt nhân cho bàn phím. Trong kho lưu trữ thường niên1 có một gói làm sẵn, nó gọi là apple-bce-dkms-git. Để cài đặt nó, hãy viết vào bảng điều khiển:
pacman -S apple-bce-dkms-git
Trong trường hợp này, mô-đun hạt nhân sẽ được gọi táo-bce. Trong trường hợp tự lắp ráp, nó được gọi là ecb. Theo đó, nếu bạn muốn đăng ký một mô-đun trong phần MODULES của tệp mkinicpio.conf thì đừng quên bạn đã cài đặt mô-đun nào.
Lắp ráp thủ công:
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
Thêm mô-đun bce hoặc apple-bce để khởi động: /etc/modules-load.d/bce.conf
bce
Nếu bạn muốn sử dụng các nút Fn theo mặc định, hãy ghi vào tệp /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Cập nhật kernel và initramfs.
mkinitcpio -p linux-mbp
Cài đặt iwd:
sudo pacman -S networkmanager iwd
5. Bộ nạp
Sau khi tất cả các gói chính được cài đặt bên trong chroot, bạn có thể bắt đầu cài đặt bộ nạp khởi động.
Tôi chưa thể khiến grub hoạt động được. Grub khởi động từ ổ USB ngoài, nhưng khi bạn cố đăng ký nó trong nvme qua
hệ thống rơi vào tình trạng hoảng loạn kernel và sau khi khởi động lại một mục mới thông qua các tùy chọn đã không xuất hiện. Tôi không tìm thấy bất kỳ giải pháp rõ ràng nào cho vấn đề này và do đó quyết định thử triển khai khả năng khởi động bằng systemd-boot.
Phóng
bootctl --path=/boot install
và chúng ta rơi vào trạng thái hoảng loạn về hạt nhân. Tắt MacBook, bật lại, nhấp vào tùy chọn (không tắt hub USB-C bằng bàn phím)
Chúng tôi kiểm tra xem mục EFI BOOT mới đã xuất hiện ngoài thiết bị bên ngoài chưa
Chúng tôi chọn khởi động từ ổ USB ngoài, như trong lần cài đặt đầu tiên (đừng quên chỉ định module_blacklist=thunderbolt)
Chúng tôi gắn đĩa của mình và đi vào môi trường thông qua Arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Nếu bàn phím cần phải hoạt động cho đến khi hệ thống được tải đầy đủ (điều này là cần thiết khi sử dụng mã hóa luks/dm-crypt), thì hãy ghi nó vào tệp /etc/mkinicpio.conf trong phần MODULES:
Cuối cùng, MacOS lưu trữ các tệp chương trình cơ sở cho bộ điều hợp wi-fi trong thư mục /usr/share/chương trình cơ sở/wifi và bạn có thể lấy chúng từ đó dưới dạng các đốm màu và đưa chúng vào mô-đun hạt nhân brcmfmac. Để tìm hiểu xem bộ điều hợp của bạn sử dụng tệp nào, hãy mở một thiết bị đầu cuối trong MacOS và viết:
ioreg -l | grep C-4364
Chúng tôi nhận được một danh sách dài. Chúng tôi chỉ cần các tập tin từ phần Tệp được yêu cầu:
Trong trường hợp này, tệp văn bản cuối cùng chứa tên mẫu máy, nếu mẫu máy của bạn không phải là macbookpro15,2 thì bạn cần đổi tên tệp này cho phù hợp với mẫu máy MacBook của mình.
Khởi động lại vào Arch.
Sao chép các tập tin từ ổ đĩa flash vào thư mục /lib/firmware/brcm/
Hiện nay 16.10.2019 bạn phải chọn âm thanh hoặc tạm dừng/tiếp tục. Chúng tôi đang chờ tác giả của mô-đun bce hoàn thành chức năng.
Để xây dựng một mô-đun có hỗ trợ bị tạm dừng/tiếp tục, bạn phải làm như sau:
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
Nếu bạn đã cài đặt mô-đun apple-bce làm sẵn từ kho lưu trữ anuali1, thì trước tiên bạn phải xóa nó và chỉ sau đó lắp ráp và cài đặt mô-đun bce có hỗ trợ chế độ tạm dừng.
Ngoài ra, bạn cần thêm mô-đun applemc vào danh sách đen (nếu bạn chưa làm điều này trước đây) và đảm bảo rằng trong /boot/loader/entries/arch.conf trong dòng tùy chọn ở cuối, tham số đã được thêm vào pcie_ports=tương thích.
Hiện tại, trình điều khiển thanh cảm ứng gặp sự cố khi vào chế độ tạm dừng và trình điều khiển sấm sét đôi khi khiến hệ thống bị treo trong hơn 30 giây và trong vài phút khi tiếp tục lại. Điều này có thể được khắc phục bằng cách tự động dỡ bỏ các mô-đun có vấn đề.
Tạo một kịch bản /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
Làm cho nó có thể thực thi được:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Đó là tất cả cho bây giờ. Kết quả là một hệ thống hoàn toàn khả thi, ngoại trừ một số vấn đề liên quan đến việc tạm dừng/tiếp tục. Không có sự cố hoặc hoảng loạn hạt nhân nào được quan sát thấy trong vài ngày hoạt động. Tôi hy vọng rằng trong thời gian tới tác giả của mô-đun bce sẽ hoàn thành nó và chúng tôi sẽ nhận được sự hỗ trợ đầy đủ về việc tạm dừng/tiếp tục và âm thanh.