Я не смог найти описания настройки двойной загрузкиNixOSи Mac OS X на (U)EFI MacBook. Я готов экспериментировать, но я хотел бы знать, по крайней мере, что то, что я попробую,предполагаемыйработать, и что будет шанс не переустанавливать OS X впоследствии.
Может ли кто-нибудь рассказать мне основные шаги или дать ссылку на страницу, описывающую процедуру?
Что меня особенно смущает, так это то, чтоРаздел установки UEFIв руководстве NixOS говорится, что мне нужно создать системный раздел EFI, который будет смонтирован в /boot; однако на моем диске уже есть системный раздел EFI в качестве первого раздела, и я боюсь, что могут возникнуть конфликты, если я разрешу и Mac OS, и NixOS изменять его. Согласно Википедии,
На компьютерах Macintosh с архитектурой Apple–Intel раздел EFI изначально пуст и не используется для загрузки. Однако раздел EFI используется в качестве промежуточной области для обновлений прошивки; в частности, он помещает утилиту прошивки (двоичный файл EFI) и файл данных (FD – «Firmware Device») в каталог EFI/APPLE/FIRMWARE, который затем запускается при перезагрузке системы в режиме «прошивки». Если удалить, система все равно будет загружаться, а менеджер загрузки все равно позволит пользователям выбирать, запускать ли раздел Boot Camp или Mac OS X по умолчанию, но обновления прошивки не будут выполнены.
Я полагаю, это означает, что если я использую тот же системный раздел EFI для NixOS, он может быть изменен, если я сделаю обновление прошивки Apple. Также неясно, что произойдет, если я создам два системных раздела EFI. Например, есть параметр конфигурации NixOS boot.loader.efi.efiSysMountPoint
(где монтируется системный раздел EFI) со значением по умолчанию "/boot"
, но как он узнает, какой из них монтировать?
P.S. В качестве менеджера загрузки я планировал использоватьпересмотреть, но любые альтернативные предложения приветствуются.
решение1
Это обновленная версия моего первоначального ответа, она должна работать для NixOS 15.09. Она содержит незначительные изменения по сравнению с первоначальной версией, которую я использовал для установки NixOS 14.04 с некоторой помощью отnix-devсписок рассылки.
Начальная настройка
MacBook 5,1 (2008) с Mac OS 10.9 и жестким диском, разбитым следующим образом:
а) Системный раздел EFI объемом 200 МБ с маркировкой «EFI».
б) Два раздела, используемые Mac OS (10.9).
в) Два пустых раздела ext4 с метками «nixos» и «home», а также раздел подкачки Linux с меткой «swap».
Я использовал следующие инструменты:
Вот моя таблица разделов, напечатанная
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
Кабельное Ethernet-подключение к Интернету.
USB-накопитель, отформатированный как FAT с MBR и помеченный как
NIXOS_ISO
, с копией (перетащенной) содержимого 64-битного ISO-образа NixOS 15.09 (Live CD или Minimal).Этикетка USB-накопителядолженбыть
NIXOS_ISO
(я пробовалFLASH
один раз, не получилось).Похоже, что образы NixOS 15.09 ISO не могут быть смонтированы под Mac OS. Если образ не может быть смонтирован, достаточно извлечь его содержимое. Я мог бы извлечь содержимое образа ISO с помощьюКекаархиватор файлов.
Монтаж
Загрузитесь с USB-накопителя, удерживая Alt/Optionклавишу при перезагрузке и выбрав USBЗагрузка EFI. Войдите как "root" (без пароля). Убедитесь, что подключение к Интернету работает. Для установки необходимо подключение к Интернету.
Выполнять
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
Добавлять
nixpkgs.config.allowUnfree = true;
в сгенерированном/mnt/etc/nixos/configuration.nixфайл.
Выполнять
nixos-install
Перезагрузить:
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
Все там, кроме/ЭФИ/ЯБЛОКОи его содержимое было создано установкой NixOS.
Снова делаем Mac OS по умолчанию
(Вот такой у меня был опыт с 14.04.)
Чтобы снова сделать Mac OS системой по умолчанию и сделать соответствующий пункт в Optionменю загрузки -key названным в честь раздела Mac OS, достаточно было зайти вСистемные настройки... > Загрузочный дискпод Mac OS и выберите раздел с Mac OS. Странно, но для этого потребовалось дважды ввести пароль администратора, и раздел все еще не был показан как выбранный, но в остальном это сработало.
Другие инструкции
Чтобы всегда видетьрезиновый сапогменю, достаточно установить
boot.loader.gummiboot.timeout
вконфигурация.nix.Чтобы правильно настроить мойnVidiaвидеокарту, я в итоге использовал версию с открытым исходным кодоммодернВодитель:services.xserver.videoDrivers = [ "nouveau" ];
У меня нет никаких жалоб на него. Если я использую фирменный"nvidia"
, текстовые консоли не работают.Обновление для NixOS 16.09. Я заметил, что на моей машине с NixOS 16.09 эта опция
services.xserver.videoDrivers
не нужна.конфигурация.nixчтобы все работало хорошо, и что на самом деле это заметно ухудшает графическую производительность, согласно нескольким тестам, которые я провел сglmark2OpenGL benchmark. Я также заметил, что выбор"nvidia"
прерывает графический режим, но оставляет текстовые консоли, в отличие от того, что я наблюдал с Nix OS 14.04. Все это выглядит немного странно для меня, но это то, что я наблюдал, поэтому я удалил эту опцию из своегоконфигурация.nix.Чтобы загрузитьapplesmcмодуль (например, для датчика внезапного движения) мне было предложено добавить следующееконфигурация.nix:
boot.kernelModules = [ "applesmc" ];
Замечания и наблюдения
Единственная "проблема" с NixOS на моем MacBook, которую я заметил до сих пор, заключается в том, что при работе NixOS мой ноутбук обычно нагревается на 5-10 °C больше, чем под Mac OS 10.9. Это может быть обычной проблемой дляLinux на Mac.
Ссылки на альтернативные инструкции по установке
- Установить Linux на MacBook Air, 17.06.2015 (Установка NixOS на MacBook Air в конфигурации с двойной загрузкой с Mac OS).
решение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 вам, возможно, придется подправить приведенные выше команды, поэтому, пожалуйста, не копируйте и не вставляйте их бездумно.
решение3
В основной ветке репозитория есть несколько слегка обновленных инструкций:установка-uefi.xml