(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 펌웨어 업데이트를 수행하면 수정 될 수 있음을 의미합니다. 두 개의 EFI 시스템 파티션을 만들면 어떻게되는지 명확하지 않습니다. 예를 들어 기본값이 NixOS 구성 옵션 boot.loader.efi.efiSysMountPoint(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 (10.9)에서 사용되는 두 개의 파티션.

    c) "nixos"및 "home"으로 표시된 두 개의 빈 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. NIXOS_ISONixOS 15.09 64 비트 ISO 이미지 (Live CD 또는 Minimal)의 내용을 복사 (드래그 앤 드롭) 한 MBR 형식의 FAT로 포맷되고 레이블이 붙은 USB 드라이브 .

    • USB 드라이브의 레이블이 있어야 합니다 NIXOS_ISO( FLASH한 번 시도했지만 작동하지 않음).

    • 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 Boot"항목을 보여줍니다. 그들 중 하나는 Mac OS이고 다른 하나는 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가있는 파티션을 선택하면됩니다. 이상하게도 관리자 암호를 두 번 입력해야했지만 파티션이 여전히 선택된 것으로 표시되지 않았지만 작동하지 않았습니다.

기타 지침

  • gummiboot 메뉴 를 항상 보려면 configuration.nixboot.loader.gummiboot.timeout 에서 설정하면 됩니다.

  • nVidia 그래픽 카드를 올바르게 구성 하기 위해 오픈 소스 nouveau 드라이버를 사용했습니다.

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

    나는 그것에 대해 불만이 없습니다. 독점을 "nvidia"대신 사용하면 텍스트 콘솔이 작동하지 않습니다.

    NixOS 16.09 업데이트 . NixOS 16.09가 설치된 시스템 에서는 모든 것이 제대로 작동하기 위해 configuration.nix 에 옵션 services.xserver.videoDrivers이 필요하지 않으며 glmark2 OpenGL 벤치 마크로 수행 한 몇 가지 테스트에 따라 그래픽 성능이 눈에 띄게 저하 됩니다. 또한 선택하면 그래픽 모드가 중단되지만 Nix OS 14.04에서 관찰 한 내용과 달리 텍스트 콘솔이 남습니다. 이 모든 것이 나에게 조금 이상해 보이지만 이것이 내가 관찰 한 것이므로 configuration.nix 에서이 옵션을 제거했습니다 ."nvidia"

  • applesmc 모듈 을로드하려면 (예를 들어, 갑작스런 모션 센서의 경우) configuration.nix에 다음을 추가하도록 제안되었습니다 .

    boot.kernelModules = [ "applesmc" ];
    

비고 및 관찰

내가 지금까지 본 MacBook에서 NixOS의 유일한 "문제점"은 NixOS를 실행하면 일반적으로 Mac OS 10.9보다 5-10 ° C 더 뜨겁다는 것입니다. 이것은 Mac의 Linux에서 일반적인 문제 일 수 있습니다 .

대체 설치 지침에 대한 링크

  • MacBook Air , 17/06/2015 에 Linux를 설치하십시오 (Mac OS를 사용하여 듀얼 부팅 구성으로 MacBook Air에 NixOS 설치).

멋진 글쓰기를 위해 @Alexey에게 감사드립니다! 한가지 의심이 있습니다. 기존의 EFI 파티션 (Apple에서 생성)을 사용하거나 추가 파티션을 생성 한 경우 모호합니다. 후자를 시도했지만 "... 파일 시스템이 유효한 EFI가 아닙니다"라는 메시지가 표시되어 설치가 실패하므로 Mac의 EFI 파티션 만 사용해야한다고 생각합니다. 당신은 확인합니까? 감사!
Alfredo Di Napoli

알프레도, 네 말이 맞다. 내가 초기 설정을 어떻게 얻었는지 설명하지 않았다. 필자는 이미 Apple EFI 시스템 파티션을 가지고 있었는데, 내 컴퓨터와 같은 모든 컴퓨터가 사전 설치되어 있다고 생각합니다. 그러나 해당 파티션을 만드는 방법이 중요하다면 놀랄 것입니다. 올바른 파티션 코드를 설정 EF00했습니까? gdisk 를 사용 하여 새 파티션을 관리했습니다. 파티션 테이블을 표시하도록 편집했습니다.
Alexey

안녕 @Alexey, 답변 주셔서 감사합니다. 그 동안 저는 사전 설치된 EFI 파티션을 재사용하기에 충분히 대담했습니다. 아마도 두 개의 파티션을 만들 수있을 것입니다. (실제로 내가 만든 파티션에 EF00을 사용했습니다.) 결국 Apple을 사전에 재사용하면 효과가있었습니다. 우리가 말하는대로 NixOS에서 입력하고 있습니다 :)
Alfredo Di Napoli

나는 어딘가에서 EFI 시스템 파티션을 두 개 이상 사용하는 것이 권장되지 않거나 어떻게 든 지원되지 않는다고 읽었습니다.
Alexey

MacBook에서 NixOS를 디버깅하면 행운을 빕니다 :). SSD가없고 갑자기 모션 센서를 구성하는 방법을 알고 있다면 알려주십시오. (방금 이것에 대한 답변을 내 대답에 추가했습니다.) 또한 CPU 주파수 구성에 어려움이있는 것 같습니다. powersave거버너 조차도 명백한 이유없이 꽤 뜨겁습니다.
Alexey

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.