18

Я не смог найти описание настройки двойной загрузки NixOS и Mac OS X на (U)EFI MacBook. Я желаю поэкспериментировать, но я хотел бы знать, по крайней мере, что то, что я попробую, должно работать, и что будет шанс не переустанавливать OS X впоследствии.

Кто-нибудь может сказать мне, пожалуйста, основные шаги или дать ссылку на страницу, которая описывает процедуру?

В частности, меня смущает то, что в разделе установки UEFI руководства NixOS сказано, что мне нужно создать системный раздел EFI, который будет смонтирован в /boot; однако на моем диске уже есть системный раздел EFI в качестве первого раздела, и я боюсь, что могут возникнуть конфликты, если я позволю и Mac OS, и NixOS изменить его. Согласно Википедии,

На компьютерах Macintosh с архитектурой Apple – Intel раздел EFI изначально пуст и не используется для загрузки. Тем не менее, раздел EFI используется в качестве промежуточной области для обновления прошивки; в частности, он помещает утилиту прошивки прошивки (двоичный файл EFI) и файл данных (FD - "Устройство прошивки") в каталог EFI/APPLE/FIRMWARE, который затем запускается при перезагрузке системы в режиме прошивки прошивки. При удалении система все равно будет загружаться, и диспетчер загрузки будет по-прежнему позволять пользователям выбирать, запускать ли раздел Boot Camp или Mac OS X по умолчанию, но обновления прошивки не будут выполнены.

Я предполагаю, что это означает, что если я использую тот же системный раздел EFI для NixOS, он может измениться, если я сделаю обновление прошивки Apple. Также не ясно, что произойдет, если я создам два системных раздела EFI. Например, есть параметр конфигурации NixOS boot.loader.efi.efiSysMountPoint (где смонтирован системный раздел EFI) со значением по умолчанию "/boot" , но как он узнает, какой из них монтировать?

PS Как менеджер загрузки я планировал использовать rEFInd, но любые альтернативные предложения приветствуются.

3 ответа3

16

Это обновленная версия моего первоначального ответа, она должна работать для NixOS 15.09. Он содержит незначительные изменения по сравнению с первоначальной версией, которую я использовал для установки NixOS 14.04 с некоторой помощью из списка рассылки nix-dev .

Начальная настройка

  1. MacBook 5,1 (2008) с Mac OS 10.9 и жестким диском разделен следующим образом:

    а) Системный раздел EFI 200 МБ с надписью "EFI".

    б) Два раздела, используемые Mac OS (10.9).

    c) Два пустых раздела ext4 с пометкой "nixos" и "home" и раздел Linux Swap с пометкой "swap".

    Я использовал следующие инструменты:

    • GPT fdisk (из-под Mac OS),

    • mkfs.ext4 (из-под NixOS на загрузочном USB-накопителе),

    • mkswap .

    Вот моя таблица разделов, напечатанная 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. Кабель Ethernet Интернет-соединение.

  3. USB-накопитель, отформатированный как FAT с MBR и помеченный NIXOS_ISO , с копией (перетаскиваемой) содержимого 64-битного ISO-образа NixOS 15.09 (Live CD или Minimal).

    • Метка USB-накопителя должна быть NIXOS_ISO (я пробовал один раз с FLASH , это не сработало).

    • Кажется, что образы NixOS 15.09 ISO нельзя смонтировать под Mac OS. Если изображение не может быть смонтировано, достаточно извлечь его содержимое. Я мог извлечь содержимое ISO-образа с помощью файлового архиватора Keka .

Монтаж

  1. Загрузитесь с USB-накопителя, удерживая нажатой клавишу Alt/Option при перезагрузке и выбрав USB EFI Boot. Войдите в систему как "root" (без пароля). Убедитесь, что интернет-соединение работает. Для установки необходимо подключение к интернету.

  2. казнить

    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. добавлять

    nixpkgs.config.allowUnfree = true;
    

    в сгенерированном файле /mnt/etc/nixos/configuration.nix.

  4. казнить

    nixos-install
    
  5. Перезагружать:

    reboot
    

Загрузка

(Это был мой опыт с 14.04.)

После перезагрузки компьютер загрузился в NixOS. Я снова перезагрузился, удерживая на этот раз клавишу Alt/Option . Меню загрузки показывало два одинаково выглядящих элемента "EFI Boot". Оказалось, что один из них - Mac OS, а другой - NixOS. (Странно - до того, как тот с Mac OS был назван в честь раздела Mac OS.) Хорошо.

Из любопытства я смонтировал и осмотрел содержимое системного раздела EFI:

§ 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

Все, кроме /EFI/APPLE и его содержимого, было создано установкой NixOS.

Восстановление Mac OS по умолчанию

(Это был мой опыт с 14.04.)

Чтобы снова установить Mac OS по умолчанию и сделать соответствующий пункт в меню загрузки с помощью клавиши Option, названного в честь раздела Mac OS, достаточно было перейти в « Системные настройки»> «Загрузочный диск» в Mac OS и выбрать раздел с Mac OS. , Как ни странно, требовалось дважды ввести пароль администратора, и раздел все равно не отображался как выбранный, но в остальном он работал.

Другие инструкции

  • Чтобы всегда видеть меню gummiboot , достаточно установить boot.loader.gummiboot.timeout в файле configuration.nix.

  • Чтобы правильно настроить мою видеокарту nVidia , я использовал драйвер nouveau с открытым исходным кодом:

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

    У меня нет претензий по этому поводу. Если я вместо этого использую проприетарную "nvidia" , текстовые консоли не работают.

    Обновление для NixOS 16.09. Я заметил, что на моей машине с NixOS 16.09 опция services.xserver.videoDrivers не нужна в файле configuration.nix, чтобы все работало хорошо, и что на самом деле он заметно ухудшает графическую производительность в соответствии с несколькими тестами, которые я проводил с glmark2 OpenGL тест. Я также заметил, что выбор "nvidia" нарушает графический режим, но оставляет текстовые консоли, в отличие от того, что я наблюдал в Nix OS 14.04. Все это выглядит немного странно для меня, но это то, что я заметил, поэтому я удалил эту опцию из своего файла configuration.nix.

  • Для загрузки модуля applemc (например, для датчика внезапного движения) мне было предложено добавить в файл configuration.nix следующее:

    boot.kernelModules = [ "applesmc" ];
    

Замечания и наблюдения

Единственная "проблема" с NixOS на моем MacBook, которую я наблюдал до сих пор, заключается в том, что при работе с NixOS мой ноутбук обычно нагревается на 5-10 ° C больше, чем под Mac OS 10.9. Это может быть обычной проблемой для Linux на Mac.

Ссылки на альтернативные инструкции по установке

2

Некоторые дополнительные советы:

Если вы хотите, чтобы подсветка работала и предотвращала самопроизвольное возобновление работы ноутбука, когда крышка закрыта, вы можете использовать что-то вроде следующего в вашем 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
  '';

В зависимости от версии вашего MacBook, вам может потребоваться настроить вышеуказанные команды, поэтому, пожалуйста, не копируйте и не вставляйте их вслепую.

1

В ветке master хранилища есть несколько обновленных инструкций: installation-uefi.xml

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .