• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Sprichwörter und Redewendungen sind das Thema unseres Monatswettbewerbes. Nähere Informationen dazu gibt es natürlich auch, und zwar auf dieser Seite ---> Klick

Linux auf 2016er MacBook 12-Zoll (MacBook9,1)

thrillseeker

Weißer Winterkalvill
Registriert
06.10.04
Beiträge
3.556
Hallo, Gemeinde!

Zu den aktuellen MacBooks ist bekannt, dass Linux nicht ohne Weiteres darauf läuft. Die internen SSDs werden nicht erkannt und Tastatur/Trackpad funktionieren auch nicht. Die neueste Pro-Serie (2016er Modelle mit USB-C-Ports) ist wohl ebenfalls betroffen.

Es gibt nun seit einiger Zeit Patches für die beiden Probleme,[1][2] allerdings habe ich als Noob keinen Schimmer, wie man die anwendet. Hat irgendjemand schon geschafft, das Ganze zum Laufen zu bringen? Wenn ja: Wie?

Grüße,
Stefan

(PS: Ja, ich habe gute Gründe für Linux auf dem Mac. Ja, ich weiß, dass OS X "auch UNIX" ist, will aber trotzdem ein Linux nutzen. Nein, VM ist keine Lösung für mich, und nein, ich will keine andere Hardware. Auch kein Thinkpad.)

----
[1] Patch zur Erkennung der SSD, http://lists.infradead.org/pipermail/linux-nvme/2016-May/004694.html
[2] Patch zur Benutzung von Tastatur und Trackpad, https://github.com/cb22/macbook12-spi-driver
 

weberknechtmann

Erdapfel
Registriert
15.03.17
Beiträge
4
Die Patches sind alles Terminal bzw. Kommandozeilenkommandos,welche du vor der Installation eingeben musst, um die Systemdateien wie Treiber etc. richtig zu installieren/zu editieren.
 

thrillseeker

Weißer Winterkalvill
Registriert
06.10.04
Beiträge
3.556
Danke, aber so einfach ist es leider nicht. :D

Der Kernelpatch (1) kann in eine ASCII-Datei kopiert werden und muss vor dem Kompilieren des Kernels mit dem Befehl 'patch' aufgespielt werden:

Code:
patch -p1 < /pfad/zum/patch/dateiname.patch

Anschliessend gibt es dann aber das Problem, dass das Kompilieren mit einem Schwung Fehlermeldungen endet:

Code:
make[3]: Leaving directory '/media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+'
(cd /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+;         rm -f stamp-building )
(cd /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+;                                                          \
         [ ! -d scripts/cramfs ]   || make -C scripts/cramfs distclean ; )
sed -e 's/=V/4.10.1+patched+/g' -e 's/=A/amd64/g'           \
             -e 's/=ST/linux/g'  -e 's/=B/x86_64/g'               \
                 ./debian/pkg/source/README >  /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+/README.Debian ;
if test -f README.Debian ; then                                         \
           install -p    -o root -g root  -m  644 README.Debian        /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/share/doc/linux-source-4.10.1+patched+/README.Debian.1st;    \
   gzip -9qf                            /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/share/doc/linux-source-4.10.1+patched+/README.Debian.1st;    \
fi
test -d /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+/debian || mkdir /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+/debian
for file in ChangeLog  Control  Control.bin86 config templates.in rules control changelog; do                    \
            cp -f  ./debian/$file /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+/debian/;                       \
        done
cp: cannot stat './debian/ChangeLog': No such file or directory
for dir  in Config docs examples ruleset scripts pkg po;  do                                      \
          cp -af ./debian/$dir  /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+/debian/;                         \
        done
(cd /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+; find . -type d -name .arch-ids -print0  | xargs -0r rm -rf {} \; )
(cd /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+; find . -type d -name .git -print0       | xargs -0r rm -rf {} \; )
(cd /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+; find . -type f -name .gitmodule -print0 | xargs -0r rm -f  {} \; )
(cd /media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0/debian/linux-source-4.10.1+patched+/usr/src/linux-source-4.10.1+patched+ && cd .. &&                                            \
           tar --bzip2 -cf linux-source-4.10.1+patched+.tar.bz2 linux-source-4.10.1+patched+ && \
             rm -rf linux-source-4.10.1+patched+;)
