Come configurare NixOS dual boot con Mac OS X su un (U) MacBook EFI?


19

Non sono riuscito a trovare alcuna descrizione della configurazione del doppio avvio di NixOS e Mac OS X su un (U) MacBook EFI. Sono disposto a sperimentare, ma vorrei sapere almeno che ciò che proverò dovrebbe funzionare e che ci sarà la possibilità di non dover reinstallare OS X in seguito.

Qualcuno può dirmi per favore i passaggi principali o fornire un collegamento a una pagina che descrive la procedura?

Ciò che mi confonde in particolare è che la sezione di installazione UEFI del manuale NixOS dice che devo creare una partizione di sistema EFI che verrà montata su / boot; tuttavia, il mio disco ha già una partizione di sistema EFI come prima partizione e temo che possano esserci conflitti se permetto a Mac OS e NixOS di modificarlo. Secondo Wikipedia ,

Sui computer Macintosh con architettura Apple – Intel, la partizione EFI è inizialmente vuota e non utilizzata per l'avvio. Tuttavia, la partizione EFI viene utilizzata come area di gestione temporanea per gli aggiornamenti del firmware; in particolare, inserisce un'utilità flash del firmware (binario EFI) e un file di dati (FD - "Firmware Device") nella directory EFI / APPLE / FIRMWARE che viene quindi eseguita al riavvio del sistema in modalità "flash firmware". Se cancellato, il sistema si avvierà comunque e il boot manager consentirà comunque agli utenti di scegliere se avviare una partizione Boot Camp o il Mac OS X predefinito, ma gli aggiornamenti del firmware falliranno.

Immagino che ciò significhi che se uso la stessa partizione di sistema EFI per NixOS, potrebbe essere modificato se eseguo un aggiornamento del firmware Apple. Inoltre, non è chiaro cosa accadrà se creo due partizioni di sistema EFI. Ad esempio, esiste un'opzione di configurazione NixOS boot.loader.efi.efiSysMountPoint(in cui è montata la partizione di sistema EFI) con il valore predefinito "/boot", ma come farà a sapere quale montare?

PS Come boot manager avevo intenzione di usare rEFInd , ma ogni suggerimento alternativo è il benvenuto.

Risposte:


16

Questa è una versione aggiornata della mia risposta iniziale, dovrebbe funzionare per NixOS 15.09. Contiene modifiche minori rispetto alla versione iniziale che ho usato per installare NixOS 14.04 con qualche aiuto dalla mailing list di nix-dev .

