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。我已通过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上使用1GB RAM运行Arch几个月后,我删除了/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无法访问它们,也不能直接启动它们。不过,我认为像放在sda3或sda4上的GRUB这样的引导加载程序无法启动大于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。
backlight.c
下面是一个小程序C代码,可以调整许多LCD Apple屏幕的亮度(我已使用超过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是您想要的亮度数值。
这样就完成了。
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时,声音并非总是开箱即用的。例如,由于内置低音炮默认被静音,声音可能显得“单薄”或刺耳,高音过多而低音过少,或者操作系统可能无法检测到耳机已插入。修复方法通常是加载声音驱动程序,并指定相关的iMac型号的额外模型标志,通过操纵/etc/modprobe.d/sound.conf或/etc/modprobe.d/modprobe.conf来加载,重新加载相应的模块,并使用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秒,然后开机)来修复问题。