วิธีกำหนดค่า dual boot NixOS ด้วย Mac OS X บน (U) EFI MacBook?


19

ฉันไม่พบรายละเอียดของการกำหนดค่าบูตคู่ของNixOSและ Mac OS X บน (EFI MacBook EFI) ฉันยินดีที่จะทดลอง แต่ฉันอยากจะรู้ว่าอย่างน้อยที่สิ่งที่ฉันจะพยายามที่จะควรที่จะทำงานและว่าจะมีโอกาสที่จะได้มีการติดตั้ง OS X หลังจากนั้น

ใครช่วยบอกฉันทีได้โปรดทำตามขั้นตอนหลักหรือให้ลิงค์ไปยังหน้าที่อธิบายขั้นตอน?

สิ่งที่ทำให้ฉันสับสนโดยเฉพาะคือส่วนการติดตั้ง UEFIของคู่มือ NixOS บอกว่าฉันต้องสร้างพาร์ติชันระบบ EFI ที่จะติดตั้งที่ / boot อย่างไรก็ตามดิสก์ของฉันมีพาร์ติชันระบบ EFI เป็นพาร์ติชันแรกอยู่แล้วและฉันกลัวว่าอาจมีข้อขัดแย้งได้หากฉันอนุญาตให้ทั้ง Mac OS และ NixOS สามารถแก้ไขได้ ตามที่วิกิพีเดีย ,

บนสถาปัตยกรรม Apple – Intel คอมพิวเตอร์ Macintosh พาร์ติชัน EFI จะว่างเปล่าในตอนแรกและไม่ได้ใช้สำหรับการบูต อย่างไรก็ตามพาร์ติชัน EFI ถูกใช้เป็นพื้นที่สำหรับการอัพเดตเฟิร์มแวร์ โดยเฉพาะจะวางยูทิลิตี้แฟลชเฟิร์มแวร์ (ไบนารี EFI) และไฟล์ข้อมูล (FD - "อุปกรณ์เฟิร์มแวร์") ในไดเรกทอรี EFI / APPLE / FIRMWARE ซึ่งจะทำงานเมื่อรีบูตระบบในโหมด "แฟลชเฟิร์มแวร์" หากถูกลบระบบจะยังคงบู๊ตและตัวจัดการการบูตจะยังอนุญาตให้ผู้ใช้เลือกว่าจะเริ่มพาร์ติชัน Boot Camp หรือ Mac OS X ที่เป็นค่าเริ่มต้น แต่การอัปเดตเฟิร์มแวร์จะล้มเหลว

ฉันคิดว่านี่หมายความว่าถ้าฉันใช้พาร์ติชันระบบ EFI เดียวกันสำหรับ NixOS มันอาจได้รับการแก้ไขถ้าฉันทำการอัปเดตเฟิร์มแวร์ของ Apple ยังไม่ชัดเจนว่าจะเกิดอะไรขึ้นถ้าฉันสร้างพาร์ติชันระบบ EFI สองชุด ตัวอย่างเช่นมีตัวเลือกการกำหนดค่า NixOS boot.loader.efi.efiSysMountPoint(ที่ติดตั้งพาร์ติชันระบบ EFI) ด้วยค่าเริ่มต้น"/boot"แต่จะทราบได้อย่างไรว่าจะต้องติดตั้งตัวใด

ป.ล. ในฐานะผู้จัดการการบูตฉันวางแผนที่จะใช้rEFIndแต่ยินดีต้อนรับคำแนะนำอื่น ๆ

คำตอบ:


16

นี่เป็นคำตอบเริ่มต้นของฉันเวอร์ชันที่อัปเดตแล้วซึ่งควรใช้กับ NixOS 15.09 มันมีการปรับเปลี่ยนเล็กน้อยเมื่อเทียบกับรุ่นเริ่มต้นซึ่งฉันใช้ในการติดตั้ง NixOS 14.04 ด้วยความช่วยเหลือจากรายชื่อผู้รับจดหมายnix-dev

ตั้งค่าเริ่มต้น

  1. MacBook 5,1 (2008) พร้อม Mac OS 10.9 และแบ่งพาร์ติชันฮาร์ดดิสก์ดังนี้:

    a) พาร์ติชันระบบ EFI ขนาด 200MB ระบุว่า "EFI"

    b) สองพาร์ติชันที่ใช้โดย Mac OS (10.9)

    c) พาร์ติชั่น ext4 ว่างสองอันที่มีป้ายกำกับว่า "nixos" และ "home" และพาร์ทิชัน Linux Swap ระบุว่า "swap"

    ฉันใช้เครื่องมือต่อไปนี้:

    • GPT fdisk (จากภายใต้ Mac OS)

    • mkfs.ext4 (จากใต้ NixOS บนไดรฟ์ USB ที่สามารถบู๊ตได้)

    • 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. การเชื่อมต่ออินเทอร์เน็ตผ่านสายเคเบิล Ethernet

  3. ไดรฟ์ USB ที่จัดรูปแบบเป็น FAT พร้อม MBR และติดป้ายกำกับNIXOS_ISOพร้อมสำเนา (ลากแล้วปล่อย) เนื้อหา NixOS 15.09 อิมเมจ ISO 64- บิต (Live CD หรือ Minimal)

    • ฉลากของไดรฟ์ USB จะต้องเป็นNIXOS_ISO(ฉันลองFLASHครั้งเดียวมันไม่ทำงาน)

    • ดูเหมือนว่าภาพ ISO NixOS 15.09 ไม่สามารถติดตั้งภายใต้ Mac OS หากไม่สามารถเมานต์รูปภาพได้ก็เพียงพอที่จะแยกเนื้อหาออก ฉันสามารถแยกเนื้อหาของอิมเมจ ISO ด้วยไฟล์เก็บถาวร Keka