make[2]: Leaving directory '/media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0'
debian/ruleset/common/targets.mk:357: recipe for target 'debian/stamp/do-install-indep' failed
make[1]: *** [debian/stamp/do-install-indep] Error 2
make[1]: Leaving directory '/media/kubuntu/3ccc8b0a-e764-40ff-b4cd-1b38a437ba10/boot/patch/linux-source-4.10.0'
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
debian/ruleset/targets/common.mk:401: recipe for target 'debian/stamp/build/buildpackage
 

thrillseeker

Weißer Winterkalvill
Registriert
06.10.04
Beiträge
3.556
SOLVED

Die Kurzform, die vermutlich nur für fortgeschrittene Nutzer verständlich ist, ist folgende:
  • Mit dem Festplattendienstprogramm unter macOS Sierra eine freie Partition für GNU/Linux erstellen (idealerweise als FAT, damit sie unter GNU/Linux problemlos erkannt wird)
  • GNU/Linux runterladen (hier verwendet: die Beta von Ubuntu 17 Zesty Zapus)
  • Unter macOS mit dd einen bootfähigen Live-USB-Stick erstellen (hier steht ausführlich, wie's geht)
  • Neustarten, beim Startsound die Taste 'alt' drücken und halten, im Auswahlmenü den Live-Stick auswählen. Das MacBook bootet in die Live-Umgebung
  • Die interne Tatstatur und das Trackpad des MacBooks werden nicht erkannt, man braucht also eine USB-Tastatur und USB-Maus sowie zwei freie USB-Ports (dran denken, dass in einem Port bereits der Live-Stick steckt). Hier war eine USB-Tastatur vom Ur-iMac hilfreich, die selbst zwei freie USB-Steckplätze hat.
  • Ein Terminal öffnen und mit folgenden drei Befehlen den Zugriff auf die lokale Festplatte des MacBooks ermöglichen:
Code:
$ sudo modprobe nvme
$ sudo chmod -R a=rwx /sys/bus/pci/drivers
$ sudo echo 106b 2003 > /sys/bus/pci/drivers/nvme/new_id
  • Jetzt GNU/Linux installieren. Der Installer ist selbsterklärend, man muss lediglich bei der Auswahl der Partition aufpassen, dass man GNU/Linux auf die dafür vorbereitete Partition installiert und die anderen unangetastet lässt, insbesondere die EFI-Partition des Macs (ich habe ext-4 als Dateisystem gewählt, nur eine Rootpartition erstellt und auf separate Home-, Bootloader- und Swap-Partitionen verzichtet)
  • Den Bootloader (GRUB) bei der Installation auf die Rootpartition (/) installieren, NICHT auf die EFI-Partition des MacBooks!
  • Nach der Installation NICHT neustarten, sondern in der Live-Umgebung bleiben!
  • In der Live-Umgebung einen neuen Kernel runterladen und entpacken (hierzu gibt es ausführliche Anleitungen im Netz; ich bin dieser hier gefolgt und habe den Kernel 4.10.0-13-generic verwendet).
  • Den Kernel patchen. Hierzu den Inhalt dieses Forenbeitrags in eine Textdatei namens nvme.patch kopieren und die Datei eine Verzeichnisebene über dem Ordner mit dem entpackten Kernel ablegen. Dann in den Ordner mit dem Kernel wechseln und folgenden Befehl ausführen:
Code:
$ patch -p1 < ../nvme.patch
(Aufpassen: nach dem 'p' kommt die Ziffer Eins, kein 'L')
  • Kernel nach Anleitung kompilieren (geduldig sein, das kann drei Stunden oder länger dauern)
  • Den kompilierten Kernel mithilfe von chroot auf die Partition mit dem installieren GNU/Linux installieren (hier steht, wie's geht)
  • Bei mir ergaben sich Warnmeldungen zu einigen nicht erfüllten Abhängigkeiten (dependency problems), die sich durch ein anschließendes Ausführen der Befehle sudo apt update und sudo apt --fix-broken install beheben ließen
  • Das Programm dkms installieren
  • Kernelmodule mit dem Befehl dkms autoinstall erstellen
  • Bootloader (GRUB) entfernen (durch Löschen des Ordners /boot/grub)
  • Die alten Kernels aus /boot entfernen (sodass nur der neu kompilierte Kernel und das zugehörige Initram verbleiben)
  • Eine Datei mit Namen refind_linux.conf mit folgendem Inhalt erstellen und in den Ordner /boot legen:
Code:
"Boot with standard options"  "ro root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX nointremap"
(Die XXXX durch die tatsächliche UUID der Festplatte ersetzen. Man findet sie beispielsweise in der Live-Umgebung mithilfe des Programms 'KDE Partition Manager' heraus.)
  • Jetzt endlich: ein Neustart (in macOS booten)
  • rEFInd runterladen und entpacken
  • Neustart in den Recovery-Modus des macOS (mittels 'command + R' beim Startsound)
  • Im Recovery-Modus ein Terminal öffnen, in den Ordner mit dem entpackten rEFInd wechseln und von dort das Install-Script von rEFInd ausführen
  • Neustart
  • Jetzt sollte man unter rEFInd das GNU/Linux auswählen und booten können.
Spannung ... und ... Voilà:

C7noseXX0AAScZp.jpg


Was funktioniert:
  • der Bildschirm in voller Auflösung
  • WiFi
  • Batterie- und Ladeanzeige
Was (noch) nicht funktioniert:

--
Text und Foto: kernpanik, Lizenz CC BY-NC-SA 4.0
https://creativecommons.org/licenses/by-nc-sa/4.0/
 
Zuletzt bearbeitet:

thrillseeker

Weißer Winterkalvill
Registriert
06.10.04
Beiträge
3.556
PS: Die Holzhammer-Lösung, sowohl GRUB als auch die älteren Kernels zu entfernen, ist nicht besonders elegant, hat jedoch Gründe:
  1. Die älteren, ungepatchten Kernels funktionieren auf dem MacBook nicht, da sie die Festplatte, auf der sie liegen, selbst nicht erkennen. Das "weiß" rEFInd aber nicht, weshalb es diese Kernels als "ordentliche" Bootmöglichkeiten erkennt und beim Systemstart anbietet. Da es vom Kernel 4.10.0-13 zwei Versionen gab (eine gepatchte und eine ungepatchte), wurde ausgerechnet die richtige Version erst angezeigt, nachdem die falsche entfernt war.
  2. Das auf Macs schon immer problemanfällige GRUB braucht man als Nutzer von rEFInd nicht, denn rEFInd sucht bei jedem Start des Rechners automatisch an bestimmten Orten nach bootbaren Kernels und bietet diese im Bootmenü an. Anders als GRUB braucht rEFInd dafür keine Aktualisierung nach Kernelupdates. Tolles Ding!
 

marcwimmer1980

Erdapfel
Registriert
11.06.17
Beiträge
2
hi

es fuer nvme noch eine moeglichkeit ohne mit den kernelpatches rum zu machen (was mit jedem kernel update dann der fall waere):

folgende datei anlegen:

/etc/initramfs-tools/scripts/init-premount/setup_macbooknvme

#!/bin/sh
echo 106b 2003 > /sys/bus/pci/drivers/nvme/new_id

und in /etc/initramfs-tools/modules "nvme" hinzufuegen

danach
update-initramfs -u -k all
und der patch geht fuer alle kernels

im workflow waere es dann so:
1. von live cd installieren (haendisch in konsole modprobe nvme und das echo 106b 2003 > ... von oben machen)
2. dann booten - busy box kommt - nochmal das modprobe und echo machen dann exit und linux bootet
3. dann die aenderungen in /etc/initramfs uebernehmen

gruss,
marc
 
  • Like
Reaktionen: black-mac

marcwimmer1980

Erdapfel
Registriert
11.06.17
Beiträge
2
hat eigentlich jemand keyboard backlight, bluetooth und soundkarte wiedergabe laufen??
 

thrillseeker

Weißer Winterkalvill
Registriert
06.10.04
Beiträge
3.556
hat eigentlich jemand keyboard backlight, bluetooth und soundkarte wiedergabe laufen??
Soweit ich weiß, hat das bisher niemand geschafft. Ich habe das Projekt auch auf Eis gelegt, weil ich in erster Linie einen funktionierenden Rechner brauche, was mit der Kombination aus MacBook und GNU/Linux derzeit nicht gegeben ist. Stattdessen läuft hier nun ein macOS Sierra mit ganz viel OpenSource (sowohl native Anwendungen als auch solche, die unter Fink/X11 laufen). Via LittleSnitch habe ich außerdem zahlreiche Verbindungen geblockt, um Apples Datenhunger zu zügeln. Es ist unglaublich, wie oft sich ein "nacktes" macOS selbst bei typischen Offline-Anwendungen mit Apples Servern verbinden will.
 

Marius9696

Erdapfel
Registriert
26.10.17
Beiträge
3
Hallo!

Gut, dass ich hier mal etwas stöbere und schlau machen will..^^ Besteht das Problem auch schon für die 2012er Modelle? Bzw. ist es eigentlich möglich, das Mac OS komplett zu entfernen und nur Linux installiert zu haben?
 

thrillseeker

Weißer Winterkalvill
Registriert
06.10.04
Beiträge
3.556

Hallo, Marius!

Besteht das Problem auch schon für die 2012er Modelle?

Soweit ich weiß, besteht das Problem für alle MacBooks und MacBook Pros mit USB-C-Port.

Bzw. ist es eigentlich möglich, das Mac OS komplett zu entfernen und nur Linux installiert zu haben?

Das ist grundsätzlich bei allen Rechnern möglich. Bei den betroffenen MacBooks besteht trotzdem das Problem, dass Hardwarekomponenten erst nach Patchen des Linux-Kernels (Festplatte, Tastatur) bzw. überhaupt nicht (Audio) funktionieren.
 

Marius9696

Erdapfel
Registriert
26.10.17
Beiträge
3
Hi, ich danke dir für die schnelle Antwort! Einen Typ-C-Anschluss hat das 2012er noch nicht.

Meine Überlegung ist nämlich folgende:

Ich besitze halt ein 2012. Damit bin ich noch sehr zufrieden und für meine Bedürfnisse reicht das Macbook noch komplett aus, auch noch sicherlich weitere fünf Jahre. Aber ich gehe halt davon aus, dass die Systemupdates seitens Apples in den nächsten Jahren sicherlich nicht mehr unterstützt werden. Deshalb will ich mich zum Thame Linux auf dem Macbook mal etwas schlau machen und duchlesen. Allerdings konnte ich bisher im Netz noch nichts zu dem Thema finden, nur Linux installiert zu haben. Ich finde lediglich informationen zum Thema Dualboot. Sorry, dass ich hier vllt etwas vom Thema abschweife.
 

thrillseeker

Weißer Winterkalvill
Registriert
06.10.04
Beiträge
3.556
Sag' mal, 2012er MacBook? Das ist doch noch das Modell mit klassischen USB-Ports, Thunderbolt, LAN-Buchse und SD-Card-Slot, oder? Darauf lässt sich ein GNU/Linux problemlos installieren -- entweder als zweites Betriebssystem neben macOS oder auch als einziges Betriebssystem. Beide Optionen sind möglich und es gibt gute Anleitungen im Netz. Einfach mal googeln.

Die in diesem Thema diskutierten Probleme betreffen lediglich die neuen MacBooks und MacBook Pros mit USB-C-Ports, die ab 2015 auf den Markt kamen.
 
  • Like
Reaktionen: Marius9696

Marius9696

Erdapfel
Registriert
26.10.17
Beiträge
3
Ja, genau das MacBook ist es.^^ Gut, dann muss ich mich bei Ubuntu mal durchforsten. Hatte bisher nur Windows und Linux laufen. Auf einem Mac habe ich es bisher nie versucht. Danke dir!