Ale*_*xey 21 linux macbook multi-boot uefi macos
我找不到在 (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,但欢迎任何其他建议。
Ale*_*xey 16
这是我的初始答案的更新版本,它应该适用于 NixOS 15.09。与我用来在nix-dev邮件列表的帮助下安装 NixOS 14.04 的初始版本相比,它包含较小的修改。
配备 Mac OS 10.9 的 MacBook 5,1 (2008) 和硬盘分区如下:
a) 标有“EFI”的 200MB EFI 系统分区。
b) Mac OS (10.9) 使用的两个分区。
c) 两个空的 ext4 分区标记为“nixos”和“home”,以及一个标记为“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
Run Code Online (Sandbox Code Playgroud)电缆以太网互联网连接。
一个 U 盘格式化为 FAT 并带有 MBR 并标记为NIXOS_ISO
,带有 NixOS 15.09 64 位 ISO 映像(Live CD 或最小)内容的副本(拖放)。
USB驱动器的标签必须是NIXOS_ISO
(我试过FLASH
一次,没有用)。
Mac OS 下似乎无法挂载 NixOS 15.09 ISO 映像。如果镜像无法挂载,提取其内容就足够了。我可以使用Keka文件归档程序提取 ISO 映像的内容。
通过Alt/Option在重新启动时按住该键并选择 USB EFI Boot从 USB 驱动器启动。以“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
Run Code Online (Sandbox Code Playgroud)添加
nixpkgs.config.allowUnfree = true;
Run Code Online (Sandbox Code Playgroud)
在生成的/mnt/etc/nixos/configuration.nix文件中。
执行
nixos-install
Run Code Online (Sandbox Code Playgroud)重启:
reboot
Run Code Online (Sandbox Code Playgroud)(这是我在 14.04 的经验。)
重新启动后,计算机启动到 NixOS。我再次重新启动,这次拿着Alt/Option钥匙。启动菜单显示了两个外观相同的“EFI 启动”项目。原来,其中一个是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
Run Code Online (Sandbox Code Playgroud)
除了/EFI/APPLE及其内容之外的所有内容都是由 NixOS 安装创建的。
(这是我在 14.04 的经验。)
要使Mac OS 再次默认并在Option-key 启动菜单中以Mac OS 分区命名相应项,只需转到Mac OS 下的System Preferences...> Startup Disk并选择Mac OS 的分区即可。奇怪的是,它需要输入两次管理员密码,而且分区仍然没有显示为选中状态,但除此之外它还能工作。
要始终看到gummiboot菜单,boot.loader.gummiboot.timeout
在configuration.nix 中设置就足够了。
为了正确配置我的nVidia显卡,我最终使用了开源nouveau驱动程序:
services.xserver.videoDrivers = [ "nouveau" ];
Run Code Online (Sandbox Code Playgroud)
我对此没有任何抱怨。如果我改用专有"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" ];
Run Code Online (Sandbox Code Playgroud)到目前为止,我在 MacBook 上观察到的 NixOS 的唯一“问题”是,我的笔记本电脑运行 NixOS 通常比在 Mac OS 10.9 下温度高 5-10 °C。对于Mac 上的 Linux,这可能是一个常见问题。
归档时间: |
|
查看次数: |
7580 次 |
最近记录: |