Como configurar dual boot NixOS com Mac OS X em um MacBook (U)EFI?

Como configurar dual boot NixOS com Mac OS X em um MacBook (U)EFI?

Não consegui encontrar nenhuma descrição de configuração de inicialização dupla deNixOSe Mac OS X em um MacBook (U)EFI. Estou disposto a experimentar, mas gostaria de saber pelo menos se o que vou tentar ésupostopara funcionar, e que haverá uma chance de não ter que reinstalar o OS X posteriormente.

Alguém pode me dizer os passos principais ou fornecer um link para uma página que descreva o procedimento?

O que me confunde em particular é que oSeção de instalação UEFIdo manual do NixOS diz que preciso fazer uma partição de sistema EFI que será montada em/boot; no entanto, meu disco já possui uma partição de sistema EFI como primeira partição e temo que possa haver conflitos se eu permitir que o Mac OS e o NixOS o modifiquem. De acordo com a Wikipédia,

Em computadores Macintosh com arquitetura Apple-Intel, a partição EFI fica inicialmente em branco e não é usada para inicialização. No entanto, a partição EFI é usada como área de teste para atualizações de firmware; especificamente, ele coloca um utilitário flash de firmware (binário EFI) e um arquivo de dados (FD – "Dispositivo de Firmware") no diretório EFI/APPLE/FIRMWARE que é então executado ao reinicializar o sistema no modo "firmware flash". Se excluído, o sistema ainda inicializará e o gerenciador de inicialização ainda permitirá que os usuários escolham se desejam iniciar uma partição do Boot Camp ou o Mac OS X padrão, mas as atualizações de firmware falharão.

Imagino que isso signifique que se eu usar a mesma partição de sistema EFI para NixOS, ela poderá ser modificada se eu fizer uma atualização de firmware da Apple. Também não está claro o que acontecerá se eu criar duas partições de sistema EFI. Por exemplo, existe uma opção de configuração do NixOS boot.loader.efi.efiSysMountPoint(onde a partição do sistema EFI é montada) com o valor padrão "/boot", mas como saberá qual montar?

PS Como gerenciador de boot eu estava planejando usarrEFInd, mas qualquer sugestão alternativa é bem-vinda.

Responder1

Esta é uma versão atualizada da minha resposta inicial, deve funcionar para NixOS 15.09. Ele contém pequenas modificações em comparação com a versão inicial que usei para instalar o NixOS 14.04 com a ajuda denix-devlista de discussão.

Configuração inicial

  1. MacBook 5.1 (2008) com Mac OS 10.9 e disco rígido particionado da seguinte forma:

    a) Partição de sistema EFI de 200 MB denominada "EFI".

    b) Duas partições usadas pelo Mac OS (10.9).

    c) Duas partições ext4 vazias denominadas "nixos" e "home", e uma partição Linux Swap denominada "swap".

    Usei as seguintes ferramentas:

    Aqui está minha tabela de partições impressa 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. Conexão de Internet Ethernet por cabo.

  3. Uma unidade USB formatada como FAT com MBR e rotulada como NIXOS_ISO, com uma cópia (arrastada e solta) do conteúdo da imagem ISO de 64 bits do NixOS 15.09 (Live CD ou Minimal).

    • A etiqueta da unidade USBdeveser NIXOS_ISO(tentei FLASHuma vez, não funcionou).

    • Parece que as imagens ISO do NixOS 15.09 não podem ser montadas no Mac OS. Caso a imagem não possa ser montada, basta extrair seu conteúdo. Eu poderia extrair o conteúdo da imagem ISO comKekaarquivador de arquivos.

Instalação

  1. Inicialize a partir da unidade USB mantendo pressionada a Alt/Optiontecla ao reiniciar e selecionando o USBInicialização EFI. Faça login como “root” (sem senha). Certifique-se de que a conexão com a Internet esteja funcionando. É necessária conexão com a Internet para a instalação.

  2. Executar

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

    nixpkgs.config.allowUnfree = true;
    

    no gerado/mnt/etc/nixos/configuration.nixarquivo.

  4. Executar

    nixos-install
    
  5. Reinício:

    reboot
    

Inicializando

(Esta foi minha experiência com 14.04.)

Após a reinicialização, o computador inicializou no NixOS. Reiniciei novamente, desta vez segurando a Alt/Optionchave. O menu de inicialização mostrou dois itens “EFI Boot” de aparência idêntica. Acontece que um deles é Mac OS e o outro é NixOS. (Estranho - antes daquele com Mac OS receber o nome da partição do Mac OS.) Ok.

Montei e inspecionei o conteúdo da partição do sistema EFI por curiosidade:

§ 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

Tudo lá, mas/EFI/MAÇÃe seu conteúdo foi criado pela instalação do NixOS.

Tornando o Mac OS padrão novamente

(Esta foi minha experiência com 14.04.)

Para tornar o Mac OS padrão novamente e tornar o item correspondente no Optionmenu de inicialização -key com o nome da partição do Mac OS, bastava ir paraPreferências do Sistema... > Disco de Inicializaçãono Mac OS e selecione a partição com Mac OS. Estranhamente, foi necessário inserir a senha de administrador duas vezes e a partição ainda não foi mostrada como selecionada, mas por outro lado funcionou.

Outras instruções

  • Para ver sempregomabootmenu, basta boot.loader.gummiboot.timeoutconfigurarconfiguração.nix.

  • Para configurar corretamente meunVidiaplaca gráfica, acabei usando o código abertonovomotorista:

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

    Não tenho queixas sobre isso. Se eu usar o proprietário "nvidia", os consoles de texto não funcionarão.

    Atualização para NixOS 16.09. Observei que na minha máquina com NixOS 16.09 a opção services.xserver.videoDriversnão é necessária emconfiguração.nixpara que tudo funcione bem, e que na verdade degrada visivelmente o desempenho gráfico de acordo com alguns testes que fiz comglmark2Referência OpenGL. Também observei que a seleção "nvidia"quebra o modo gráfico, mas deixa os consoles de texto, ao contrário do que observei com o Nix OS 14.04. Tudo isso me parece um pouco estranho, mas foi o que observei, então removi essa opção do meuconfiguração.nix.

  • Para carregar omaçãmódulo (para o sensor de movimento repentino, por exemplo) foi-me sugerido adicionar o seguinte aoconfiguração.nix:

    boot.kernelModules = [ "applesmc" ];
    

Observações e observações

O único "problema" com o NixOS no meu MacBook que observei até agora é que executando o NixOS meu laptop geralmente fica de 5 a 10 ° C mais quente do que no Mac OS 10.9. Este pode ser um problema comum paraLinux em um Mac.

Links para instruções de instalação alternativas

Responder2

Algumas dicas adicionais:

Se quiser que a luz de fundo funcione e evitar que o laptop seja reiniciado espontaneamente enquanto a tampa estiver fechada, você pode usar algo como o seguinte no seu 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
  '';

Dependendo da versão do seu MacBook, pode ser necessário ajustar os comandos acima, portanto, não copie e cole cegamente.

Responder3

Existem algumas instruções ligeiramente atualizadas no branch master do repositório:instalando-uefi.xml

informação relacionada