要解決的問題跟以下這篇差不多:
https://duckfly-tw.blogspot.com/2023/09/macbook-13-2014-ubuntu.html
但還有其它問題:
1.因Macbook 2012 (A1286)有獨顯GT650M,需手動安裝nvidia-470驅動(支援GT650M的最後一版驅動),因上游驅動都變5XX系列了,ubuntu-drivers因顯卡太舊無法安裝驅動,沒安裝nvidia閉源驅動就只能用kernel內建的nouveau開源驅動,效率肯定低。
另外要特別注意的是,nvidia-driver-470只能支援到kernel 6.8.x,再上去dkms driver會無法被新的kernel載入!因此千萬別安裝6.8以上的kernel,即使裝了沒使用也不行(因為會破壞dkms tree造成其它kernel也無法正常運作),如果裝了6.8以上的kernel,務必要移除掉,並重建dkms tree:
sudo dkms autoinstall --all
# 先完全移除 nouveau(黑名單)
sudo rmmod nouveau (若出現無法缷載dkms,略過沒關係)
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u
# 加 graphics-drivers PPA(專門放舊版驅動)
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-470
#加裝nvidia-prime nvidia-prime-applet,這樣tool panel才會有nvidia optimus面版可以調整
sudo apt install nvidia-prime nvidia-prime-applet
# 重開機
sudo reboot
# 正確結果會顯示:NVIDIA GeForce GT 650M/PCIe/SSE2 (不再是 NVE7)
glxinfo | grep "OpenGL renderer"
2. 電源管理,安裝下面這個applesmc-next dkms,以便能設定macbook的充電上限:https://github.com/c---/applesmc-next?tab=readme-ov-file
直接複製其bash script以sudo執行後,再複製45-apple的tlp script並重開機:
sudo cp /usr/src/applesmc-next-0.1.6/45-apple /usr/share/tlp/bat.d/
之後可安裝如Battery Health Charging或Slimbook Battery來設定電池的充電上限。
3.dmesg出開以下錯誤訊息:
DMAR-IR: [Firmware Bug]: ioapic 2 has no mapping iommu, interrupt remapping will be disabled
#修改/etc/default/grub,修改開機選項
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash irqpoll intremap=off"
ref:
https://askubuntu.com/questions/767850/firmware-bug-ioapic-2-has-no-mapping-iomm-after-kernel-update