iMac 铝制版

来自 ArchWiki

本文或章节可能需要与 Mac 合并

注意: 此页面的大部分内容与 Mac 重复,#让声音正常工作 应该保留为 Laptop/Apple#故障排除 的子章节,而 #故障排除 的内容应添加到 Mac/Troubleshooting,因为它在那里尚未提及,并且是针对 Apple 硬件的良好通用建议。(在 Talk:IMac Aluminum 中讨论)

本文或章节已过时。

原因: 此页面主要在 2008 年至 2011 年间编写:此处的大部分信息不再相关。 此外,它讨论的硬件已被 Apple 视为过时,因为它最后一次销售是在 7 年多以前。(在 Talk:IMac Aluminum 中讨论)

本文或章节需要语言、wiki 语法或风格改进。 请参阅 Help:Style 作为参考。

原因: 完全无视 Help:Style (在 Talk:IMac Aluminum 中讨论)

来自 维基百科

2007 年 8 月,Apple 推出了 iMac 的完整重新设计,采用了铝、玻璃和塑料外壳。 整个计算机上只有一个可见的螺丝,位于 iMac 的底部,用于访问内存插槽。 它有一个黑色的塑料背板,用户无法拆卸。

删除 macOS

保留一个小的 macOS 分区允许您进行固件更新。

您也可以使用带有 OS X 的外部 USB 或 Firewire 驱动器来启动 OS X 以进行固件更新,甚至可以通过光驱。

安装额外的引导加载程序

