Làm cách nào để định cấu hình NixOS khởi động kép với Mac OS X trên MacBook EFI (U)?


19

Tôi không thể tìm thấy bất kỳ mô tả nào về việc định cấu hình khởi động kép của NixOS và Mac OS X trên MacBook (U) EFI. Tôi sẵn sàng để thử nghiệm, nhưng tôi muốn biết ít nhất rằng những gì tôi sẽ cố gắng được cho là để làm việc, và rằng sẽ có một cơ hội để không phải cài đặt lại hệ điều hành X sau đó.

Ai đó có thể cho tôi biết các bước chính hoặc cung cấp một liên kết đến một trang mô tả thủ tục không?

Điều làm tôi bối rối đặc biệt là phần cài đặt UEFI trong hướng dẫn sử dụng NixOS nói rằng tôi cần tạo Phân vùng hệ thống EFI sẽ được gắn tại / boot; tuy nhiên, đĩa của tôi đã có Phân vùng hệ thống EFI làm phân vùng đầu tiên và tôi sợ có thể có xung đột nếu tôi cho phép cả Mac OS và NixOS sửa đổi nó. Theo Wikipedia ,

Trên các máy tính Macintosh của Apple Kiến trúc Intel, phân vùng EFI ban đầu trống và không được sử dụng để khởi động. Tuy nhiên, phân vùng EFI được sử dụng làm khu vực tổ chức để cập nhật chương trình cơ sở; cụ thể, nó đặt một tiện ích flash firmware (nhị phân EFI) và tệp dữ liệu (FD - "Thiết bị phần sụn") trong thư mục EFI / APPLE / FIRMware sau đó chạy khi khởi động lại hệ thống ở chế độ "flash firmware". Nếu bị xóa, hệ thống sẽ vẫn khởi động và trình quản lý khởi động vẫn sẽ cho phép người dùng chọn bắt đầu phân vùng Boot Camp hoặc Mac OS X mặc định, nhưng các bản cập nhật firmware sẽ thất bại.

Tôi tưởng tượng điều này có nghĩa là nếu tôi sử dụng cùng phân vùng hệ thống EFI cho NixOS, nó có thể bị sửa đổi nếu tôi thực hiện cập nhật chương trình cơ sở của Apple. Cũng không rõ điều gì sẽ xảy ra nếu tôi tạo hai Phân vùng hệ thống EFI. Ví dụ: có một tùy chọn cấu hình NixOS boot.loader.efi.efiSysMountPoint(trong đó Phân vùng hệ thống EFI được gắn kết) với giá trị mặc định "/boot", nhưng làm thế nào để biết cái nào sẽ được gắn?

PS Là người quản lý khởi động, tôi đã dự định sử dụng rEFInd , nhưng mọi đề xuất thay thế đều được chào đón.

Câu trả lời:


16

Đây là phiên bản cập nhật của câu trả lời ban đầu của tôi, nó sẽ hoạt động cho NixOS 15.09. Nó chứa các sửa đổi nhỏ so với phiên bản ban đầu mà tôi đã sử dụng để cài đặt NixOS 14.04 với một số trợ giúp từ danh sách gửi thư nix-dev .

Thiết lập ban đầu

  1. MacBook 5,1 (2008) với Mac OS 10.9 và ổ cứng được phân vùng như sau:

    a) Phân vùng hệ thống EFI 200 MB có nhãn "EFI".

    b) Hai phân vùng được sử dụng bởi Mac OS (10.9).

    c) Hai phân vùng ext4 trống có nhãn "nixos" và "home" và phân vùng Linux Swap có nhãn "hoán đổi".

    Tôi đã sử dụng các công cụ sau:

    • GPT fdisk (từ Mac OS),

    • mkfs.ext4 (từ dưới NixOS trên ổ USB có thể khởi động),

    • mkswap.

    Đây là bảng phân vùng của tôi như được in bởi 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. Cáp Ethernet kết nối Internet.

  3. Một ổ USB được định dạng là FAT với MBR và được gắn nhãn NIXOS_ISO, với một bản sao (được kéo và thả) nội dung của hình ảnh ISO 64 bit NixOS 15,09 (Live CD hoặc Minimal).

    • Nhãn của ổ USB phảiNIXOS_ISO(tôi đã thử FLASHmột lần, nó không hoạt động).

    • Có vẻ như hình ảnh ISO NixOS 15.09 không thể được gắn trong Mac OS. Nếu hình ảnh không thể được gắn kết, nó là đủ để trích xuất nội dung của nó. Tôi có thể trích xuất nội dung của ảnh ISO bằng trình lưu trữ tệp Keka .

