Wir haben ein Macbook Pro 13" Mid 2010 – MacBookPro7,1 – und möchten per rEFInd Mint booten.
Die Nouveau-Treiber sind nicht sehr performant (das MacBook wird heiß und die Akku hält nicht so lange). Deshalb sollen die propietären nVidia-Treiber genutzt werden.
Beim Start des EFI-Bootvorgangs (während der Übergabe an grub) initialisiert Apples Firmware die VGA-Karte nicht als PCI-E-Busmaster aktiviert.
Mit den proprietären Treibern bootet Mint/Ubuntu in einen "Black Screen" – der Bildschirm bleibt schwarz.
Die Lösung ist üblicherweise, ein GRUB-Skript zu erstellen, um die PCI-E-Registers während des Bootens zu setzen:
- https://askubuntu.com/a/613573
- https://askubuntu.com/questions/264247/proprietary-nvidia-drivers-with-efi-on-mac-to-prevent-overheating/613573#613573
- https://askubuntu.com/a/943071
- https://askubuntu.com/questions/716565/macbook-pro-efi-and-nvidia-setpci-ids/943071#943071
Ich musste Mint häufig im Recovery-Modus booten, um den GRUB-Bootloader zu aktualisieren.
Das funktioniert nicht so gut, weil dann auch im Recovery-Mode auf dem Bildschirm nur Grafik-Müll angezeigt wird und man quasi erahnen/erraten muss, wo im Menü man sich gerade befindet.
Wir adaptieren die Lösung für aus diesem Arch-Forum-Post:
https://bbs.archlinux.org/viewtopic.php?pid=1833995#p1833995
Also: using rEFInd without GRUB aber mit den propietären nVidia-Treibern.
Zwar noch nicht probiert, aber so ähnlich sollte das auch für andere Linux-Distros funktionieren.
Momentan habe ich diese Lösung tesweise parallel zur o.g. GRUB-Script-Varainte laufen.
refind 0.11.5
- Wichtig: NICHT 0.12.0 verwenden
- in refind 0.12.0 werden scheinbar keine Parameter mehr an die Shell übergeben (Bug).
- siehe auch https://sourceforge.net/p/refind/discussion/general/thread/923a9e435a/
- evtl funktioniert es in späteren Versionen wieder
- download: https://sourceforge.net/projects/refind/files/0.11.5/refind-bin-0.11.5.zip/download
shell.efi
- Download Shell_Full.efi from tianocore/edk2 https://github.com/tianocore/edk2/blob/UDK2018/EdkShellBinPkg/FullShell/X64/Shell_Full.efi
- Rename it to shell.efi
- copy to //EFI/refind/tools_x64/
Wie gewohnt Mint auf eine Freie Partition installieren.
Wie gewohnt rEFInd installieren.
WICHTIG - rEFInd:
- nicht rEFInd 0.12.0 verwenden (siehe oben)
- sicherheitshalber alle Treiber von refind/drivers_x64 in den entsprechenden Ordner auf der EFI-Partition kopieren
- in refind.conf: Uncomment die Zeile "showtools shell, gdisk, memtest,....."
- shell.efi nnicht vergessen, s.o.
WICHTIG - Linux:
- In Linux nicht die empfohlenen proprietären nvidia-Treiber installieren!
- Vorerst den Nouveau-Treiber verwenden!
In Schritt 2 werden diverse Vorkehrungen getroffen und Daten ermittelt, die wir für die Einrichting benötigen.
- fs* ermitteln
- PSARTUUID ermitteln
- symlink /vmlinuz.efi anlegen
- symlink /initrd.img falls benötigt
Nützliche Terminal-Befehle – EFI-Partition mounten:
# Mac OS
diskutil list
# Partition ermitteln, z.B. disk0s1
sudo diskutil mount disk0s1
# Laufwerk kann nun in Finder geöffnet werden
# Mint/Ubuntu
sudo fdisk -l
sudo mount /dev/sda1 /mnt
# Erreichbar in /mnt per Dateimanager oder im Terminel cd /mnt
- in refind booten
- Shell starten (Terminal-Icon in Refind)
- Partition/filesystem finden, auf dem /boot liegt:
- durchprobieren: fs0:, fs1:, fs2:, fs3:
- mit ls und cd kann navigiert werden
- fs* notieren
Mint booten
# im Terminal Partition finden:
lsblk
# wenn die root-Partition z.B. sda3 ist, weiter mit
sudo blkid -p /dev/sda3
Der benötigte Wert ist PART_ENTRY_UUID - diesen notieren z.B. in einer Textdatei.
Die Shell wird keine Datei ausführen, die nicht auf eine .efi-Erweiterung endet. Deshalb erstellen wir einen Symlink "vmlinuz.efi", der im Script verwendet werden kann.
Falls bereits ein Symlink "/vmlinuz" zum default-Kernel existiert:
cd /
sudo ln -s /vmlinuz vmlinuz.efi
Falls nicht (Ziel vmlinuz-5.0.0-53-generic ggf anpassen)
cd /
sudo ln -s /boot/vmlinuz-5.0.0-53-generic vmlinuz.efi
Falls nicht bereits ein Symlink "/initrd.img" zur initrd existiert, erstellen wir auch hierfür einen Symlink:
cd /
sudo ln -s /boot/initrd.img-5.0.0-53-generic /initrd.img
...alternativ kann man im Script auch den Pfad zur Ramdisk angeben:
initrd=/boot/initrd.img-5.0.0-53-generic
Für den Kernel geht dies allerdings nicht, da MUSS ein Symlink mit der Endung .efi angelegt werden.
Das fertige Skript wird gespeichert im Stammverzeichnis der ESP-Partition als `macbook-mint-nvidia-fix.nsh
In der folgenden Vorlage müssen dafür nur die Werte für PARTUUID
und fs*
angepasst werden. Diese wurden zuvor in Schritt 2 ermittelt.
mm 04000004 1 ;PCI :7
mm 0017003E 1 ;PCI :8
fs5:\vmlinuz.efi root=PARTUUID=ca3af69f-ab47-482c-be16-f2156e1c8dd2 rw initrd=/initrd.img
Dann wird in //EFI/refind/refind.conf ein Boot-Eintrag wie dieser hinzugefügt (unter der Annahme, dass fs0 die ESP ist):
# custom entry Mint nvidia Fix
menuentry "Mint-nvidia-Fix" {
icon \EFI\refind\icons\os_linuxmint.png
loader \EFI\refind\tools_x64\shell.efi
options "fs0:\macbook-mint-nvidia-fix.nsh"
}
Mint booten, Terminal öffnen:
Wenn nach dem Neustart die Registerwerte auf 8 (bridge device und 7 (display device) eingestellt wurden, lief alles gut:
sudo setpci -s "00:17.0" 3e.b
# 08
sudo setpci -s "04:00.0" 04.b
# 07
Anm.:
Bei wurde statt "08" der Wert "0a" angezeigt.
Es funktioniert aber trotzdem.
- Treiberverwaltung starten
- proprietäre nVidia-Treiber installieren (nvidia-340)
- neu starten
Boah, das ist 3 Jahre her und ich hab seitdem nichts mehr damit gemacht. Letzten Endes hab ich mir bei ebay ein altes Lenovo für meine Linux-Spielereien gekauft, weil mir das mit dem Macbook einfach zu hakelig war... D.h. ich bin total aus dem Thema raus und kann gar nicht helfen. Sorry. Ein Tipp ins blaue wär höchstens noch, dass vielleicht doch Pfade nicht stimmen. Bist Du sicher, dass das Script auf fs1 liegt?