跳转至内容

iMac Aluminum

来自 ArchWiki
(从 IMac Aluminium 重定向而来)

本文或本节有合并到 Mac 的候选。

注意:本页面大部分内容与 Mac 重复,#使声音正常工作 应保留为 Laptop/Apple#Troubleshooting 的子章节,而 #Troubleshooting 的内容应添加到 Mac/Troubleshooting,因为它尚未在那儿提及,并且是 Apple 硬件的一个很好的通用建议。(在 Talk:IMac Aluminum 讨论)

本文或本章节已过时。

原因:本页面主要写于 2008 年至 2011 年之间:这里的大部分信息已不再相关。此外,Apple 认为其讨论的硬件自 7 年前最后一次销售以来已被视为过时。(在 Talk:IMac Aluminum 讨论)

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

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

来自 Wikipedia

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

删除 macOS

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

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

安装额外的引导加载程序

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

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

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

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

分区和文件系统

重新分区 iMac 硬盘有多种方法,我最喜欢的方法 (可能是因为它最简单,而且是图形化的,最安全) 是启动 Ubuntu 7.10 (或更高版本) LiveCD 并从桌面菜单运行 GParted。我已缩小了 OS X、HFS+ 分区,创建了 Ext3、JFS 和 Linux Swap 分区,并使用 GParted 和 Ubuntu LiveCD 在 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 的可用空间,用于将来可能出现的 odd game (Guild Wars 2)。:D

sda3 ......... Ext3 ............ 15Gb ...... / - Arch - 目前还有 12GB 可用,不过这是新安装的。

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

sda5 ......... Linux Swap .... 2Gb ..... swap - 很少使用,或者从不使用,但我有空间。这个分区是否需要存在还有待商榷。

在 iMac 上使用 1GB RAM 的 Arch 几个月后,我删除了 /swap 分区,因为对我来说它从未被需要过。

sda6 ......... Ext3 ............ 200Gb ...... /thevoid - 存储视频、音乐、不安全备份,随便什么...

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

我一直在使用 Paragon-Software 的 **ExtFS for Mac**,它是一个商业软件包,安装、配置简单,并且在您在 Intel Mac 上启动 OS X 10.4.11 或更高版本时,它会自动以读/写方式挂载任何 Ext2/3 文件系统分区。对我来说,它的运行效果非常好,以至于我将我 200GB 的 /thevoid 分区从 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 访问,或者无法直接引导,尽管我认为没有理由为什么像位于 sda3 或 sda4 上的 GRUB 这样的引导加载程序不能引导 sda4 之后的其他 OS。

这无疑限制了我们在不让系统接受适当的 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

backlight.c

下面是一个小程序的 C 代码,它可以调整许多 LCD Apple 屏幕的亮度 (我已经使用了三年多了)。使用以下说明很容易编译和设置。

说明如下

将 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 是您想要的亮度数值。

这样就完成了。

Source(生效配置)

/*
* 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 时,声音并非总是即插即用。例如,由于内置低音炮默认被静音,声音可能显得“单薄”或刺耳,高音过多而低音不足,或者操作系统可能无法检测到耳机已插入。修复方法通常是加载带有额外模型标志的声卡驱动程序,通过操作 /etc/modprobe.d/sound.conf/etc/modprobe.d/modprobe.conf 指定相关的 iMac 型号,然后重新加载相应的模块,并使用 alsamixer(1) 来确保所有期望的通道都没有被静音。

iMac 20" 和 24" 型号

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

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

imac7,1 型号

上面的选项可能会在 imac7,1 上产生微弱的声音。为了获得与 OSX 一样丰富的声音,请将以下内容添加到 /etc/modprobe.d/modprobe.conf

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

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

故障排除

如果您在引导加载程序之后不久出现奇怪的启动冻结 (基本上是在 Grub 加载 Linux 之后,您可以通过向 Linux 命令添加 ignore_loglevel 来验证),那么您可以通过重置 PRAM (在启动后不久按下 Cmd+Alt+Shift+P+R),并重置电源管理系统 (通过拔掉 iMac 电源 15 秒,然后重新插上,等待 5 秒,然后开机) 来修复这个问题。

参见

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