web-dev-qa-db-ja.com

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

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

誰かが主な手順を教えてくれたり、手順を説明しているページへのリンクを教えたりできますか?

特に私を混乱させるのは、NixOSマニュアルの EFIインストールセクション が/ 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構成オプション"/boot"(EFIシステムパーティションがマウントされている場所)がありますが、どのオプションをマウントするかをどのようにして知るのですか?

追伸ブートマネージャーとして、私は rEFInd を使用することを計画していましたが、他の提案があれば歓迎します。

19
Alexey

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

初期設定

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

    a)「EFI」というラベルの付いた200MB 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. MBRでFATとしてフォーマットされ、NIXOS_ISOというラベルが付いたUSBドライブ。NixOS15.09 64ビットISOイメージ(ライブCDまたはミニマル)のコンテンツのコピー(ドラッグアンドドロップ)が付いています。

    • USBドライブのラベル must NIXOS_ISOである必要があります(FLASHで1回試しましたが、機能しませんでした)。

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

Installation

  1. を押してUSBドライブから起動します Alt/Option 再起動時およびUSB EFIブートを選択した場合のキー。 「root」としてログインします(パスワードなし)。インターネット接続が機能していることを確認します。インストールにはインターネット接続が必要です。

  2. Execute

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

    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/Apple以外のすべてとその内容は、NixOSのインストールによって作成されています。

Mac OSを再びデフォルトにする

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

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

その他の指示

  • gummibootメニューを常に表示するには、_configuration.nixboot.loader.gummiboot.timeoutを設定するだけで十分です。

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

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

    私はそれに不満はありません。代わりに独自の"nvidia"を使用すると、テキストコンソールが機能しません。

    NixOS 16.09 のアップデート。 NixOS 16.09を搭載した私のマシンでは、オプション[services.xserver.videoDrivers]はconfiguration.nixに必要ないため、すべてが適切に機能することがわかりました。 glmark2 OpenGLベンチマークで行ったいくつかのテスト。 Nix OS 14.04で観察したものとは逆に、"nvidia"を選択すると、グラフィカルモードは解除されますが、テキストコンソールは終了します。これは私には少し奇妙に見えますが、これは私が観察したものなので、このオプションをconfiguration.nixから削除しました。

  • applesmc モジュール(突然のモーションセンサーなど)をロードするには、以下をconfiguration.nixに追加することをお勧めします。

    boot.kernelModules = [ "applesmc" ];
    

備考と観察

私のMacBookでNixOSを使用してこれまでに確認した唯一の「問題」は、NixOSを実行すると、ラップトップは通常Mac OS 10.9の場合よりも5〜10°C高温になることです。これは Mac上のLinux の通常の問題かもしれません。

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

16
Alexey

追加のヒント:

バックライトを機能させ、蓋が閉じている間にラップトップが自然に再開しないようにするには、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のバージョンによっては、上記のコマンドを微調整する必要がある場合があります。そのため、盲目的にコピーアンドペーストしないでください。

2
Charles

リポジトリのマスターブランチに若干の更新された指示があります: installing-uefi.xml

1
Damien Cassou