Bagaimana cara mengkonfigurasi dual boot NixOS dengan Mac OS X pada (U) EFI MacBook?

19

Saya tidak dapat menemukan deskripsi konfigurasi dual boot NixOS dan Mac OS X pada (U) EFI MacBook. Saya bersedia bereksperimen, tetapi saya ingin tahu setidaknya bahwa apa yang akan saya coba seharusnya berhasil, dan bahwa ada kesempatan untuk tidak harus menginstal ulang OS X sesudahnya.

Adakah yang bisa memberi tahu saya langkah-langkah utama atau berikan tautan ke halaman yang menjelaskan prosedurnya?

Yang membingungkan saya khususnya adalah bahwa bagian instalasi UEFI dari manual NixOS mengatakan bahwa saya perlu membuat Partisi Sistem EFI yang akan dipasang pada / boot; Namun, disk saya sudah memiliki Partisi Sistem EFI sebagai partisi pertama, dan saya khawatir akan ada konflik jika saya mengizinkan Mac OS dan NixOS untuk memodifikasinya. Menurut Wikipedia ,

Pada komputer Macintosh arsitektur Apple-Intel, partisi EFI awalnya kosong dan tidak digunakan untuk booting. Namun, partisi EFI digunakan sebagai area pementasan untuk pembaruan firmware; khusus, ia menempatkan firmware flash utility (binary EFI) dan file data (FD - "Firmware Device") di direktori EFI / APPLE / FIRMWARE yang kemudian dijalankan ketika me-reboot sistem dalam mode "flash firmware". Jika dihapus, sistem akan tetap boot, dan boot manager masih akan memungkinkan pengguna untuk memilih apakah akan memulai partisi Boot Camp atau Mac OS X default, tetapi pembaruan firmware akan gagal.

Saya membayangkan ini berarti bahwa jika saya menggunakan Partisi Sistem EFI yang sama untuk NixOS, mungkin akan dimodifikasi jika saya membuat pembaruan firmware Apple. Juga tidak jelas apa yang akan terjadi jika saya membuat dua Partisi Sistem EFI. Misalnya, ada opsi konfigurasi NixOS boot.loader.efi.efiSysMountPoint(tempat Partisi Sistem EFI dipasang) dengan nilai default "/boot", tetapi bagaimana ia tahu yang mana yang akan dipasang?

PS Sebagai manajer boot, saya berencana untuk menggunakan rEFInd , tetapi semua saran alternatif diterima.

Alexey
sumber

Jawaban:

16

Ini adalah versi terbaru dari jawaban awal saya, seharusnya bisa digunakan untuk NixOS 15.09. Ini berisi modifikasi kecil dibandingkan dengan versi awal yang saya gunakan untuk menginstal NixOS 14.04 dengan bantuan dari milis nix-dev .

Pengaturan awal

  1. MacBook 5,1 (2008) dengan Mac OS 10.9 dan hard drive dipartisi sebagai berikut:

    a) Partisi Sistem EFI 200MB berlabel "EFI".

    b) Dua partisi yang digunakan oleh Mac OS (10.9).

    c) Dua partisi ext4 kosong berlabel "nixos" dan "home", dan partisi Linux Swap berlabel "swap".

    Saya menggunakan alat-alat berikut:

    • GPT fdisk (dari bawah Mac OS),

    • mkfs.ext4 (dari bawah NixOS pada drive USB yang dapat di-boot),

    • mkswap.

    Ini adalah tabel partisi saya yang dicetak oleh 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. Koneksi Internet kabel Ethernet.

  3. Drive USB yang diformat sebagai FAT dengan MBR dan dilabeli NIXOS_ISO, dengan salinan (diseret dan dilepaskan) dari konten gambar ISO NixOS 15.09 64-bit (Live CD atau Minimal).

    • Label dari drive USB harus bisa NIXOS_ISO(saya mencoba dengan FLASHsekali, itu tidak bekerja).

    • Tampaknya gambar ISO NixOS 15.09 tidak dapat dipasang di Mac OS. Jika gambar tidak dapat dipasang, itu cukup untuk mengekstrak isinya. Saya bisa mengekstrak isi gambar ISO dengan pengarsipan file Keka .

Instalasi

  1. Boot dari drive USB dengan menahan Alt/Optiontombol saat me-reboot dan dengan memilih Boot EFI USB . Masuk sebagai "root" (tanpa kata sandi). Pastikan koneksi Internet berfungsi. Koneksi internet diperlukan untuk instalasi.

  2. Menjalankan

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

    nixpkgs.config.allowUnfree = true;
    

    dalam file /mnt/etc/nixos/configuration.nix yang dihasilkan .

  4. Menjalankan

    nixos-install
    
  5. Mulai ulang:

    reboot
    

Booting

( Ini adalah pengalaman saya dengan 14,04. )

Setelah reboot, komputer boot ke NixOS. Saya reboot lagi, memegang Alt/Optionkunci kali ini. Menu boot menunjukkan dua item "EFI Boot" yang tampak identik. Ternyata salah satunya adalah Mac OS, dan yang lainnya adalah NixOS. (Aneh - sebelum yang menggunakan Mac OS diberi nama setelah partisi Mac OS.) Oke.

Saya memasang dan memeriksa isi partisi sistem EFI karena penasaran:

§ 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

Semuanya ada kecuali / EFI / APPLE dan kontennya telah dibuat oleh instalasi NixOS.

