Wie konfiguriere ich Dual Boot NixOS mit Mac OS X auf einem (U) EFI MacBook?

19

Ich konnte keine Beschreibung für die Konfiguration des Dualboots von NixOS und Mac OS X auf einem (U) EFI MacBook finden. Ich bin zu experimentieren bereit, aber ich möchte zumindest wissen , dass das, was ich werde versuchen wird , sollte an der Arbeit, und dass es eine Chance sein, nicht O X danach neu installieren.

Kann mir jemand bitte die Hauptschritte erklären oder einen Link zu einer Seite geben, die die Prozedur beschreibt?

Was mich besonders verwirrt ist, dass der UEFI-Installationsabschnitt des NixOS-Handbuchs besagt, dass ich eine EFI-Systempartition erstellen muss, die bei / boot eingehängt wird. Auf meiner Festplatte ist jedoch bereits eine EFI-Systempartition als erste Partition vorhanden, und ich befürchte, dass es zu Konflikten kommen kann, wenn ich sowohl Mac OS als auch NixOS erlaube, diese zu ändern. Laut Wikipedia ,

Auf Macintosh-Computern mit Apple-Intel-Architektur ist die EFI-Partition anfangs leer und wird nicht zum Booten verwendet. Die EFI-Partition wird jedoch als Staging-Bereich für Firmware-Updates verwendet. Insbesondere werden ein Firmware-Flash-Dienstprogramm (EFI-Binärdatei) und eine Datendatei (FD - "Firmware Device") im Verzeichnis EFI / APPLE / FIRMWARE abgelegt, die dann beim Neustart des Systems im Modus "Flash-Firmware" ausgeführt werden. Nach dem Löschen wird das System weiterhin gestartet, und der Start-Manager ermöglicht Benutzern weiterhin, auszuwählen, ob eine Boot Camp-Partition oder das Standard-Mac OS X gestartet werden soll. Firmware-Updates schlagen jedoch fehl.

Ich stelle mir vor, dass dies bedeutet, dass wenn ich dieselbe EFI-Systempartition für NixOS verwende, diese möglicherweise geändert wird, wenn ich ein Apple-Firmware-Update vornehme. Es ist auch nicht klar, was passieren wird, wenn ich zwei EFI-Systempartitionen erstelle. Beispielsweise gibt es eine NixOS-Konfigurationsoption boot.loader.efi.efiSysMountPoint(wo die EFI-Systempartition gemountet ist) mit dem Standardwert "/boot", aber woher weiß sie, welche gemountet werden muss?

PS Als Bootmanager hatte ich vor, rEFInd zu verwenden , aber jeder alternative Vorschlag ist willkommen.

Alexey
quelle

Antworten:

16

Dies ist eine aktualisierte Version meiner ersten Antwort. Sie sollte für NixOS 15.09 funktionieren. Es enthält geringfügige Änderungen gegenüber der ursprünglichen Version, mit der ich NixOS 14.04 mithilfe der Mailing-Liste von nix-dev installiert habe .

Ersteinrichtung

  1. MacBook 5,1 (2008) mit Mac OS 10.9 und wie folgt partitionierter Festplatte:

    a) 200 MB EFI-Systempartition mit der Bezeichnung "EFI".

    b) Zwei von Mac OS (10.9) verwendete Partitionen.

    c) Zwei leere ext4-Partitionen mit den Bezeichnungen "nixos" und "home" sowie eine Linux-Swap-Partition mit der Bezeichnung "swap".

    Ich habe folgende Werkzeuge benutzt:

    • GPT fdisk (unter Mac OS),

    • mkfs.ext4 (unter NixOS auf einem bootfähigen USB-Laufwerk),

    • mkswap.

    Hier ist meine Partitionstabelle, wie sie gedruckt wurde von gdisk:

    Number  Start (sector)    End (sector)  Size       Code  Name
       1              40          409639   200.0 MiB   EF00  EFI System Partition
       2          409640       104603575   49.7 GiB    AF00  Untitled
       3       104865720       261418767   74.7 GiB    AF00  Untitled
       4       261680912       287071535   12.1 GiB    8302  home
       5       287071536       307888927   9.9 GiB     8300  nixos
       7       307888928       312581774   2.2 GiB     8200  swap
    
  2. Kabel Ethernet Internetverbindung.

  3. Ein USB-Laufwerk, das als FAT mit MBR formatiert und NIXOS_ISOmit einer Kopie (Drag & Drop) des Inhalts des 64-Bit-ISO-Images von NixOS 15.09 (Live-CD oder Minimal) gekennzeichnet ist.

    • Das Etikett des USB-Laufwerks muss sein NIXOS_ISO(ich habe es FLASHeinmal versucht , es hat nicht funktioniert).

    • Es scheint, dass NixOS 15.09 ISO-Images unter Mac OS nicht gemountet werden können. Wenn das Image nicht bereitgestellt werden kann, genügt es, den Inhalt zu extrahieren. Ich konnte den Inhalt des ISO-Images mit Keka File Archiver extrahieren .