Cài đặt

  1. Khởi động từ ổ USB bằng cách giữ Alt/Optionphím khi khởi động lại và bằng cách chọn USB EFI Boot . Đăng nhập bằng "root" (không có mật khẩu). Đảm bảo kết nối Internet đang hoạt động. Kết nối Internet là cần thiết để cài đặt.

  2. Hành hình

    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. Thêm vào

    nixpkgs.config.allowUnfree = true;
    

    trong tệp /mnt/etc/nixos/configuration.nix được tạo .

  4. Hành hình

    nixos-install
    
  5. Khởi động lại:

    reboot
    

Khởi động

( Đây là kinh nghiệm của tôi với 14.04. )

Sau khi khởi động lại, máy tính đã khởi động vào NixOS. Tôi khởi động lại một lần nữa, giữ Alt/Optionchìa khóa lần này. Menu khởi động hiển thị hai mục "EFI Boot" giống hệt nhau. Hóa ra một trong số họ là Mac OS, và cái còn lại là NixOS. (Lạ - trước cái có Mac OS được đặt tên theo phân vùng Mac OS.) Ok.

Tôi đã gắn kết và kiểm tra nội dung của phân vùng hệ thống EFI vì tò mò:

§ 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

Mọi thứ ở đó nhưng / EFI / APPLE và nội dung của nó đã được tạo bởi cài đặt NixOS.

Làm cho Mac OS mặc định trở lại

( Đây là kinh nghiệm của tôi với 14.04. )

Để làm cho Mac OS mặc định trở lại và để tạo mục tương ứng trong Optionmenu khởi động -key được đặt tên theo phân vùng Mac OS, bạn đã đi đến Tùy chọn hệ thống ...> Khởi động đĩa trong Mac OS và chọn phân vùng với Mac OS. Thật kỳ lạ, nó yêu cầu nhập mật khẩu quản trị viên hai lần và phân vùng vẫn không được hiển thị như đã chọn, nhưng nếu không thì nó vẫn hoạt động.

Hướng dẫn khác

  • Để luôn thấy menu gummiboot , nó là đủ để thiết lập boot.loader.gummiboot.timeouttrong configure.nix .

  • Để cấu hình đúng card đồ họa nVidia của tôi , tôi đã kết thúc bằng trình điều khiển nouveau nguồn mở :

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

    Tôi không có khiếu nại về nó. Nếu tôi sử dụng độc quyền "nvidia"thay thế, bảng điều khiển văn bản không hoạt động.

    Cập nhật cho NixOS 16.09 . Tôi đã quan sát thấy rằng trên máy của tôi có NixOS 16.09, tùy chọn services.xserver.videoDriverskhông cần thiết trong cấu hình. Mọi thứ đều hoạt động tốt và trên thực tế, nó làm giảm đáng kể hiệu năng đồ họa theo một vài thử nghiệm tôi đã làm với điểm chuẩn OpenGL của glmark2 . Tôi cũng quan sát thấy rằng việc chọn "nvidia"phá vỡ chế độ đồ họa nhưng để lại các bảng điều khiển văn bản, trái với những gì tôi quan sát được với Nix OS 14.04. Tất cả điều này có vẻ hơi lạ đối với tôi, nhưng đây là những gì tôi quan sát được, vì vậy tôi đã xóa tùy chọn này khỏi cấu hình của mình .

  • Để tải mô-đun applesmc (ví dụ cho cảm biến chuyển động đột ngột), tôi đã đề nghị thêm phần sau vào cấu hình.nix :

    boot.kernelModules = [ "applesmc" ];
    

