(U)EFI MacBookでMac OS XとデュアルブートNixOSを構成する方法


19

(U)EFI MacBook でNixOSとMac OS Xのデュアルブートを構成することに関する説明が見つかりませんでした。私は実験したいと思っていますが、少なくとも私が試みることはうまくいくはずであり、OS Xを後で再インストールする必要がないことを知りたいです。

誰でもメインの手順を教えてくれたり、手順を説明するページへのリンクを教えてもらえますか?

特に私を混乱させるのは、NixOSマニュアルのUEFIインストールセクションに、/ bootにマウントされるEFIシステムパーティションを作成する必要があると書かれていることです。ただし、私のディスクにはすでに最初のパーティションとしてEFIシステムパーティションがあり、Mac OSとNixOSの両方で変更できるようにすると競合が発生する可能性があります。 ウィキペディアよると

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ブートマネージャーとしてrEFIndを使用することを計画していましたが、他の提案を歓迎します。

回答:


16

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

初期設定

  1. 次のようにパーティション分割されたMac OS 10.9およびハードドライブを搭載したMacBook 5,1(2008):

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

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

    c)「nixos」および「home」というラベルの付いた2つの空のext4パーティション、および「swap」というラベルの付いたLinuxスワップパーティション。

    次のツールを使用しました。

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

    • USBドライブのラベルは次のとおりである必要ありますNIXOS_ISOFLASH一度試してみましたが、機能しませんでした)。

    • NixOS 15.09 ISOイメージはMac OSでマウントできないようです。イメージをマウントできない場合は、その内容を抽出するだけで十分です。Kekaファイルアーカイバを使用してISOイメージのコンテンツを抽出できました。

設置

  1. Alt/Option再起動時にキーを押し、USB EFI Bootを選択して、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ブート」アイテムが2つ表示されていました。それらの1つはMac OSであり、もう1つは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 / APPLEとそのコンテンツ以外のすべては、NixOSのインストールによって作成されています。

Mac OSをデフォルトに戻す

これは14.04での私の経験でした。

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

その他の指示

  • 常にgummibootメニューを表示するにはboot.loader.gummiboot.timeoutconfiguration.nix設定するだけで十分です。

  • nVidiaグラフィックカードを適切に構成するために、オープンソースのnouveauドライバーを使用することになりました。

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

    苦情はありません。"nvidia"代わりにプロプライエタリを使用すると、テキストコンソールが機能しません。

    NixOS 16.09のアップデート。NixOS 16.09を搭載したマシンでservices.xserver.videoDriversは、すべてが正常に機能するためにconfiguration.nixでオプションは不要であり、実際、glmark2 OpenGLベンチマークで行ったいくつかのテストによると、グラフィックパフォーマンスが著しく低下することがわかりました。また"nvidia"、Nix OS 14.04で見たものとは反対に、選択するとグラフィカルモードが壊れるが、テキストコンソールが残ることも観察しました。これは私には少し奇妙に見えますが、これは私が観察したことなので、このオプションをconfiguration.nixから削除しました。

  • applesmcモジュールをロードするために(たとえば、突然のモーションセンサー用)、以下をconfiguration.nixに追加することが提案されました:

    boot.kernelModules = [ "applesmc" ];
    

備考と観察

MacBookのNixOSでこれまでに確認した唯一の「問題」は、NixOSを実行するとラップトップが通常Mac OS 10.9よりも5〜10℃高温になることです。これは、Mac上のLinuxの通常の問題です。

別のインストール手順へのリンク

  • LinuxをMacBook Airにインストールします、2015年6月17日(Mac OSとのデュアルブート構成でMacBook AirにNixOSをインストールします)。

@Alexeyにすばらしい記事をありがとう!疑問が一つだけあります。既存のEFIパーティション(Appleによって作成された)を使用した場合、または追加のパーティションを作成した場合はあいまいです。後者を試してみましたが、「...ファイルシステムは有効なEFIではありません」でインストールが失敗するため、MacのEFIパーティションを使用する必要があると思われます。確認しますか?ありがとう!
アルフレド

Alfredo、あなたは正しいです、私はどのように私が初期セットアップを手に入れたかを説明しませんでした。私はすでにApple EFI System Partitionを持っていました。私のようなすべてのコンピューターにはプリインストールされていると思います。ただし、そのパーティションがどのように作成されるかが重要な場合、私は驚くでしょう。正しいパーティションコードを設定しましたEF00か?gdiskを使用 して、新しいパーティションを管理しました。編集してパーティションテーブルを表示しました。
アレクセイ14年

こんにちは@Alexey、返信ありがとう。それまでは、インストール済みのEFIパーティションを単純に再利用できるほど大胆でした。おそらく2つのパーティションを作成することは可能ですが(作成したパーティションには実際にEF00を使用しました)、最終的にはプリインストールされたAppleを再利用するだけで機能しました。私たちが話しているようにNixOSから入力しています:)
アルフレド

複数のEFIシステムパーティションを持つことは推奨されていないか、何らかの形でサポートされていないことをどこかで読んだと思います。
アレクセイ14年

MacBookでNixOSをデバッグしてください:)。SSDがなく、突然のモーションセンサーを構成する方法を見つけた場合は、教えてください。(このことについてのコメントを答えに追加しました。)CPU周波数の設定も難しいようですpowersave
アレクセイ14年

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のバージョンによっては、上記のコマンドを微調整する必要がある場合があるため、盲目的にコピーアンドペーストしないでください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.