Mac
本页面补充了 安装指南,提供了针对 Apple Mac 的特定说明。Arch 安装镜像支持使用 Intel 处理器的 Apple Mac,但不支持 PowerPC 或 Apple Silicon 处理器。
概述
总而言之,在 Mac 上安装 Arch Linux 的步骤如下:
预安装
在继续安装 Arch Linux 之前,请按照以下步骤操作。
- 安装 macOS 并安装其更新。macOS 是安装固件更新的唯一已知方法,即使在安装 Arch 后操作系统不是必需的。请参阅 Apple 的说明。
- 打开 ColorSync 实用工具,找到当前的
.icc
颜色配置文件,并将文件保存到其他位置。该配置文件稍后可用于正确设置显示颜色。请参阅颜色配置文件。 - 在 macOS 上设置音量,这将是启动声音的音量。如果音量静音,启动声音也将静音。请参阅静音启动声音。
分区
如果只需要 Arch Linux,则按照安装指南#磁盘分区格式化整个磁盘。要设置双启动,请按照以下步骤操作。完成后,转到#安装。
Arch Linux 与 macOS 或其他操作系统共存
Mac 通常具有以下分区表。在使用 Apple 混合硬盘 的 Mac 中,分区方案可能不同。
- EFI:约 200 MB 的 EFI 系统分区。
- macOS:包含 macOS 安装的主分区,可以是 HFS+ 或 APFS。
- 恢复:如果不使用 APFS,则存在恢复分区。如果使用 APFS,则不存在此分区。
要将 Arch 与 macOS 一起安装,请保留这些分区,并按照以下步骤操作。
- 您可能需要在调整 macOS 分区大小之前关闭 FileVault。请参阅 Apple 的说明。
- 运行“磁盘工具”,在左侧栏中选择要分区的驱动器,然后单击分区。不要创建容器。
- 按 + 按钮添加新分区,并选择要为 macOS 保留多少空间,以及为新分区保留多少空间。新分区将在 Arch Linux 中格式化,因此您可以选择任何您想要的分区类型。
- 可选地,创建您设置可能需要的任何其他分区。有关更多信息,请参阅分区#分区方案。
这是一个包含五个独立分区的示例设置
partition mountpoint size type label /dev/sda1 /efi 200MiB vfat EFI /dev/sda2 - ? hfs+ macOS /dev/sda3 - ? hfs+ Recovery /dev/sda4 - 100MiB hfs+ Boot Arch Linux from the Apple boot loader (optional) /dev/sda5 /boot 100MiB boot boot /dev/sda6 - ? swap swap (optional) /dev/sda7 / 15-20GiB ext4 root /dev/sda8 /home remaining ext4 home
- 有关从 Apple 引导加载器启动 Arch Linux 的更多信息,请参阅#将引导加载器安装到单独的 HFS+ 分区。
- Arch Linux 可以使用现有的 EFI 系统分区,而无需创建额外的分区。
安装
- 按住
Alt
键(Apple 键盘上的Option
键)启动时引导进入 live 环境。 - 如果键盘出现长时间延迟或字符重复,请使用以下内核参数重启:
arch noapic irqpoll acpi=force
。 - 如果显示超出屏幕边界(底部出现无法读取的行),请使用内核参数:
nomodeset
- 按照安装指南中描述的步骤继续安装,但在以下区域除外
- 安装过程完成后,重启您的计算机。
- 在启动期间,如果使用光盘,请按住弹出键弹出光盘。
- 在启动期间,如果使用 systemd-boot 或 GRUB,请按住
Alt
键以调出 Apple 启动菜单,然后选择 “EFI Boot”。如果使用 rEFInd,则无需按住任何键即可启动。
设置引导加载器
Mac 使用 UEFI 进行引导,因此任何 UEFI 引导加载器 都可以工作。内置引导加载器(在启动期间按住 Alt
时显示)将检测任何具有 /EFI/BOOT/BOOTX64.EFI
文件的 EFI 系统分区,并将其显示为 “EFI Boot” 条目。大多数 UEFI 引导加载器都支持直接安装到此位置,从而轻松实现双启动设置。
引导加载器还具有#将引导加载器安装到单独的 HFS+ 分区中描述的备用分区发现方法,该方法用于引导 macOS,但也可用于 Linux。
- Mac 上的 UEFI 固件也可以通过 efibootmgr 进行配置。
- 要使用 Apple 引导加载器将卷设置为默认启动项,请在选择它时按住
Ctrl
键。
安装到 EFI 系统分区
systemd-boot
按照 systemd-boot#安装 UEFI 引导管理器 中的说明操作。安装后,systemd-boot 的副本将位于 /EFI/BOOT/BOOTX64.EFI
。
rEFInd
要将 rEFInd 安装到 /EFI/BOOT/BOOTX64.EFI
位置,请运行
# refind-install --usedefault /dev/sdXY
其中 /dev/sdXY
是 EFI 系统分区。安装后,请参阅 rEFInd#配置 以完成设置。
从 macOS 安装
这些步骤假设 macOS 仍安装在分区上,并且 安装指南 的步骤已完成到 安装指南#引导加载器。按住 Command+R
启动到安全模式,然后禁用 SIP。
# csrutil disable
启动 macOS,并运行 rEFInd 安装脚本,
# ./refind-install --alldrivers
rEFInd 将自身安装到 Apple 的启动分区,并用自己的启动菜单替换了 Apple 的启动菜单。按住 Command+R
启动到安全模式,并启用 SIP。
# csrutil enable
无需按住任何键即可重启。默认情况下,Arch 应该被识别为 vmlinuz-linux
。如果不是,请取消注释 refind.conf
中的 scan_all_linux_kernels
和 also_scan_dirs
行。有关配置,请参阅 rEFInd#refind_linux.conf。由于 rEFInd 默认情况下将 root 挂载为 ro,因此建议创建 refind-linux.conf。
GRUB
要将 GRUB 安装到 /EFI/BOOT/BOOTX64.EFI
,请按照 GRUB#安装 中的说明操作,在运行 grub-install
时添加 --removable
选项。
将引导加载器安装到单独的 HFS+ 分区
尽管使用了 UEFI,但 Mac 原生 EFI 引导加载器 不使用 EFI 系统分区来引导 macOS。相反,它使用以下条件来查找内部和外部驱动器中所有分区内现有的 macOS 安装,并在满足条件时将其显示为可能的启动选项
- 分区格式为 HFS+
- 分区类型 ID 为
af00
(“Apple HFS/HFS+”) - 在分区的根目录中,有一个名为
mach_kernel
的文件 - 在该分区内,
/System/Library/CoreServices
目录下有一个boot.efi
文件
与在 EFI 系统分区中使用 BOOTX64.EFI
文件来引导 Arch 相比,此方法的优势在于它可以与 macOS 良好地共存,在 macOS 启动磁盘设置中将分区显示为可启动卷。但是,此方法需要手动配置。以下步骤将说明如何使用 GRUB 执行此配置。
首先,创建一个新的 HFS+ 分区。这可以通过 macOS 磁盘工具或 hfsprogsAUR 软件包中的 mkfs.hfsplus
工具来完成。分区的大小和挂载点取决于您计划如何使用它
- 如果您计划将其用作 /boot 目录,请给它至少 300 MB;
- 如果您打算将内核保存在另一个分区中,并使用可以加载其他文件系统的引导加载器(如 rEFInd 或 GRUB),则分区可以更小,并且可以挂载到您想要的任何位置。
挂载分区,然后创建 mach_kernel
文件
# touch /mountpoint/mach_kernel
创建引导加载器的目录结构
# mkdir -p /mountpoint/System/Library/CoreServices
现在您可以安装任何您想要的 UEFI 引导加载器。例如,要手动安装 rEFInd
# cp -r /usr/share/refind/* /mountpoint/System/Library/CoreServices/ # mv /mountpoint/System/Library/CoreServices/refind_x64.efi /mountpoint/System/Library/CoreServices/boot.efi
最后,您可以创建一个可选的 /挂载点/System/Library/CoreServices/SystemVersion.plist
文件,该文件将在 macOS 启动磁盘设置中显示有关卷的一些信息
/mountpoint/System/Library/CoreServices/SystemVersion.plist
<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <dict> <key>ProductBuildVersion</key> <string>rolling</string> <key>ProductName</key> <string>Arch Linux</string> <key>ProductUserVisibleVersion</key> <string></string> <key>ProductVersion</key> <string></string> </dict> </plist>
按照这些说明操作后,新卷将出现在启动时按住 Alt
键时出现的 Mac 引导加载器上,并且它也将作为可启动卷出现在 macOS 启动磁盘选项中。
使用 blessing
通过所谓的 “blessing”,在将 GRUB 放置在单独的分区后,可以在 EFI 模式下直接从 GRUB 启动,而无需使用 rEFIt。已知这些说明在 MacBook7,1 上有效。建议将 GRUB 托管在 FAT32 或 HFS+ 分区上,但 ext2 或 ext3 也可能有效。
在 GRUB 安装在所需位置后,需要指示固件从该位置启动。这可以从现有的 macOS 安装或 macOS 安装盘完成。以下命令假定 GRUB 安装在现有 macOS 分区上的 /efi/grub/
中
# bless --folder /efi/grub --file /efi/grub/grub.efi
技巧与提示
颜色配置文件
Mac 使用 ICC 配置文件,这些配置文件可以轻松地在 Arch 中加载。可以使用 ColorSync 实用工具或“系统偏好设置”>“显示器”>“颜色”来显示当前配置文件。这些文件对应于特定型号,
Color LCD-4271800.icc
适用于配备 CoreDuo CPU 的 MacBook ProColor LCD-4271880.icc
适用于配备 Core2Duo 的 MacBookColor LCD-4271780.icc
适用于基于 CoreDuo 或 Core2Duo 的 MacBook(非 Pro)。Color LCD-68FE312B-5EF0-E0A1-BCD8-8890B73C7B3A.icc
适用于 MacBookPro9,2 (Mid-2012)
- 之前的命令仅为当前会话设置颜色配置文件。自启动它。
- GNOME 将还原 xcalib 设置的配置文件。最好使用设置中的颜色来设置配置文件。
Apple Remote
使 LIRC 使用 /dev/usb/hiddev0
或 /dev/hiddev0
/etc/conf.d/lircd
# # Parameters for lirc daemon # LIRC_DEVICE="/dev/usb/hiddev0" LIRC_DRIVER="macmini" LIRC_EXTRAOPTS="" LIRC_CONFIGFILE="/etc/lirc/lircd.conf"
使用 irrecord 创建与您的遥控器信号匹配的配置文件
# irrecord -d /dev/usb/hiddev0 -H macmini output_conf_file
启动 lircd.service
并使用 irw 检查它是否工作。
或者,使用以下方法
/etc/lirc/lircd.conf
begin remote name lircd.conf.macbook bits 8 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 24 pre_data 0x87EEFD gap 211994 toggle_bit_mask 0x87EEFD01 begin codes Repeat 0x01 Menu 0x03 Play 0x05 Prev 0x09 Next 0x06 Up 0x0A Down 0x0C end codes end remote
HFS+ 分区
HFS 分区共享
# fdisk -l /dev/sda
Device Boot Start End Blocks Id Type /dev/sda1 1 26 204819 ee GPT /dev/sda2 26 13602 109051903+ af Unknown /dev/sda3 * 13602 14478 7031250 83 Linux /dev/sda4 14478 14594 932832+ 82 Linux swap / Solaris
“Unknown” 分区是我们的 macOS 分区,它位于 /dev/sda2
。我们可以在 fstab 中使用它
/etc/fstab
/dev/sda2 /path/to/shared/hfs_partition hfsplus auto,user,rw,exec 0 0
然后可以挂载它,并访问内容。
错误的超级块
本节介绍挂载 hfsplus 分区时出现的错误消息
# mount -t hfsplus dev/sdX force,ro
wrong fs type, bad option, bad superblock on /dev/sdX, missing codepage or helper program, or other error.
自 Yosemite 以来,HFS+ 分区现在都封装在 CoreStorage 卷中。验证您是否有一个 CoreStorage 卷。
# fdisk -l /dev/sdX
Disk /dev/sdX: 298.1 GiB, 320072933376 bytes, 625142448 sectors Units: sectors of 1* 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Device Start End Sectors Size Type /dev/sdX1 40 409639 409600 200M EFI System /dev/sdX2 409640 623872871 623463232 297.3G Apple Core storage /dev/sdX3 623872872 625142407 1269536 916.0M Apple boot
HFS+ 使用两个卷头,一个位于设备中 1024 字节处,另一个位于设备末尾 1024 字节处。由于 HFS+ 分区封装在 CoreStorage 卷中,因此分区的末尾实际上不是 /dev/sdX2
分区末尾 1024 字节处。要解决此问题,您需要在挂载时指定 sizelimit=X
。
要确定 sizelimit
,请执行以下操作
- 运行
testdisk /dev/sdX
并选择您的驱动器 - 选择
EFI GPT
- 选择
Analyse
,然后选择Quick Search
示例输出
TestDisk 7.0, Data Recovery Utility, April 2015 Christophe GRENIER <grenier@cgsecurity.org> https://www.cgsecurity.org Disk /dev/sdX - 320 GB / 298 GiB - CHS 38913 255 63 Partition Start End Size in sectors P EFI System 40 409639 409600 [EFI] P Mac HFS 409640 623147815 622738176 P Mac HFS 623872872 625142407 1269536
您现在看到的是 HFS 分区本身的输出,不包含 CoreStorage 卷。获取扇区大小(在本例中为 622738176),然后乘以逻辑扇区大小中的字节数(在本例中为 512)。
622738176 * 512 = 318841946112
最后,使用 sizelimit=X
选项挂载您的磁盘。
mount /dev/sdX -t hfsplus -o ro,sizelimit=318841946112
禁用日志
Linux 不完全支持 HFS+ 分区,默认情况下以只读方式挂载。为了写入 HFS+ 分区,安全的方法是禁用日志。这可以使用 macOS 磁盘工具完成。有关更多信息,请参阅此 Apple 支持页面,或尝试从命令行执行此操作
查找您的分区
# diskutil list
/dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *750.2 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_HFS macOS 149.5 GB disk0s2 3: Apple_HFS Macintosh HD 599.2 GB disk0s3 4: Apple_Boot Recovery HD 650.0 MB disk0s4
在本示例中,我们将使用名为 Macintosh HD 的 disk0s3 分区。要了解日志是否已激活,您可以执行
# diskutil info /dev/disk0s3 | grep -i journal
File System Personality: Journaled HFS+ Name (User Visible): Mac OS Extended (Journaled) Journal: Journal size 49152 KB at offset 0x1176000
正如您所读到的,日志已激活。要关闭日志,您可以执行
# diskutil disableJournal disk0s3
要验证是否完成,请再次执行 info 命令。
如果您没有得到任何输出,则日志已禁用。
但是,如果您无法禁用日志。您可以将 /etc/fstab
中的 “auto,user,rw,exec” 更改为 “auto,user,force,rw,exec” 并挂载它。
用于 home 共享的 UID 同步
如果您想从 Linux 访问您的 macOS 用户目录,请记下用户的 UID 和 GID。macOS 从第一个用户的 UID 501 开始,而 Arch 默认为 1000。
在 macOS 中
更改 UID 和 GID
Arch Linux 上用户的默认 UID 和 GID 为 1000,请根据您的设置调整以下步骤。
Pre-Leopard
- 打开位于
/Applications/Utilities
文件夹中的NetInfo 管理器。 - 如果尚未完成,请单击窗口底部的闭锁图标,并输入您的帐户密码,或者如果您已创建 root 帐户,则输入 root 密码,以启用对用户帐户事务的访问。
- 导航到
/users/新用户名
- 将 UID 值更改为 1000
- 将 GID 值更改为 1000
- 导航到
/groups/新用户名
,自动保存您到目前为止所做的更改。
Leopard
在 Leopard 中,NetInfo 管理器应用程序不存在。UID 同步需要一组不同的步骤
- 打开系统偏好设置。
- 单击用户与群组。
- 如果尚未解锁,请解锁面板。
- 右键单击所需用户,然后选择高级选项。
- 写下用户 ID 字段的值,您稍后将需要它。更改 UID 和 GID 以匹配要在 Arch 中共享的帐户的 UID 和 GID。
更改 “Home” 权限
- 在
/Applications/Utilities
文件夹中打开 终端。
- 输入以下命令以回收您的主文件夹的权限设置
# find /User/your_user_name -user your_old_UID -exec chown your_user_name:your_user_group {} \;
在 Arch 中
要在 Arch Linux 中同步您的 UID,建议您在创建新用户帐户时执行此操作。因此,建议您在安装 Arch Linux 后立即执行此操作。
# useradd -m -u [uid] -g [gid] -G [additional_groups] -s [login_shell] [username]
现在您必须用 macOS 的 home 替换 Arch 的 home,方法是修改 /etc/fstab
的条目。为了能够访问 macOS 用户的目录,只需要 uid 和 gid 匹配(用户名可以不同)。
静音启动声音
启动声音音量由 EFI 变量 SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82 控制。因此,可以使用以下命令将其静音
# printf "\x07\x00\x00\x00\x00" > /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82
请记住,该文件可能默认设置了 immutable 位,这将阻止甚至 root 用户覆盖该文件。请参阅文件权限和属性#文件属性。要删除它,请执行以下操作
# chattr -i /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82
之后,运行 printf
命令,它应该正确覆盖该文件。验证文件的内容,然后在满意后使用 chattr +i
再次设置 immutable 位。
或者,您可以使用 macOS 安装盘来静音声音。从中启动,选择语言,然后单击实用工具 > 终端,然后输入
# /usr/sbin/nvram SystemAudioVolume=%percentage
引导加载器中的自定义图标
Mac 引导加载器支持为它检测到的每个卷加载自定义图标。自定义图标必须为 .icns
格式,并且位于包含引导加载器的卷的根目录中,文件名为 .VolumeIcon.icns
。
以下示例使用 wget 下载 Arch 徽标 SVG,使用 librsvg 将其转换为 PNG,然后使用 libicns 将其转换为 .icns
$ wget -O /tmp/archlinux.svg https://archlinux.org.cn/logos/archlinux-icon-crystal-64.svg $ rsvg-convert -w 128 -h 128 -o /tmp/archlogo.png /tmp/archlinux.svg # png2icns /boot/.VolumeIcon.icns /tmp/archlogo.png
显然,您可以将 Arch 徽标替换为您喜欢的任何其他图标。
参见
- 笔记本电脑/苹果
- MacBookPro10,x
- MacBookPro11,x
- https://wiki.t2linux.org/
- MacBook Air
- MacBook Pro