Installation

  1. Starten Sie vom USB-Laufwerk, indem Sie Alt/Optionbeim Neustart die Taste gedrückt halten und den USB- EFI-Start auswählen . Loggen Sie sich als "root" ein (ohne Passwort). Stellen Sie sicher, dass die Internetverbindung funktioniert. Für die Installation ist eine Internetverbindung erforderlich.

  2. Ausführen

    swapon /dev/disk/by-label/swap
    mount /dev/disk/by-label/nixos /mnt
    mkdir /mnt/boot
    mkdir /mnt/home
    mount /dev/disk/by-label/EFI  /mnt/boot
    mount /dev/disk/by-label/home /mnt/home
    nixos-generate-config --root /mnt
    
  3. Hinzufügen

    nixpkgs.config.allowUnfree = true;
    

    in der generierten Datei /mnt/etc/nixos/configuration.nix .

  4. Ausführen

    nixos-install
    
  5. Neustart:

    reboot
    

Booten

( Dies war meine Erfahrung mit 14.04. )

Nach dem Neustart wurde der Computer in NixOS gestartet. Ich startete erneut und hielt diesmal den Alt/OptionSchlüssel. Das Startmenü zeigte zwei identisch aussehende "EFI-Start" -Einträge. Es stellte sich heraus, dass einer von ihnen Mac OS und der andere NixOS ist. (Seltsam - bevor die mit Mac OS nach der Mac OS-Partition benannt wurde.) Ok.

Ich habe den Inhalt der EFI-Systempartition aus Neugier eingehängt und überprüft:

§ tree /Volumes/EFI/
.
├── EFI
│   ├── APPLE
│   │   ├── EXTENSIONS
│   │   │   └── Firmware.scap
│   │   └── FIRMWARE
│   │       └── MB51_007D_03B_LOCKED.scap
│   ├── Boot
│   │   └── BOOTX64.EFI
│   ├── gummiboot
│   │   └── gummibootx64.efi
│   └── nixos
│       ├── 5683z247xmsrh4lyr2hgpxwlb9gg5wyl-linux-3.12.20-bzImage.efi
│       └── mmjxbf6vwp5mwb384yfd6c8vkhd19gx8-initrd-initrd.efi
└── loader
    ├── entries
    │   └── nixos-generation-1.conf
    └── loader.conf

Alles andere als / EFI / APPLE und sein Inhalt wurde von der NixOS-Installation erstellt.

Mac OS wieder zum Standard machen

( Dies war meine Erfahrung mit 14.04. )

Um Mac OS wieder zum Standard zu machen und das entsprechende Element im Option-key-Startmenü zu machen, das nach der Mac OS-Partition benannt ist, genügte es, unter Mac OS unter Systemeinstellungen ...> Startdiskette die Partition unter Mac OS auszuwählen. Seltsamerweise musste das Administratorkennwort zweimal eingegeben werden, und die Partition wurde immer noch nicht als ausgewählt angezeigt, ansonsten funktionierte sie jedoch.

Andere Anweisungen

  • Um immer das Gummiboot- Menü zu sehen, genügt es, boot.loader.gummiboot.timeoutin configuration.nix zu setzen .

  • Um meine nVidia- Grafikkarte richtig zu konfigurieren, habe ich den Open-Source- Nouveau- Treiber verwendet:

    services.xserver.videoDrivers = [ "nouveau" ];
    

    Ich habe keine Beschwerden darüber. Wenn ich "nvidia"stattdessen das proprietäre verwende, funktionieren Textkonsolen nicht.

    Update für NixOS 16.09 . Ich habe festgestellt, dass auf meinem Computer mit NixOS 16.09 die Option services.xserver.videoDriversin configuration.nix nicht benötigt wird , damit alles einwandfrei funktioniert. Tatsächlich verschlechtert sie die Grafikleistung nach einigen Tests, die ich mit dem glmark2 OpenGL-Benchmark durchgeführt habe, merklich . Ich habe auch festgestellt, dass das Auswählen den "nvidia"Grafikmodus unterbricht, aber im Gegensatz zu dem, was ich unter Nix OS 14.04 beobachtet habe, Textkonsolen belässt. Das alles sieht für mich etwas seltsam aus, aber genau das habe ich beobachtet, also habe ich diese Option aus meiner configuration.nix entfernt .

  • Um das Applesmc- Modul (zum Beispiel für den plötzlichen Bewegungssensor) zu laden , wurde mir empfohlen, Folgendes zu configuration.nix hinzuzufügen :

    boot.kernelModules = [ "applesmc" ];
    

