我找不到任何关于配置双启动的描述NixOS以及 (U)EFI MacBook 上的 Mac OS X。我愿意尝试,但我至少想知道我将尝试的是应该就可以正常工作,并且以后就不必重新安装 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,但固件更新将失败。
我想这意味着如果我对 NixOS 使用相同的 EFI 系统分区,如果我进行 Apple 固件更新,它可能会被修改。如果我创建两个 EFI 系统分区,也不清楚会发生什么。例如,有一个 NixOS 配置选项boot.loader.efi.efiSysMountPoint
(EFI 系统分区挂载的位置)具有默认值"/boot"
,但它如何知道要挂载哪一个?
PS 作为启动管理器,我打算使用重新索引,但欢迎任何其他建议。
答案1
这是我最初答案的更新版本,它应该适用于 NixOS 15.09。与我用来安装 NixOS 14.04 的初始版本相比,它包含了一些小的修改,我之前在nix-dev邮件列表。
初始设置
MacBook 5,1(2008),搭载 Mac OS 10.9,硬盘分区如下:
a) 标记为“EFI”的 200MB EFI 系统分区。
b) Mac OS (10.9) 使用的两个分区。
c) 两个标记为“nixos”和“home”的空 ext4 分区,以及一个标记为“swap”的 Linux Swap 分区。
我使用了以下工具:
这是我的分区表,打印如下
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
有线以太网互联网连接。
一个格式化为 FAT 且带有 MBR 标记的 USB 驱动器
NIXOS_ISO
,其中包含 NixOS 15.09 64 位 ISO 映像(Live CD 或 Minimal)内容的副本(拖放)。USB 驱动器的标签必须是
NIXOS_ISO
(我尝试过FLASH
一次,但没有成功)。NixOS 15.09 ISO 映像似乎无法在 Mac OS 下安装。如果无法安装映像,只需提取其内容即可。我可以使用以下命令提取 ISO 映像的内容柯卡文件归档器。
安装
重新启动时按住Alt/Option键并选择 USB,从 USB 驱动器启动EFI 启动. 以“root”身份登录(无需密码)。确保 Internet 连接正常。安装需要 Internet 连接。
执行
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
添加
nixpkgs.config.allowUnfree = true;
在生成的/mnt/etc/nixos/configuration.nix文件。
执行
nixos-install
重启:
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/苹果并且其内容已由NixOS安装创建。
再次将 Mac OS 设为默认操作系统
(这是我对 14.04 的体验。)
要使 Mac OS 再次成为默认设置,并使Option-key 启动菜单中的相应项以 Mac OS 分区命名,只需转到系统偏好设置...> 启动磁盘在 Mac OS 下,选择 Mac OS 分区。奇怪的是,它要求输入两次管理员密码,并且分区仍然没有显示为已选择,但除此之外,它工作正常。
其他说明
总是看到橡胶靴菜单,只需设置
boot.loader.gummiboot.timeout
即可配置.nix。要正确配置我的英伟达显卡,我最终使用了开源新司机:services.xserver.videoDrivers = [ "nouveau" ];
我对此没什么抱怨。如果我改用专有版本"nvidia"
,文本控制台将无法工作。NixOS 16.09 更新。我发现,在我的 NixOS 16.09 机器上,
services.xserver.videoDrivers
不需要该选项配置.nix为了让一切正常运转,事实上,根据我做的一些测试,它明显降低了图形性能glmark2OpenGL 基准测试。我还观察到,选择此选项"nvidia"
会中断图形模式,但会保留文本控制台,这与我在 Nix OS 14.04 中观察到的情况相反。这一切对我来说看起来有点奇怪,但这就是我观察到的,所以我从我的配置.nix。要加载苹果模块(例如,用于突然运动传感器),建议我添加以下内容配置.nix:
boot.kernelModules = [ "applesmc" ];
评论和观察
到目前为止,我发现我的 MacBook 上 NixOS 的唯一“问题”是,运行 NixOS 时,我的笔记本电脑的温度通常比 Mac OS 10.9 高 5-10 °C。这可能是一个常见问题Mac 上的 Linux。
替代安装说明的链接
- 在 MacBook Air 上安装 Linux,2015 年 6 月 17 日(在与 Mac OS 双启动配置的 MacBook Air 上安装 NixOS)。
答案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