Configurazione iniziale

  1. MacBook 5,1 (2008) con Mac OS 10.9 e disco rigido partizionati come segue:

    a) 200 MB di partizione di sistema EFI etichettata "EFI".

    b) Due partizioni utilizzate da Mac OS (10.9).

    c) Due partizioni ext4 vuote etichettate "nixos" e "home" e una partizione Linux Swap etichettata "swap".

    Ho usato i seguenti strumenti:

    • Fdisk GPT (da sotto Mac OS),

    • mkfs.ext4 (da sotto NixOS su un'unità USB avviabile),

    • mkswap.

    Ecco la mia tabella delle partizioni stampata da 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. Connessione Internet via cavo Ethernet.

  3. Un'unità USB formattata come FAT con MBR ed etichettata NIXOS_ISO, con una copia (trascinata e rilasciata) del contenuto dell'immagine ISO 64.09 a 64 bit di NixOS (Live CD o Minimal).

    • L'etichetta dell'unità USB deve essere NIXOS_ISO(ho provato FLASHuna volta, non ha funzionato).

    • Sembra che le immagini ISO di NixOS 15.09 non possano essere montate su Mac OS. Se l'immagine non può essere montata, è sufficiente estrarne il contenuto. Potrei estrarre il contenuto dell'immagine ISO con l' archiviatore di file Keka .

Installazione

  1. Avviare dall'unità USB tenendo premuto il Alt/Optiontasto al riavvio e selezionando USB EFI Boot . Accedi come "root" (senza password). Assicurarsi che la connessione Internet funzioni. La connessione a Internet è necessaria per l'installazione.

  2. Eseguire

    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. Inserisci

    nixpkgs.config.allowUnfree = true;
    

    nel file /mnt/etc/nixos/configuration.nix generato .

  4. Eseguire

    nixos-install
    
  5. Reboot:

    reboot
    

Avvio

( Questa è stata la mia esperienza con 14.04. )

Dopo il riavvio, il computer si è avviato in NixOS. Ho riavviato di nuovo, tenendo questa volta la Alt/Optionchiave. Il menu di avvio mostrava due elementi "EFI Boot" identici. Si è scoperto che uno di questi è Mac OS e l'altro è NixOS. (Strano - prima che quello con Mac OS prendesse il nome dalla partizione Mac OS.) Ok.

Ho montato e ispezionato il contenuto della partizione di sistema EFI per curiosità:

§ 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

Tutto lì tranne / EFI / APPLE e il suo contenuto è stato creato dall'installazione di NixOS.

Ripristino delle impostazioni predefinite di Mac OS

( Questa è stata la mia esperienza con 14.04. )

Per ripristinare nuovamente l'impostazione predefinita di Mac OS e rendere l'elemento corrispondente nel Optionmenu di avvio -key che prende il nome dalla partizione Mac OS, è stato sufficiente accedere a Preferenze di Sistema ...> Disco di avvio in Mac OS e selezionare la partizione con Mac OS. Stranamente, è stato necessario inserire due volte la password dell'amministratore e la partizione non era ancora mostrata come selezionata, ma per il resto ha funzionato.

Altre istruzioni

  • Per vedere sempre il menu di gummiboot , è sufficiente impostare boot.loader.gummiboot.timeoutin configuration.nix .

  • Per configurare correttamente la mia scheda grafica nVidia , ho finito con il driver nouveau open-source :

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

    Non ho lamentele a riguardo. Se "nvidia"invece uso il proprietario , le console di testo non funzionano.

    Aggiornamento per NixOS 16.09 . Ho osservato che sulla mia macchina con NixOS 16.09, l'opzione configurationservices.xserver.videoDrivers non è necessaria per tutto per funzionare bene e che in effetti degrada notevolmente le prestazioni grafiche secondo alcuni test che ho fatto con il benchmark glmark2 OpenGL. Ho anche osservato che la selezione interrompe la modalità grafica ma lascia le console di testo, contrariamente a quanto osservato con Nix OS 14.04. Tutto questo mi sembra un po 'strano, ma questo è quello che ho osservato, quindi ho rimosso questa opzione dal mio configuration.nix ."nvidia"

  • Per caricare il modulo applemc (ad esempio per il sensore di movimento improvviso) mi è stato suggerito di aggiungere quanto segue a configuration.nix :

    boot.kernelModules = [ "applesmc" ];
    

Osservazioni e osservazioni

L'unico "problema" con NixOS sul mio MacBook che ho osservato finora è che con NixOS il mio laptop di solito diventa più caldo di 5-10 ° C rispetto a Mac OS 10.9. Questo potrebbe essere un solito problema per Linux su un Mac .

Collegamenti a istruzioni di installazione alternative


Grazie @Alexey per la bella recensione! Ho solo un dubbio. È ambiguo se hai finito per utilizzare la partizione EFI preesistente (creata da Apple) o se ne hai creata una aggiuntiva. Ho provato quest'ultimo, ma l'installazione non riesce con "... il file system non è un EFI valido", quindi sospetto di dover semplicemente utilizzare la partizione EFI del Mac. Confermi? Grazie!
Alfredo Di Napoli,

Alfredo, hai ragione, non ho spiegato come ho ottenuto la configurazione iniziale. Avevo già Apple EFI System Partition, che, credo, tutti i computer come il mio hanno preinstallato. Sarò sorpreso, tuttavia, se è importante come viene creata quella partizione. Sei sicuro di aver impostato il codice di partizione corretto EF00? Ho usato gdisk per gestire le mie nuove partizioni. Ho apportato una modifica per mostrare la mia tabella delle partizioni.
Alexey,

Ciao @Alexey, grazie per la risposta. Nel frattempo ero abbastanza coraggioso da riutilizzare semplicemente la partizione EFI preinstallata che, a quanto pare, è come dovremmo procedere. Probabilmente è possibile creare due partizioni (e ho effettivamente usato EF00 per quello che ho creato), ma alla fine riutilizzare Apple preinstallato ha funzionato. Sto scrivendo da NixOS mentre parliamo :)
Alfredo Di Napoli,

Credo di aver letto da qualche parte che non è consigliabile o in qualche modo non supportato avere più di una partizione di sistema EFI.
Alexey,

Buona fortuna con il debug di NixOS su MacBook :). Se non hai SSD e scopri come configurare il sensore di movimento improvviso, fammi sapere, per favore. (Ho appena aggiunto un'osservazione al riguardo alla mia risposta.) Sembra anche che abbia difficoltà a configurare la frequenza della CPU: anche con il powersaveregolatore diventa piuttosto caldo senza una ragione apparente.
Alexey,

2

Alcuni consigli aggiuntivi:

Se vuoi far funzionare la retroilluminazione e impedire al tuo laptop di riprendere spontaneamente mentre il coperchio è chiuso, puoi usare qualcosa come il seguente nel tuo 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
  '';

A seconda della versione del tuo MacBook, potresti dover modificare i comandi precedenti, quindi ti preghiamo di non copiare e incollare ciecamente.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.