Bemerkungen und Beobachtungen

Das einzige "Problem" mit NixOS auf meinem MacBook, das ich bisher beobachtet habe, ist, dass unter NixOS mein Laptop normalerweise 5-10 ° C heißer wird als unter Mac OS 10.9. Dies könnte ein für Linux auf einem Mac übliches Problem sein .

Links zu alternativen Installationsanweisungen

Alexey
quelle
Danke @Alexey für die nette Zusammenfassung! Ich habe nur einen Zweifel. Es ist nicht eindeutig, ob Sie die bereits vorhandene (von Apple erstellte) EFI-Partition verwendet haben oder ob Sie eine zusätzliche Partition erstellt haben. Ich habe letzteres versucht, aber die Installation schlägt fehl mit "... Dateisystem ist kein gültiges EFI". Ich vermute, ich muss nur die EFI-Partition des Mac verwenden. Bestätigen Sie? Vielen Dank!
Alfredo Di Napoli
Alfredo, du hast recht, ich habe nicht erklärt, wie ich zum anfänglichen Setup gekommen bin. Ich hatte bereits eine Apple EFI System Partition, auf der meines Erachtens alle Computer wie meine vorinstalliert sind. Es wird mich jedoch wundern, wenn es darauf ankommt, wie diese Partition erstellt wird. Sind Sie sicher, dass Sie den richtigen Partitionscode festgelegt haben EF00? Ich habe gdisk verwendet , um meine neuen Partitionen zu verwalten. Ich habe eine Bearbeitung vorgenommen, um meine Partitionstabelle anzuzeigen.
Alexey
Hallo @Alexey, danke für die Antwort. In der Zwischenzeit war ich mutig genug, die vorinstallierte EFI-Partition einfach wiederzuverwenden, wie wir anscheinend vorgehen sollten. Es ist wahrscheinlich möglich, zwei Partitionen zu erstellen (und ich habe in der Tat EF00 für die von mir erstellte Partition verwendet), aber schließlich funktionierte die Wiederverwendung von vorinstalliertem Apple. Ich schreibe gerade von NixOS aus :)
Alfredo Di Napoli
Ich glaube, ich habe irgendwo gelesen, dass es nicht empfohlen oder irgendwie nicht unterstützt wird, mehr als eine EFI-Systempartition zu haben.
Alexey
Viel Glück beim Debuggen von NixOS auf dem MacBook :). Wenn Sie keine SSD haben und nicht wissen, wie Sie den Sensor für plötzliche Bewegungen konfigurieren sollen, lassen Sie es mich bitte wissen. (Ich habe meiner Antwort gerade eine Bemerkung dazu hinzugefügt.) Ich habe anscheinend auch Probleme mit der Konfiguration der CPU-Frequenz: Selbst mit powersaveGovernor wird es ohne ersichtlichen Grund ziemlich heiß.
Alexey
2

Einige zusätzliche Tipps:

Wenn Sie möchten, dass die Hintergrundbeleuchtung funktioniert und Ihr Laptop bei geschlossenem Deckel nicht spontan weiterläuft, können Sie Folgendes für Folgendes verwenden configuration.nix:

  # Enable the backlight control on rMBP 
  # Disable USB-based wakeup
  # see: https://wiki.archlinux.org/index.php/MacBookPro11,x
  powerManagement.powerUpCommands = ''
    if [[ "$(cat /sys/class/dmi/id/product_name)" == "MacBookPro11,3" ]]; then
      ${pkgs.pciutils}/bin/setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0

      if cat /proc/acpi/wakeup | grep XHC1 | grep -q enabled; then
        echo XHC1 > /proc/acpi/wakeup
      fi
    fi
  '';

Abhängig von Ihrer MacBook-Version müssen Sie möglicherweise die obigen Befehle anpassen. Kopieren und Einfügen Sie sie daher nicht blind.

Charles
quelle
1

Es gibt einige leicht aktualisierte Anweisungen im Hauptzweig des Repositorys: installation-uefi.xml

Damien Cassou
quelle
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
DanteTheEgregore