Apple 计算机有一个内置的引导加载程序,可以通过在开机时按住 Alt 键来访问。 这允许您从 CD、HDD 和通过 WiFi 启动。 如果您的 iMac 有一个单独的 EFI 系统分区,此菜单还将允许您直接启动 Arch Linux(请按照以下说明操作: GRUB/技巧和窍门#GRUB 独立)。 此内置引导加载程序有时在从 USB 启动时会出现问题,因此在您的 OS X 分区上安装 rEFInd 可能是个好主意。 您可能需要降低超时时间并将 Linux 设置为默认选项,为此您必须编辑 refind.conf 文件(请参阅 REFInd#配置)。

成功安装 Arch 和 Grub 之后,您可以删除 rEFInd(首先确保您的独立 UEFI 应用程序出现在 Apple 引导加载程序中)。 要将默认启动选项更改为 Arch Linux,您需要 bless 之前创建的独立 UEFI 应用程序。 最好将创建的 EFI/arch_grub/grubx64_standalone.efi 重命名为 EFI/BOOT/BOOTX64.EFI,然后在挂载 EFI 系统分区后从 macOS 运行以下命令

# bless --folder=/Volumes/EFI --file=/Volumes/EFI/efi/BOOT/BOOTX64.EFI --setBoot

当通过 Apple 引导加载程序(而不是 rEFInd)启动时,您将以完整的 UEFI 模式启动,而不是 BIOS 兼容性。 这意味着您可能需要首次启动 archlinux-fallback 映像; 并 重新生成 initramfs 以成功地从 BIOS 切换到 UEFI。

分区和文件系统

有多种方法可以重新分区 iMac 驱动器,我最喜欢的方法(可能是因为它最简单并且图形化,因此很可能是最安全的)是启动 Ubuntu 7.10(或更高版本)LiveCD 并从桌面菜单运行 GParted。 我使用 GParted 和 Ubuntu LiveCD 缩小了 OS X、HFS+ 分区,创建了 Ext3、JFS 和 Linux Swap 分区,删除了并移动了 iMac 上的分区。 非常棒! GParted 对 HFS+ 文件系统的唯一现有限制是它只能缩小 HFS+ 文件系统而不能扩大它。 我相信不久之后这个限制也将不存在。

关于使用 GParted 或任何其他 GUI 类型的分区管理工具的注意事项,通常认为一次只 应用一个进程 是良好的安全实践。 对于那些不熟悉 GParted(及其同类应用)的人来说,这意味着您可以给它多个指令,这些指令会存储起来,直到您点击“应用”按钮,之后它会一个接一个地执行这些指令。 如果现在不明白,那么在使用 GParted 时很快就会明白。

我的 iMac 分区方案如下

分区...文件系统......大小.........挂载点

sda1 ........ *FAT32* ....... 200Mb .... EFI 系统分区 - 虽然 ESP 看起来像 FAT32 卷,但它实际上是一个 EFI 文件系统,您需要知道如何替换它,然后再删除它。 这意味着除非您确定自己知道自己在做什么,否则不要删除它,因为它将来可能对 Apple 固件更新至关重要。 目前,ESP 是空的,固件直接启动 OS X!? 至少它只浪费了 200Mb 的驱动器空间,但更重要的是,它算作 Apple 新采用的 GPT 分区方案可以看到的四个分区之一。 有关 GPT 的更多信息,请参见下一段。

sda2 ......... HFS+ ........... 50Gb ..... OS X - 在精简 OS X 并保留我使用的工具以及 iWork、CrossOver Games 和 Guild Wars 之后,我在这里有大约 25Gb 的可用空间可以玩,并且可以用于将来可能出现的奇怪游戏(Guild Wars 2)。 :D

sda3 ......... Ext3 ............ 15Gb ...... / - Arch - 目前有 12Gb 可用空间,但这是一个新安装。

sda4 ......... JFS .............. 30Gb ...... /home - 这对我来说应该足够空间了,而且我可以随时使用 GParted 调整大小。

sda5 ......... Linux Swap .... 2Gb ..... swap - 很少使用,但我有空间。 此分区是否需要存在值得怀疑。

在 iMac 上使用 Arch 和 1GB 内存几个月后,我删除了 /swap 分区,因为对于我的用途来说,它永远不需要。

sda6 ......... Ext3 ............ 200Gb ...... /thevoid - 视频、音乐、不安全备份等的存储。

从 OS X 访问 Ext2/3 文件系统

我一直在使用 Paragon-Software 的 ExtFS for Mac,它是一个商业软件包,易于安装、配置,并且在您启动 OS X 10.4.11 或更高版本在 Intel Mac 上时,以读/写方式自动挂载任何 Ext2/3 文件系统分区。 它对我来说运行非常出色,以至于我已经将我名为 /thevoid 的 200GB 分区从 JFS 重新格式化为 Ext3,以便我可以从 OS X 访问它。 对于任何感兴趣的人,您可以在 Paragon-Software 网站上获得试用版。

还有一个免费的软件应用程序,显然有点过时,但适用于 Ext2/3 并且适用于 OS X 10.5,它的名字是 ext2fsx。 我没有使用过 ext2fsx,所以我无法根据经验谈论它。

Apple 使用的 GPT 分区方案

[1] 曾经限制 OS X 只能使用 4 个分区来启动系统。 如果您没有让较旧的 Mactel Apple 机器升级很长时间,那么它们的固件仍然受到此限制(我被告知),您应该意识到这一事实。

因此,您需要确保将您的引导加载程序(即 GRUB/Lilo)以及您可能希望 OS X 看到的任何其他分区(如共享 FAT32 数据驱动器)安装在 sda3 和 sda4 上,Windows 也必须在 sda3 或 sda4 上。

超出 Apple(以前)施加的 4 个分区限制的分区仍然可以创建和使用,例如 Linux Swap 和其他分区,但它们将无法被 OS X 访问或直接启动,尽管我看不到任何理由 GRUB 这样的引导加载程序位于 sda3 或 sda4 上无法启动编号大于 sda4 的分区上的其他操作系统。

如果我们不允许我们的系统接受适当的 Apple 在线升级,这肯定会对我们能做什么施加限制。

如果您需要超过此有限方案允许的范围,您可以放弃 OS X,并仅在 MBR 上设置驱动器,使用带有 OS X 的外部驱动器来更新固件。

对于那些接受 Apple 在线升级的人来说,现在似乎可以将 GRUB、Lilo 或任何其他引导加载程序放置在超出第 4 个的分区中。 我说“似乎”,因为我被告知了这一点(并且没有阅读技术文档),没有阅读它,并且不准备在“我的”神圣的 Arch 机器上测试它。 :)

当我确认 Apple 确实对他们的固件进行了这些更改时,以上部分将被严重修改。

所以总结一下,如果您使用的机器固件已过时:并且您需要使用 sda3 和 sda4,请务必将任何交换分区放在分区号大于 sda4 的分区上。 此外,值得考虑完全不使用交换分区,因为只有运行 Linux/BSD 且具有 1GB RAM 的计算机使用其交换文件进行密集的专业工作,例如视频编辑、声音录制/编辑、3D 建模...

rEFIt 重新同步

分区完成后,您必须重新启动 iMac 并使用 rEFIt 重新同步您的分区,这既快速又容易:您选择在 rEFIt 启动菜单启动分区工具,然后按照那里的非常简单的说明进行操作。 rEFIt 可能更喜欢驱动器上的分区按数字顺序排列,即 sda1、sda2、sda3、sda4、sda5、sda6 ... 而不是打乱顺序。 这尚未证实,欢迎就此主题提供任何反馈。

然后重新启动并按住 C 键,或者像我一样等待 rEFIt 启动菜单出现,然后选择启动 Arch 安装 CD。

