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
Hallo Ralf,
nachdem ich die Anweisungen befolgt habe und vermute, alles richtig gemacht zu haben, erreiche ich folgenden Punkt.
Es erscheint nach dem Booten diese Meldung:
»'fs1:\macbook-mint-nvidia-fix.nsh' is not recognized as an internal or external command, operable program, or batch file
Press ESC in 1 seconds to skip startup.nsh, any other key to continue
Shell> _«
Der Script Nvidia-Fix wird also nicht ausgeführt und ich boote mit refind nach ESC in die normale LinuxMint-Variante, die mit
Mint 19.3 und dem noveau-Treiber zumindest soweit gut läuft. (MacBook Pro A1260 Typ 4.1 aus 2008)
Falls Du mir helfen willst, kann ich weitere Informationen dazu liefern.
Viele Grüße
Thomas