(U)EFI MacBook で NixOS と Mac OS X のデュアルブートを設定するにはどうすればよいでしょうか?

(U)EFI MacBook で NixOS と Mac OS X のデュアルブートを設定するにはどうすればよいでしょうか?

デュアルブートの設定に関する説明は見つかりませんでしたニクスOS(U)EFI MacBookでMac OS Xを試してみるつもりですが、少なくとも私が試すのは以下のことだと知っておきたいと思っています。想定動作し、その後 OS X を再インストールする必要がなくなる可能性があります。

主な手順を教えていただけますか、または手順を説明しているページへのリンクを教えていただけますか?

私が特に困惑しているのは、UEFI インストール セクションNixOS のマニュアルには、/boot にマウントされる EFI システム パーティションを作成する必要があると書かれていますが、ディスクにはすでに最初のパーティションとして EFI システム パーティションがあり、Mac OS と NixOS の両方で変更できるようにすると競合が発生するのではないかと心配しています。 Wikipediaによると

Apple-Intel アーキテクチャの Macintosh コンピュータでは、EFI パーティションは最初は空で、起動には使用されません。ただし、EFI パーティションはファームウェア更新のステージング領域として使用されます。具体的には、ファームウェア フラッシュ ユーティリティ (EFI バイナリ) とデータ ファイル (FD - 「ファームウェア デバイス」) を EFI/APPLE/FIRMWARE ディレクトリに配置し、システムを「フラッシュ ファームウェア」モードで再起動するときに実行されます。削除しても、システムは起動し、ブート マネージャーでは、Boot Camp パーティションを起動するか、デフォルトの Mac OS X を起動するかをユーザーが選択できますが、ファームウェア更新は失敗します。

これは、NixOS に同じ EFI システム パーティションを使用すると、Apple ファームウェアのアップデートを行うと変更される可能性があることを意味します。また、2 つの EFI システム パーティションを作成した場合に何が起こるかは不明です。たとえば、boot.loader.efi.efiSysMountPointデフォルト値を持つ NixOS 構成オプション (EFI システム パーティションがマウントされる場所)があります"/boot"が、どちらをマウントするかをどのようにして判断するのでしょうか。

PS ブートマネージャとして使う予定だった再検索ただし、代替案の提案があれば歓迎します。

答え1

これは私の最初の回答の更新版であり、NixOS 15.09で動作するはずです。これは、私がNixOS 14.04をインストールするために使用した最初のバージョンと比較して、いくつかの助けを借りてマイナーな変更が含まれています。nix-devメーリングリスト。

初期設定

  1. MacBook 5,1 (2008)、Mac OS 10.9、ハードドライブのパーティションが次のように設定されています。

    a) 「EFI」というラベルの付いた 200 MB の EFI システム パーティション。

    b) Mac OS (10.9) で使用される 2 つのパーティション。

    c) 「nixos」と「home」というラベルの付いた 2 つの空の ext4 パーティションと、「swap」というラベルの付いた Linux Swap パーティション。

    使用したツールは以下のとおりです。

    • GPT fdisk(Mac OSの場合)

    • 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. FAT/MBR としてフォーマットされNIXOS_ISO、 というラベルが付いた USB ドライブ。NixOS 15.09 64 ビット ISO イメージ (Live CD または Minimal) のコンテンツのコピー (ドラッグ アンド ドロップ) が含まれています。

    • USBドライブのラベルしなければならないNIXOS_ISO(一度試してみましたが、FLASHうまくいきませんでした)。

    • NixOS 15.09 ISOイメージはMac OSではマウントできないようです。イメージがマウントできない場合は、その内容を抽出するだけで十分です。私はISOイメージの内容を抽出することができました。ケカファイルアーカイバ。

インストール

  1. 再起動時にキーを押したままにしてUSBドライブから起動しAlt/Option、USBを選択します。EFIブート. 「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。ブート メニューには、見た目が同じ 2 つの「EFI ブート」項目が表示されました。そのうちの 1 つは Mac OS で、もう 1 つは NixOS であることがわかりました。(奇妙なことに、Mac OS の項目が Mac OS パーティションにちなんで命名される前は) OK。

好奇心から、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 OSを再びデフォルトにする

これは 14.04 での私の経験です。

Mac OSを再びデフォルトにし、-keyブートメニューの対応する項目をOptionMac OSパーティションにちなんで名付けるには、システム環境設定... > 起動ディスクMac OS でパーティションを選択します。不思議なことに、管理者パスワードを 2 回入力する必要があり、パーティションが選択された状態で表示されませんでしたが、それ以外は機能しました。

その他の指示

  • いつも見るためにガミブートboot.loader.gummiboot.timeoutメニューを設定するだけで十分です構成.nix

  • 適切に設定するにはNVIDIAグラフィックカードはオープンソースのものを使いましたヌーボー運転者:

    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℃熱くなることです。これは、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

リポジトリのマスター ブランチには、若干更新された手順がいくつかあります。インストール-uefi.xml

関連情報