การติดตั้ง

  1. บูตจากไดรฟ์ USB โดยถือลงAlt/Optionสำคัญเมื่อรีบูตเครื่องและโดยการเลือก USB EFI Boot เข้าสู่ระบบในฐานะ "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:

    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เมนูการบู๊ต -key ตั้งชื่อตามพาร์ติชั่น Mac OS มันก็เพียงพอแล้วที่จะไปที่System Preferences ... > Startup Diskภายใต้ Mac OS และเลือกพาร์ติชันที่มี Mac OS มันจำเป็นต้องป้อนรหัสผ่านของผู้ดูแลระบบสองครั้งและพาร์ติชันยังคงไม่แสดงตามที่เลือก แต่อย่างอื่นก็ใช้งานได้

คำแนะนำอื่น ๆ

  • ที่มักจะเห็นgummibootเมนูก็พอที่จะตั้งค่าboot.loader.gummiboot.timeoutในconfiguration.nix

  • ในการกำหนดค่าอย่างเหมาะสมของฉัน nVidiaกราฟิกการ์ดฉันสิ้นสุดการใช้โอเพนซอร์สนูโวขับ:

    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

  • ในการโหลดแอปเปิ้ลโมดูล (สำหรับเซ็นเซอร์ตรวจจับความเคลื่อนไหวอย่างฉับพลัน) ขอแนะนำให้ฉันเพิ่มสิ่งต่อไปนี้ลงในconfiguration.nix :

    boot.kernelModules = [ "applesmc" ];
    

ข้อสังเกตและข้อสังเกต

"ปัญหา" เพียงอย่างเดียวกับ NixOS บน MacBook ของฉันที่ฉันสังเกตเห็นมาแล้วคือการใช้ NixOS แล็ปท็อปของฉันมักจะร้อนประมาณ 5-10 ° C มากกว่า Mac OS 10.9 นี้อาจจะเป็นปัญหาปกติสำหรับลินุกซ์บน Mac

ลิงก์ไปยังคำแนะนำในการติดตั้งสำรอง


ขอบคุณ @Alexey สำหรับการเขียนที่ดี! ฉันมีเพียงหนึ่งข้อสงสัย มันไม่ชัดเจนถ้าคุณใช้พาร์ติชั่น EFI ที่มีอยู่แล้ว (สร้างโดย Apple) หรือถ้าคุณสร้างพาร์ติชั่นเพิ่มเติม ฉันลองหลังแล้ว แต่การติดตั้งล้มเหลวด้วย "... ระบบไฟล์ไม่ใช่ EFI ที่ถูกต้อง" ดังนั้นฉันสงสัยว่าฉันต้องใช้พาร์ติชัน EFI ของ Mac เท่านั้น คุณยืนยันหรือไม่ ขอบคุณ!
Alfredo Di Napoli

Alfredo คุณพูดถูกฉันไม่ได้อธิบายว่าฉันได้ตั้งค่าเริ่มต้นอย่างไร ฉันมีพาร์ติชั่นระบบ EFI ของ Apple อยู่แล้วซึ่งฉันเชื่อว่าคอมพิวเตอร์ทุกเครื่องเช่นของฉันได้ติดตั้งไว้แล้ว อย่างไรก็ตามฉันจะแปลกใจถ้ามันสำคัญว่าพาร์ติชั่นนั้นสร้างขึ้นได้อย่างไร คุณแน่ใจหรือว่าคุณได้ตั้งรหัสพาร์ติชันที่ถูกต้องEF00? ฉันใช้ gdiskเพื่อจัดการพาร์ติชั่นใหม่ ฉันได้ทำการแก้ไขเพื่อแสดงตารางพาร์ติชันของฉัน
Alexey

สวัสดี @Alexey ขอบคุณสำหรับการตอบกลับ ในขณะเดียวกันฉันก็กล้าพอที่จะนำพาร์ติชัน EFI ที่ติดตั้งล่วงหน้ามาใช้ใหม่ซึ่งเห็นได้ชัดว่าเป็นวิธีที่เราควรดำเนินการต่อ อาจเป็นไปได้ที่จะสร้างสองพาร์ติชัน (และฉันใช้ EF00 สำหรับพาร์ทิชันที่ฉันสร้าง) แต่ในที่สุดการนำแอปเปิ้ลที่ติดตั้งใหม่กลับมาใช้ใหม่ได้ ฉันพิมพ์จาก NixOS ในขณะที่เราพูด :)
Alfredo Di Napoli

ฉันเชื่อว่าฉันได้อ่านบางแห่งว่าไม่แนะนำหรือไม่สนับสนุนให้มีพาร์ติชันระบบ EFI มากกว่าหนึ่ง
Alexey

ขอให้โชคดีกับการดีบัก NixOS บน MacBook :) หากคุณไม่มี SSD และหาวิธีกำหนดค่าเซ็นเซอร์ตรวจจับความเคลื่อนไหวอย่างฉับพลันแจ้งให้เราทราบได้โปรด (ฉันเพิ่งเพิ่มหมายเหตุเกี่ยวกับสิ่งนี้ในคำตอบของฉัน) ฉันดูเหมือนจะมีปัญหากับการกำหนดความถี่ซีพียู: แม้จะมี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 ของคุณดังนั้นโปรดอย่าคัดลอกและวางสุ่มสี่สุ่มห้า


1

มีคำแนะนำที่ได้รับการปรับปรุงเล็กน้อยในสาขาหลักของที่เก็บ: install-uefi.xml


ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
DanteTheEgregore
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.