Nhận xét và quan sát

"Vấn đề" duy nhất với NixOS trên MacBook mà tôi đã quan sát được cho đến nay là việc chạy NixOS máy tính xách tay của tôi thường nóng hơn 5-10 ° C so với Mac OS 10.9. Đây có thể là một vấn đề thông thường đối với Linux trên máy Mac .

Liên kết đến hướng dẫn cài đặt thay thế


Cảm ơn @Alexey vì bài viết hay! Tôi chỉ có một nghi ngờ. Thật mơ hồ nếu bạn kết thúc bằng cách sử dụng phân vùng EFI có sẵn (do Apple tạo) hoặc nếu bạn đã tạo một phân vùng bổ sung. Tôi đã thử cái thứ hai, nhưng cài đặt không thành công với "... hệ thống tệp không phải là EFI hợp lệ", vì vậy tôi nghi ngờ tôi chỉ cần sử dụng phân vùng EFI của Mac. Bạn có xác nhận không? Cảm ơn!
Alfredo Di Napoli

Alfredo, bạn nói đúng, tôi đã không giải thích làm thế nào tôi có được thiết lập ban đầu. Tôi đã có Phân vùng hệ thống Apple EFI, mà tôi tin rằng, tất cả các máy tính như của tôi đã được cài đặt sẵn. Tôi sẽ ngạc nhiên, tuy nhiên, nếu vấn đề làm thế nào phân vùng đó được tạo ra. Bạn có chắc chắn đã đặt mã phân vùng chính xác EF00? Tôi đã sử dụng gdisk để quản lý các phân vùng mới của mình. Tôi đã thực hiện một chỉnh sửa để hiển thị bảng phân vùng của tôi.
Alexey

Xin chào @Alexey, cảm ơn bạn đã trả lời. Trong khi đó, tôi đã đủ táo bạo để chỉ sử dụng lại phân vùng EFI được cài đặt sẵn, rõ ràng, là cách chúng ta nên tiến hành. Có thể tạo hai phân vùng (và tôi thực sự đã sử dụng EF00 cho cái tôi đã tạo), nhưng cuối cùng, việc sử dụng lại Apple đã cài đặt sẵn chỉ hoạt động. Tôi đang gõ từ NixOS khi chúng tôi nói chuyện :)
Alfredo Di Napoli

Tôi tin rằng tôi đã đọc ở đâu đó rằng nó không được khuyến nghị hoặc bằng cách nào đó không được hỗ trợ để có nhiều hơn một phân vùng hệ thống EFI.
Alexey

Chúc may mắn với gỡ lỗi NixOS trên MacBook :). Nếu bạn không có SSD và tìm hiểu cách định cấu hình cảm biến chuyển động đột ngột, vui lòng cho tôi biết. (Tôi vừa thêm một nhận xét về vấn đề này để trả lời của tôi.) Tôi cũng dường như gặp khó khăn với cấu hình tần số CPU: ngay cả với powersavethống đốc nó được khá nóng không có lý do rõ ràng.
Alexey

2

Một số lời khuyên bổ sung:

Nếu bạn muốn làm cho đèn nền của bạn hoạt động và ngăn máy tính xách tay của bạn tự động hoạt động trở lại trong khi nắp được đóng lại, bạn có thể sử dụng một cái gì đó như sau trong 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
  '';

Tùy thuộc vào phiên bản MacBook của bạn, bạn có thể cần phải điều chỉnh các lệnh trên, vì vậy vui lòng không sao chép và dán một cách mù quáng.


1

Có một số hướng dẫn được cập nhật một chút trong nhánh chính của kho lưu trữ: install-uefi.xml


Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
DanteTheEgregore
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.