¿Cómo configurar NixOS de arranque dual con Mac OS X en una MacBook (U)EFI?

¿Cómo configurar NixOS de arranque dual con Mac OS X en una MacBook (U)EFI?

No pude encontrar ninguna descripción sobre la configuración del arranque dual deNixOSy Mac OS X en una MacBook (U)EFI. Estoy dispuesto a experimentar, pero me gustaría saber al menos que lo que intentaré essupuestopara funcionar, y que habrá una posibilidad de no tener que reinstalar OS X después.

¿Alguien puede decirme los pasos principales o darme un enlace a una página que describa el procedimiento?

Lo que me confunde en particular es que elSección de instalación UEFIdel manual de NixOS dice que necesito crear una partición del sistema EFI que se montará en/boot; sin embargo, mi disco ya tiene una partición del sistema EFI como primera partición y me temo que puede haber conflictos si permito que tanto Mac OS como NixOS la modifiquen. Según Wikipedia,

En las computadoras Macintosh con arquitectura Apple-Intel, la partición EFI está inicialmente en blanco y no se usa para el arranque. Sin embargo, la partición EFI se utiliza como área de preparación para las actualizaciones de firmware; específicamente, coloca una utilidad flash de firmware (EFI binario) y un archivo de datos (FD – "Dispositivo de firmware") en el directorio EFI/APPLE/FIRMWARE que luego se ejecuta al reiniciar el sistema en modo "firmware flash". Si se elimina, el sistema seguirá arrancando y el administrador de arranque seguirá permitiendo a los usuarios elegir si desean iniciar una partición Boot Camp o el Mac OS X predeterminado, pero las actualizaciones de firmware fallarán.

Me imagino que esto significa que si uso la misma partición del sistema EFI para NixOS, es posible que se modifique si realizo una actualización del firmware de Apple. Tampoco está claro qué pasará si creo dos particiones del sistema EFI. Por ejemplo, hay una opción de configuración de NixOS boot.loader.efi.efiSysMountPoint(donde está montada la partición del sistema EFI) con el valor predeterminado "/boot", pero ¿cómo sabrá cuál montar?

PD: Como administrador de arranque estaba planeando usarreencontrar, pero cualquier sugerencia alternativa es bienvenida.

Respuesta1

Esta es una versión actualizada de mi respuesta inicial, debería funcionar para NixOS 15.09. Contiene modificaciones menores en comparación con la versión inicial que utilicé para instalar NixOS 14.04 con la ayuda denix-devlista de correo.

Configuración inicial

  1. MacBook 5,1 (2008) con Mac OS 10.9 y disco duro particionado de la siguiente manera:

    a) Partición del sistema EFI de 200 MB con la etiqueta "EFI".

    b) Dos particiones utilizadas por Mac OS (10.9).

    c) Dos particiones ext4 vacías etiquetadas "nixos" y "home", y una partición de intercambio de Linux etiquetada "swap".

    Utilicé las siguientes herramientas:

    Aquí está mi tabla de particiones impresa por 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. Conexión a Internet por cable Ethernet.

  3. Una unidad USB formateada como FAT con MBR y etiquetada NIXOS_ISO, con una copia (arrastrada y soltada) del contenido de la imagen ISO de 64 bits de NixOS 15.09 (Live CD o Minimal).

    • La etiqueta de la unidad USB.debeser NIXOS_ISO(lo intenté FLASHuna vez, no funcionó).

    • Parece que las imágenes ISO de NixOS 15.09 no se pueden montar en Mac OS. Si la imagen no se puede montar, basta con extraer su contenido. Podría extraer el contenido de la imagen ISO conKekaarchivador de archivos.

Instalación

  1. Inicie desde la unidad USB manteniendo presionada la Alt/Optiontecla al reiniciar y seleccionando el USBArranque EFI. Inicie sesión como "root" (sin contraseña). Asegúrese de que la conexión a Internet esté funcionando. Es necesaria conexión a Internet para la instalación.

  2. Ejecutar

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

    nixpkgs.config.allowUnfree = true;
    

    en lo generado/mnt/etc/nixos/configuration.nixarchivo.

  4. Ejecutar

    nixos-install
    
  5. Reiniciar:

    reboot
    

Arranque

(Esta fue mi experiencia con el 14.04.)

Después de reiniciar, la computadora arrancó en NixOS. Reinicié nuevamente, manteniendo esta vez la Alt/Optiontecla. El menú de inicio mostraba dos elementos de "Arranque EFI" de aspecto idéntico. Resultó que uno de ellos es Mac OS y el otro es NixOS. (Extraño: antes el que tenía Mac OS llevaba el nombre de la partición de Mac OS). Ok.

Monté e inspeccioné el contenido de la partición del sistema EFI por curiosidad:

§ 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

Todo ahí pero/EFI/MANZANAy su contenido ha sido creado mediante la instalación de NixOS.

Hacer que Mac OS vuelva a ser el predeterminado

(Esta fue mi experiencia con el 14.04.)

Para hacer que Mac OS vuelva a ser el predeterminado y hacer que el elemento correspondiente en elOption menú de inicio de la tecla - tenga el nombre de la partición de Mac OS, fue suficiente ir aPreferencias del sistema... > Disco de inicioen Mac OS y seleccione la partición con Mac OS. Curiosamente, fue necesario ingresar la contraseña de administrador dos veces y la partición aún no se mostraba como seleccionada, pero por lo demás funcionó.

Otras instrucciones

  • para ver siemprebota de gomamenú, basta con configurarboot.loader.gummiboot.timeout configurarconfiguración.nix.

  • Para configurar correctamente minVidiatarjeta gráfica, terminé usando el código abiertonuevoconductor:

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

    No tengo ninguna queja al respecto. Si uso el propietario "nvidia", las consolas de texto no funcionan.

    Actualización para NixOS 16.09. Observé que en mi máquina con NixOS 16.09, la opciónservices.xserver.videoDrivers no es necesaria enconfiguración.nixpara que todo funcione bien, y que de hecho degrada notablemente el rendimiento gráfico según unas pruebas que hice conglmark2Punto de referencia OpenGL. También observé que seleccionar"nvidia" se interrumpe el modo gráfico pero se dejan las consolas de texto, al contrario de lo que observé con Nix OS 14.04. Todo esto me parece un poco extraño, pero esto es lo que observé, así que eliminé esta opción de miconfiguración.nix.

  • Para cargar elmanzanasmcmódulo (para el sensor de movimiento repentino, por ejemplo) me sugirieron agregar lo siguiente aconfiguración.nix:

    boot.kernelModules = [ "applesmc" ];
    

Comentarios y observaciones

El único "problema" con NixOS en mi MacBook que he observado hasta ahora es que al ejecutar NixOS, mi computadora portátil generalmente se calienta entre 5 y 10 °C más que con Mac OS 10.9. Este podría ser un problema habitual paraLinux en una Mac.

Enlaces a instrucciones de instalación alternativas

Respuesta2

Algunos consejos adicionales:

Si desea que la luz de fondo funcione y evitar que su computadora portátil se reanude espontáneamente mientras la tapa está cerrada, puede usar algo como lo siguiente en su 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
  '';

Dependiendo de la versión de su MacBook, es posible que necesite modificar los comandos anteriores, así que no copie y pegue ciegamente.

Respuesta3

Hay algunas instrucciones ligeramente actualizadas en la rama maestra del repositorio:instalación-uefi.xml

información relacionada