如何在 (U)EFI MacBook 上設定雙啟動 NixOS 和 Mac OS X?

如何在 (U)EFI MacBook 上設定雙啟動 NixOS 和 Mac OS X?

我找不到任何配置雙啟動的描述尼克斯作業系統和 (U)EFI MacBook 上的 Mac OS X。我願意嘗試,但我想至少知道我會嘗試的是應該工作,並且之後將有機會不必重新安裝 OS X。

有人可以告訴我主要步驟或提供描述該過程的頁面的連結嗎?

讓我特別困惑的是UEFI安裝部分NixOS 手冊說我需要建立一個將安裝在 /boot 的 EFI 系統分割區;但是,我的磁碟已經有一個 EFI 系統分割區作為第一個分割區,如果我允許 Mac OS 和 NixOS 修改它,恐怕會出現衝突。 根據維基百科,

在 Apple-Intel 架構的 Macintosh 電腦上,EFI 分割區最初是空白的,不用於啟動。但是,EFI 分區用作韌體更新的暫存區域;具體來說,它將韌體閃存實用程式(EFI 二進位檔案)和資料檔案(FD –「韌體裝置」)放置在目錄EFI/APPLE/FIRMWARE 中,然後在「閃存韌體」模式下重新啟動系統時運行該實用程式。如果刪除,系統仍會啟動,啟動管理器仍允許使用者選擇啟動 Boot Camp 分割區還是預設的 Mac OS X,但韌體更新將失敗。

我想這意味著如果我對 NixOS 使用相同的 EFI 系統分割區,如果我進行 Apple 韌體更新,它可能會被修改。也不清楚如果我創建兩個 EFI 系統分割區會發生什麼事。例如,有一個 NixOS 設定選項boot.loader.efi.efiSysMountPoint(掛載 EFI 系統分割區)的預設值是"/boot",但它如何知道要掛載哪一個呢?

PS 作為啟動管理器,我打算使用酶標儀,但歡迎任何替代建議。

答案1

這是我最初答案的更新版本,它應該適用於 NixOS 15.09。與我在以下人員的幫助下安裝 NixOS 14.04 的初始版本相比,它包含較小的修改尼克斯開發者郵件清單。

初始設定

  1. 配備 Mac OS 10.9 的 MacBook 5,1 (2008) 和硬碟分區如下:

    a) 標示「EFI」的 200MB EFI 系統分割區。

    b) Mac OS (10.9) 所使用的兩個分割區。

    c) 兩個空的 ext4 分割區,標示為“nixos”和“home”,以及一個標記為“swap”的 Linux 交換分割區。

    我使用了以下工具:

    • GPT 磁碟(在 Mac 作業系統下),

    • mkfs.ext4(來自可啟動 USB 隨身碟上的 NixOS),

    • 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. 有線乙太網路網路連線。

  3. 格式化為具有 MBR 且標記為 FAT 的 USB 驅動器NIXOS_ISO,其中包含 NixOS 15.09 64 位元 ISO 映像(Live CD 或 Minimal)內容的副本(拖放)。

    • USB 隨身碟的標籤必須NIXOS_ISO(我嘗試過FLASH一次,但沒有成功)。

    • NixOS 15.09 ISO 映像似乎無法在 Mac 作業系統下掛載。如果無法安裝映像,只需提取其內容即可。我可以使用以下命令提取 ISO 映像的內容克卡文件歸檔器。

安裝

  1. 透過在重新啟動時按住Alt/Option按鍵並選擇 USB從 USB 驅動器啟動電噴啟動。以「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/蘋果其內容是透過 NixOS 安裝創建的。

再次將 Mac 作業系統設定為預設值

這是我在 14.04 的經驗。

要再次使 Mac OS 預設並讓Option-key 啟動選單中的對應項目以 Mac OS 分區命名,只需轉到系統偏好設定... > 啟動磁碟在 Mac OS 下,選擇 Mac OS 所在的分割區。奇怪的是,它需要輸入兩次管理員密碼,分區仍然沒有顯示為選中狀態,但除此之外它可以工作。

其他說明

  • 總是能看到橡膠靴boot.loader.gummiboot.timeout選單裡設定就夠了配置.nix

  • 正確配置我的英偉達顯示卡,我最終使用了開源新風格司機:

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

    我對此沒有任何抱怨。如果我使用專有的"nvidia",文字控制台將無法運作。

    NixOS 16.09 更新。我觀察到,在我的 NixOS 16.09 機器上,services.xserver.videoDrivers不需要該選項配置.nix為了讓一切都能正常運作,事實上,根據我所做的一些測試,它明顯降低了圖形效能格馬克2OpenGL 基準測試。我還觀察到,選擇"nvidia"會破壞圖形模式,但會留下文字控制台,這與我在 Nix OS 14.04 中觀察到的情況相反。這一切對我來說看起來有點奇怪,但這就是我觀察到的,所以我從我的清單中刪除了這個選項配置.nix

  • 要載入蘋果公司模組(例如,突然運動感應器)建議我將以下內容添加到配置.nix:

    boot.kernelModules = [ "applesmc" ];
    

評論和意見

到目前為止,我在 MacBook 上觀察到的 NixOS 的唯一「問題」是,運行 NixOS 的筆記型電腦通常比 Mac OS 10.9 下的溫度高 5-10 °C。這可能是常見問題Mac 上的 Linux

替代安裝說明的鏈接

答案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

儲存庫的 master 分支中有一些稍微更新的說明:安裝-uefi.xml

相關內容