通过 EFI 启动时,这不是必需的。

控制屏幕背光和亮度

iMac 缺少用于控制屏幕背光的物理按钮。 根据计算机的版本/型号以及 Linux 的启动方式,背光的亮度可能容易控制,也可能不容易控制。 请参阅 背光 以了解各种选项。

backlight.c

以下是用于调整许多 LCD Apple 屏幕亮度的 C 代码小程序(我已经使用了 3 年多)。 它易于编译,并可以使用以下说明进行设置。

说明如下

将 C 代码(在这些说明下方找到)复制并粘贴到您的 /home。 将代码另存为文件,backlight.c

现在在 backlight.c 所在的目录中打开终端。

在终端中键入以下内容

gcc -o backlight backlight.c

您现在有一个名为 backlight 的程序。 它应该可以调整亮度。

要更改亮度,您必须具有对视频内存的直接访问权限,这意味着您必须是超级用户 (root)。

键入 su,然后在提示时输入您的 root 密码。

现在通过键入以下内容测试程序

./backlight 10

在终端中。

您可以给它从 1 到 15 的值。 找到您喜欢的值。

现在在终端中输入以下内容

cp backlight /usr/local/bin/

这会将程序复制到用户安装程序的标准位置。

接下来,在启动时运行它。 仍然以 root 身份,编辑 /etc/rc.local。 添加一行,内容为 /usr/local/bin/backlight N,其中 N 是您想要的亮度代码。

应该可以了。

来源

/*
* Apple Macbook Pro LCD backlight control
*
* Copyright (C) 2006 Nicolas Boichat <nicolas @boichat.ch>
* Copyright (C) 2006 Felipe Alfaro Solana <felipe_alfaro @linuxmail.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/

#include <stdio.h>
#include <sys/io.h>
#include <stdlib.h>

void init()
{
    if (ioperm(0xB2, 0xB3, 1) < 0)
    {
        perror("ioperm failed (you should be root).");
        exit(2);
    }
}

int get_current_value()
{
    outb(0x03, 0xB3);
    outb(0xBF, 0xB2);
    char t = inb(0xB3) >> 4;
    return t;
}

int calculate_new_value(const char *arg)
{
    int val, new = atoi(arg);

    if (arg[0] == '+' || arg[0] == '-')
        val = new + get_current_value();
    else
        val = new;

    if (val > 15)
        val = 15;
    else if (val < 1)
        val = 1;

    return val;
}

int main(int argc, char** argv)
{
    if (argc > 2)
    {
        printf("Usage:\n");
        printf("%s : read current value\n", argv[0]);
        printf("%s value : write value [0-15]\n", argv[0]);
        exit(1);
    }

    init();

    if (argc < 2)
    {
        printf("Current value : %d\n", get_current_value());
        exit(0);
    }

    if (argc == 2)
    {
        int value = calculate_new_value(argv[1]);
        outb(0x04 | (value << 4), 0xB3);
        outb(0xBF, 0xB2);
        printf("new value: %d\n", value);
    }

    return 0;
}

让声音正常工作

在 iMac 上使用 Linux 时,声音并不总是开箱即用就能正常工作。 例如,声音可能显得“单薄”或尖锐,高音过多而低音过少,这是因为内置低音炮默认情况下被静音,或者操作系统可能无法检测到耳机已插入。 解决方法通常是加载声音驱动程序,并使用额外的模型标志来指定相关的 iMac 型号,方法是操作 /etc/modprobe.d/sound.conf/etc/modprobe.d/modprobe.conf,重新启动计算机或声音系统,并使用 alsamixer 确保所有需要的通道都没有被静音。

iMac 20" 和 24" 型号

将以下内容添加到 /etc/modprobe.d/sound.conf

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

imac7,1 型号:

上面的选项可能会在 imac7,1 上产生微小的声音。 要在 imac 7,1 上获得类似 OSX 的丰富声音,请将以下内容添加到 /etc/modprobe.d/modprobe.conf

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

使用上述方法可以获得可用的 alsamixer。 我发现使用 VLC 及其混音器在观看 DVD 时非常有用。 我没有测试线路输出或麦克风,但我相信它们在这种配置下可以正常工作。

故障排除

如果您在引导加载程序之后遇到奇怪的引导冻结(基本上是在 Grub 加载 Linux 之后,您可以通过将 ignore_loglevel 附加到 Linux 命令行来验证),那么您可以通过重置 PRAM(在引导后立即按 Cmd+Alt+Shift+P+R)并重置电源管理系统(拔下 iMac 电源 15 秒,然后插回电源,等待 5 秒,然后再开机)来解决问题。

参见

关于在 iMac 上安装 Arch Linux 的论坛帖子