iMac Unibody

出自 ArchWiki

此条目或章节需要改进语言、wiki 语法或风格。参见 Help:Style 以供参考。

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

此条目或章节已过时。

原因:自 2018-06-29 以来没有针对 2009 年至 2011 年硬件的更新。所述硬件自上次销售超过 7 年后,已被 Apple 视为 过时。(在 Talk:IMac Unibody 中讨论)

尽管使用 Radeon 而不是 nVidia 显卡,但 this iMac 型号仍然存在许多与图形相关的问题。我遇到的问题有

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

KMS 错误的解决方法

在初始安装过程中,最简单的方法是在从安装介质启动时,将 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 来查看确切的名称。

使其可执行

编辑您的显示管理器配置,以便在 greeter 启动时运行该脚本。我使用 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 的约定。这将使您在 Option 键启动菜单中的 Arch 条目美观漂亮,并允许您将 Arch 设置为默认操作系统而不是 macOS。以下是执行此操作的大致步骤。请将这些说明视为安装指南的补充,而不是替代品。它们仅详细说明了偏离正常安装过程的步骤。

  1. 在安装 Arch 之前,在磁盘工具中创建一个 1 GiB 的分区,格式化为 MacOS 扩展(日志式)。将其命名为 “ArchLinux-Boot”。
  2. 从 macOS 终端运行 diskutil disableJournal /dev/diskXsY。(将 XY 替换为 diskutil list 中的磁盘和分区号。)
  3. 在磁盘工具中为根文件系统创建一个全尺寸分区,并可选择创建一个交换分区。这些文件系统无关紧要,因为它们无论如何都会被覆盖。
  4. 启动到安装介质(不要忘记上面关于图形的解决方法)
  5. 使用 gdisk 将根分区和交换分区上的分区类型代码更改为 Linux 文件系统 (8300) 和 Linux 交换 (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 条目,以使用对已安装系统而不是实时环境有意义的目录。
  13. 按照主安装指南中的指定运行 pacstrap,并 chroot 到新系统。
  14. /usr/lib/systemd/boot/efi/systemd-bootx64.efi 复制到 /applebootpartition/System/Library/CoreServices/boot.efi,并从那里配置 systemd-boot,就好像 /applebootpartition 是 EFI 系统分区一样。/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 添加到内核命令行。