跳转至内容

iMac Unibody

来自 ArchWiki

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

原因: 以第一人称写作以及其他问题。(在 Talk:IMac Unibody 讨论)

本文或本章节已过时。

原因: 2009 年至 2011 年的硬件自 2018-06-29 起未更新。由于该硬件已停售超过 7 年,因此被 Apple 视为 过时。(在 Talk:IMac Unibody 讨论)

尽管拥有 Radeon 而非 nVidia 显卡,这款 iMac 型号仍存在一些与图形相关的问。我遇到的问题是:

  • 内核模式设置生效时,屏幕会禁用/关闭。
  • 从内存挂起恢复后,即使使用下述修复方法,也无法重新启用屏幕。
  • 系统会生成一个用于控制不存在的背光(位于 /sys/class/backlight/acpi_video0)的接口。

KMS bug 的解决方法

在初始安装过程中,最简单的方法是在从安装媒体引导时,将 modprobe.blacklist=radeon 添加到您的 内核命令行。我没有尝试在 BIOS 模式下引导,尽管我怀疑这对于黑屏问题会有多大区别。您需要将此参数保留在内核命令行中,直到安装了图形环境为止。因此,在安装桌面环境时,请务必同时安装 xf86-video-fbdev。这将允许您使用软件渲染和高分辨率 EFI 帧缓冲,直到您解决 radeon 问题。当您将图形环境设置好后,安装 xorg-xrandr,并创建以下脚本:

/usr/local/bin/fix_display
#!/usr/bin/bash
/usr/bin/xrandr -d :0 --output eDP-1 --crtc 1

注意:如果 eDP-1 不起作用,请尝试仅使用 "eDP"。如果您可以盲目登录图形会话,则可以使用 SSH 通过运行 xrandr -d :0 来查看确切名称。

使其 可执行

编辑您的 显示管理器的配置,以便在登录界面启动时运行该脚本。我使用的是 SDDM,所以我这样配置:

/etc/sddm.conf
[X11]
DisplayCommand=/usr/local/bin/fix_display

请注意,您可能需要首先通过运行 sddm --example-config > /etc/sddm.conf 来创建此文件。

现在,您应该能够从内核命令行中删除 modprobe.blacklist 参数,并启用 3D 加速支持后重启。

挂起-恢复的解决方法

目前,挂起-恢复问题尚无解决方案,但如果可能的话,尝试使用 Legacy 引导而不是 EFI 是值得一试的。

伪背光控制的解决方法

acpi_backlight=none 添加到您的 内核命令行并重启。您的桌面环境现在应该能够正确调整屏幕亮度。(请注意,如果您希望在 Plasma 中调整亮度,则必须安装 powerdevil 包。)

关于引导加载程序的建议

由于 Mac 计算机没有标准的 UEFI,我建议您的 引导加载程序尽可能遵循 Apple 的约定。这将使您的 Arch 条目在 Option 键引导菜单中更美观,同时允许您将 Arch 设置为默认操作系统而不是 macOS。以下是粗略的步骤。请将这些说明视为《安装指南》的补充而非替代。它们仅详细说明了与正常安装过程不同的步骤。

  1. 在安装 Arch 之前,请在磁盘工具中创建一个 1 GiB 的分区,格式化为 MacOS Extended (Journaled)。将其命名为 "ArchLinux-Boot"。
  2. 从 macOS 终端运行 diskutil disableJournal /dev/diskXsY。(将 XY 替换为 diskutil list 中的磁盘和分区编号。)
  3. 同样,在磁盘工具中创建一个用于根文件系统和可选交换分区的全尺寸分区。对于这些分区,文件系统无关紧要,因为它们将被覆盖。
  4. 引导至安装媒体(不要忘记上述显卡问题的解决方法)
  5. 使用 gdisk 将根分区和交换分区的分区类型代码更改为 Linux 文件系统 (8300) 和 Linux Swap (8200) 的正确代码。
  6. 根据您的选择,使用文件系统 格式化分区。
  7. 将您新格式化的根文件系统挂载到 /mnt。创建目录 /mnt/esp/mnt/applebootpartition/mnt/boot
  8. 将 EFI 系统分区挂载到 /mnt/esp
  9. 将您在磁盘工具中创建的 HFS+ 文件系统挂载到 /mnt/applebootpartition
  10. 运行 mkdir -p /mnt/applebootpartition/System/Library/CoreServices /mnt/applebootpartition/loader/entries /mnt/applebootpartition/kernel。第一组目录会模拟 macOS 安装,以便固件能够识别。后两个目录用于 Linux 特定的内容,您稍后会看到。
  11. /mnt/applebootpartition/kernel 绑定挂载到 /mnt/boot
  12. 生成 fstab 文件。您可能需要更正绑定挂载的 fstab 条目,以使用适合已安装系统的目录,而不是 live 环境的目录。
  13. 按照主安装指南中的说明运行 pacstrap,并 chroot 进入新系统。
  14. /usr/lib/systemd/boot/efi/systemd-bootx64.efi 复制到 /applebootpartition/System/Library/CoreServices/boot.efi,然后像 /applebootpartition 是 EFI 系统分区一样配置 systemd-boot/applebootpartition/kernel 应包含您的 vmlinuz 和 initramfs 镜像。
  15. 创建文件 /applebootpartition/mach_kernel(应为空文件)。我不确定这是否确实是使固件检测到该分区可引导所必需的。
  16. 执行其他任何必要的安装步骤,然后在 iMac 启动时按住 Option 键,引导至已安装的系统。

iMac12,2 27" 2011

声音

应使用以下设置来正确处理耳机检测。

/etc/modprobe.d/sound.conf
options snd-hda-intel model=imac27

亮度

要调整背光,请调整 "radeon_bl1" 而不是 "acpi_video0" 中的值。

您可以通过以下方式检查允许的最大值:

$ cat /sys/class/backlight/radeon_bl1/max_brightness

您可以通过以下方式设置当前亮度:

# echo value > /sys/class/backlight/radeon_bl1/brightness

或者,将 acpi_backlight=native 添加到 内核命令行