Membuat Mac OS default lagi

( Ini adalah pengalaman saya dengan 14,04. )

Untuk membuat Mac OS default lagi dan untuk membuat item yang sesuai di Optionmenu boot -key dinamai partisi Mac OS, itu sudah cukup untuk pergi ke System Preferences ...> Startup Disk di bawah Mac OS dan pilih partisi dengan Mac OS. Anehnya, itu perlu memasukkan kata sandi admin dua kali, dan partisi itu masih tidak ditampilkan seperti yang dipilih, tetapi jika tidak berhasil.

Instruksi lainnya

  • Untuk selalu melihat menu gummiboot , cukup dengan mengatur boot.loader.gummiboot.timeoutdi configuration.nix .

  • Untuk mengkonfigurasi dengan benar kartu grafis nVidia saya , saya akhirnya menggunakan driver nouveau open-source :

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

    Saya tidak punya keluhan tentang itu. Jika saya menggunakan hak milik "nvidia"sebagai gantinya, konsol teks tidak berfungsi.

    Pembaruan untuk NixOS 16.09 . Saya mengamati bahwa pada komputer saya dengan NixOS 16.09, opsi services.xserver.videoDriversini tidak diperlukan dalam konfigurasi.nix agar semuanya berfungsi dengan baik, dan bahwa pada kenyataannya itu terlihat menurunkan kinerja grafis menurut beberapa tes yang saya lakukan dengan benchmark OpenGL glmark2 . Saya juga mengamati bahwa memilih "nvidia"mode istirahat grafis tetapi meninggalkan konsol teks, bertentangan dengan apa yang saya amati dengan Nix OS 14.04. Ini semua terlihat agak aneh bagi saya, tapi ini yang saya amati, jadi saya menghapus opsi ini dari configuration.nix saya .

  • Untuk memuat modul applesmc (untuk sensor gerak tiba-tiba, misalnya) disarankan kepada saya untuk menambahkan yang berikut ini ke configuration.nix :

    boot.kernelModules = [ "applesmc" ];
    

Keterangan dan pengamatan

Satu-satunya "masalah" dengan NixOS di MacBook saya yang telah saya amati sejauh ini adalah menjalankan NixOS laptop saya biasanya mendapatkan 5-10 ° C lebih panas daripada di bawah Mac OS 10.9. Ini mungkin masalah biasa untuk Linux di Mac .

Tautan ke petunjuk pemasangan alternatif

Alexey
sumber
Terima kasih @Alexey untuk penulisan yang bagus! Saya hanya punya satu keraguan. Ini ambigu jika Anda akhirnya menggunakan partisi EFI yang sudah ada sebelumnya (dibuat oleh Apple) atau jika Anda membuat partisi tambahan. Saya mencoba yang terakhir, tetapi instalasi gagal dengan "... sistem file bukan EFI yang valid", jadi saya curiga saya hanya perlu menggunakan partisi EFI Mac. Apakah Anda mengonfirmasi? Terima kasih!
Alfredo Di Napoli
Alfredo, Anda benar, saya tidak menjelaskan bagaimana saya mendapatkan pengaturan awal. Saya sudah memiliki Partisi Sistem EFI Apple, yang, saya percaya, semua komputer seperti komputer saya telah diinstal sebelumnya. Saya akan terkejut, bagaimanapun, jika itu penting bagaimana partisi itu dibuat. Apakah Anda yakin telah mengatur kode partisi yang benar EF00? Saya menggunakan gdisk untuk mengelola partisi baru saya. Saya telah melakukan edit untuk menampilkan tabel partisi saya.
Alexey
Hai @ Alexey, terima kasih atas jawabannya. Sementara itu saya cukup berani untuk menggunakan kembali partisi EFI yang sudah diinstal sebelumnya, yang tampaknya adalah cara kita melanjutkan. Mungkin saja untuk membuat dua partisi (dan saya memang menggunakan EF00 untuk partisi yang saya buat), tetapi akhirnya menggunakan kembali Apple yang sudah diinstal sebelumnya hanya berfungsi. Saya mengetik dari NixOS seperti yang kita bicarakan :)
Alfredo Di Napoli
Saya percaya saya telah membaca di suatu tempat yang tidak direkomendasikan atau entah bagaimana tidak didukung untuk memiliki lebih dari satu Partisi Sistem EFI.
Alexey
Semoga berhasil dengan debugging NixOS di MacBook :). Jika Anda tidak memiliki SSD dan mencari cara mengonfigurasi sensor gerak tiba-tiba, beri tahu saya. (Saya baru saja menambahkan komentar tentang hal ini pada jawaban saya.) Saya juga tampaknya mengalami kesulitan dalam mengkonfigurasi frekuensi CPU: bahkan dengan powersavegubernur menjadi sangat panas tanpa alasan yang jelas.
Alexey
2

Beberapa tips tambahan:

Jika Anda ingin lampu latar bekerja dan mencegah laptop Anda kembali secara spontan saat tutupnya ditutup, Anda dapat menggunakan sesuatu seperti berikut ini di 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
  '';

Bergantung pada versi MacBook Anda, Anda mungkin perlu mengubah perintah di atas, jadi tolong jangan salin dan tempel secara membabi buta.

Charles
sumber
1

Ada beberapa instruksi yang sedikit diperbarui di cabang master dari repositori: install-uefi.xml

Damien Cassou
sumber
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
DanteTheEgregore