在 Linux 中使用 iPod
便携式 MP3 播放器市场在过去几年中呈爆炸式增长,苹果公司的 iPod 被许多人认为是其他播放器与之比较的黄金标准。尽管苹果公司没有为其 iTunes 音乐应用程序提供 Linux 版本,但 iPod 仍然是各地 Linux 用户的优秀 MP3 播放器。
在我撰写本文时,我使用过配备点击式滚轮的 20GB 第四代 iPod 和 iPod Shuffle;但是,本文中描述的软件应该适用于所有 iPod。要使用 GTKPod 的简洁 GUI,您最好使用较新的 Linux 发行版。如果您是命令行爱好者,那么您应该可以毫无问题地让 GNUpod 在几乎任何运行 Perl 的系统上工作。
借助 GTKPod,iTunes 的开源替代品,您可以整夜摇滚,尽情享受 iPod 和 Linux。GTKPod 是一款简洁的 GUI,允许您将 MP3、WAV 和 M4A 非 DRM 加密的 AAC 文件从您的 PC 传输到您的 iPod。您可以一次添加一个文件,也可以一次添加整个目录。您可以创建和编辑播放列表,标准化单首曲目或多首曲目的音量。您还可以编辑 iPod 或计算机上文件的 ID3 标签。GTKPod 甚至足够智能,知道不要上传 iPod 上已存在的文件。当然,GTKPod 还允许您从 iPod 中删除歌曲,以防您的空间开始不足。
GTKPod 构建于 GTK2 之上。GTK 最初是为与 The GIMP 一起使用而开发的,现在已广泛应用于许多应用程序中,并且是用于构建 GNOME 桌面的工具集。GTK 确实是一款简洁的软件,但它也是一款复杂的软件,具有大量的依赖项、相互依赖项和各种繁琐的要求,以至于从源代码自行编译这些东西就像是掉进了兔子洞。幸运的是,如果您运行的是最新的 Linux 发行版,那么您计算机上应该已经安装了使用 GTK 应用程序(如 GTKPod)所需的一切。
如果您已经在使用 iPod,您可能已经拥有在 Linux 中使用它所需的一切:iPod 本身、支持 Firewire 或 USB 2.0 的 PC 以及相对较新的 Linux 发行版。您还需要 GTKPod 的副本(请参阅在线资源)。在 GTKPod 网站上,您应该找到大量文档和指向源代码的链接,以及适用于 SUSE、Debian、Gentoo、Mandrake 和其他流行的 Linux 发行版的 GTKPod 软件包。可以通过搜索 rpm.pbone.net 或 rpmfind.net 找到更多 RPM 软件包。
由于 iPod 只是一个花哨的移动硬盘,要在 Linux 中将其与 GTKPod 一起使用,您的内核需要支持花哨的移动硬盘。自 2.4 内核以来,内核中就已包含这种支持,并在当前的 2.6 内核中得到了改进。几乎所有当前的发行版都使用 2.6 内核,并且移动硬盘支持通常编译在内核中或作为可加载的内核模块提供。因此,您无需对系统进行任何操作即可使其识别 iPod。
您可以通过 Firewire 连接或 USB 2.0 连接将 iPod 连接到 Linux 电脑。USB 1.1 也有效,但我们不建议使用它,因为连接速度太慢了。使用 USB 1.1 的另一个缺点是 iPod 在插入 PC 时无法充电。
新 iPod 上的 FAT32
如果您的 iPod 刚刚开箱,您可能必须先对其进行配置,然后才能在 Linux 中使用它。“配置”听起来不错又容易,不是吗?事实上,您要重新格式化它。害怕吗?别害怕。
大多数新的 iPod 在出厂时,其硬盘都格式化为 Mac OS 文件系统 HFS+。要在 Linux 中使用刚刚开箱的 iPod,您的内核需要具有 HFS+ 支持以及对 Mac 样式分区的支持。大多数现代发行版不会自动包含此支持,并且需要重新编译内核才能启用它。此外,据报道,HFS+ 内核支持仍然有点错误。如果您不想仅仅为了使用新玩具而重新编译内核,那么有一种更简单的方法。
由于大多数版本的 Microsoft Windows 对读取/写入 Mac 文件系统嗤之以鼻,因此 iTunes 软件在 Windows 系统上安装时所做的第一件事就是配置 iPod。iTunes 说的是“配置”,但它真正做的是将 iPod 的内部硬盘重新格式化为 FAT32 Windows 文件系统。因此,如果您刚刚从包装盒中取出 iPod,并且手边有一台 Windows 机器,则可以使用 iTunes 软件安装过程来格式化 iPod。iPod Shuffle 在出厂时已预先格式化为 FAT32 文件系统,因此您应该能够开箱即用。
重新格式化 iPod 也可以使用 Windows iPod 软件中的“恢复 iPod”功能来完成。但请注意,此步骤会完全擦除 iPod,导致您丢失所有歌曲和文件。如果您一直在 Mac 上使用 iPod,现在想在 Linux 中使用它而不重新格式化它,请查看在线资源,获取其他 Mac 用户这样做的技巧链接。如果您拒绝使用 Windows 或 Mac OS,或者手边没有 Windows 机器,则资源中还包含有关如何仅使用 Linux 重新格式化 iPod 的链接。这是可能的,但这确实需要在您的内核中具有 HFS+ 和 Mac 分区支持,并使用 GNUPod 工具在 iPod 的空白磁盘上布置基本目录结构。
无论您是编译源代码还是安装预编译的二进制软件包,安装 GTKPod 都应该没有问题。GTKPod 需要 libid3tag 库,如果您计划使用 AAC 文件,则需要 libmp4v2 软件包(请参阅资源)。GTKPod 的源代码可以使用标准
./configure make make install
命令轻松编译。适用于您平台的预编译二进制文件应该比这更容易安装,并提供与现有桌面更紧密的集成。
一旦 iPod 格式化为 FAT32 并安装了 GTKPod,请将提供的 Firewire 或 USB 电缆插入您的 PC,并将另一端插入 iPod。如果 Linux 识别到 iPod,您应该会看到 iPod 屏幕闪烁消息“请勿断开连接”;在 iPod Shuffle 上,状态指示灯呈橙色闪烁。如果您的 iPod 没有这样做,请尝试拔下并重新插入。我的 20GB iPod 使用的是 Firewire 而不是 USB,因为大多数在线资源都提供了使用它的说明。此外,如果您只有一个活动的 Firewire 设备,则在断开 iPod 连接时会更容易一些。iPod Shuffle 的连接就像 USB 拇指驱动器一样简单且可预测。如果您在让 Linux 识别 iPod 时遇到问题,请参阅本文的“故障排除”部分。
如果您使用的是已格式化为 FAT32 的基于磁盘的 iPod(请参阅侧边栏),则驱动器上有两个分区。一个约为 40MB,用于保存 iPod 的固件操作系统,第二个是一个巨大的分区,用于保存您的所有音乐。如果您使用的是 iPod Shuffle,则只有一个分区,并且出厂时已格式化为 FAT32。
每台计算机都略有不同,因此我建议跟踪您的 /var/log/messages 文件,或 Linux 发行版的类似文件,以查看首次连接 iPod 时后台发生的情况。日志文件应指示您的系统已识别 iPod 并为其分配了下一个可用的 SCSI 驱动器盘符,如果您只运行 IDE 驱动器,则为 /dev/sda。某些系统使用 fstab-sync 实用程序自动编辑 /etc/fstab 文件,以包含 iPod 的挂载点。其他系统则要求您的 /etc/fstab 文件中已存在特定条目。如果您正在跟踪 /var/log/messages 文件,但没有看到类似这样的内容飞过
fstab-sync[4284]: added mount point /mnt/ipod for /dev/sda2
那么最好手动向您的 /etc/fstab 文件添加一行,以指示这一点
/dev/sda2 /mnt/ipod vfat rw,user 0 0
请记住,对于基于磁盘的 iPod,您只想挂载保存大量音乐的分区 (sda2),而不是保存操作系统的小分区 (sda1)。对于只有一个分区的 iPod Shuffle,如下所示的条目应该可以解决问题
/dev/sda1 /mnt/ipod vfat rw,user 0 0
如果您尚未执行此操作,请通过运行以下命令创建挂载点 /mnt/ipodmkdir /mnt/ipod作为 root 用户。
默认情况下,GTKPod 会查找挂载在 /mnt/ipod 上的 iPod,但您可以更改此值。挂载 iPod 最简单的方法是让 GTKPod 为您完成。为此,启动 GTKPod 并选择“编辑”,然后选择“编辑首选项”。在“输入/输出”选项卡中,选中标记为“处理 iPod 驱动器的挂载/卸载”的框。再次启动 GTKPod,您的 iPod 将自动为您挂载。
GTKPod 有许多选项和功能,了解它的最佳方法是将一些音乐放入 iPod。您很可能已经在计算机上拥有大量 MP3 文件。GTKPod 仅处理 iPod 上的文件管理。要创建 MP3,您需要使用单独的程序,例如 Grip。要收听 MP3,GKTPod 依赖于 XMMS 等外部程序;您可以在 GTKPod 的首选项中指定您喜欢的 MP3 播放器。
一旦您拥有了一些要传输的 MP3,您可以使用“添加文件”按钮添加单个文件,或使用“添加目录”按钮一次添加整个目录。图 1 显示了 Beastie Boys 的专辑Hello Nasty正在添加到我新格式化的 iPod 中。当您单击“确定”按钮添加目录时,GTKPod 随后会处理文件,将它们添加到您的本地 iTunes 数据库(默认情况下位于 ~/.gtkpod/ 中),并在下部窗口窗格中按艺术家、标题、专辑或流派列出它们。该过程的下一步是单击“同步”按钮。此步骤执行从您的 PC 到 iPod 的实际文件传输;它还会将您 PC 上的本地 iTunes 数据库同步到您 iPod 上的数据库。这需要一两分钟才能完成,具体取决于您移动了多少音乐。当您的文件已成功移动完毕后,GTKPod 会在左下角显示“iPod 数据库已保存”。
不过,请勿立即移除 iPod。如果 iPod 仍然显示“请勿断开连接”,或者您的 Shuffle 的状态指示灯仍然呈橙色闪烁,请保持连接。请考虑您的 iPod 已作为移动硬盘挂载。您不会从系统中拔下正在旋转的硬盘,对吗?您首先需要确保 iPod 已卸载。如果您使用的是 GTKPod 内的自动挂载,只需退出 GTKPod,iPod 就会卸载。
此时,您的 iPod 仍应闪烁“请勿断开连接”警告。只有当此消息消失后,才能安全地拔下 iPod。删除此消息的方法是卸载处理移动硬盘的内核模块。如果您使用的是 Firewire,则模块为 sbp2,可以通过发出以下命令来删除modprobe -r sbp2在 root 终端中。只有当“请勿断开连接”消息消失并且您看到正常的 iPod 菜单时,您才能从 PC 断开连接。
借助 GTKPod,您可以在每次启动或停止程序时自动执行脚本。文件 ~/.gtkpod/gtkpod.in 和 ~/.gtkpod/gtkpod.out(如果这些文件不在您的主目录中,则为 /etc/gtkpod.in 和 /etc/gtkpod.out)会在启动或退出 GTKPod 时读取和运行。在启动时,脚本会在挂载 iPod 之前运行。因此,如果您需要在 Linux 中使用 iPod 之前加载内核模块或以其他方式处理您的系统,则这是执行此操作的位置。同样,将脚本放入 gtkpod.out 文件中可以使移除 iPod 变得轻而易举。
移除 iPod 后,您应该能够播放所有传输的曲目。如果事情没有按计划进行,请查看本文的故障排除部分或在线资源部分以寻求帮助。如果事情进展顺利,您将希望添加更多音乐。一旦您添加了更多音乐,您将希望探索 GTKPod 的一些功能来管理您的音乐。
要管理 iPod 上的文件,请使用 GTKPod 中的“读取”按钮读取 iPod 上 iTunes 数据库的内容。您现在应该看到您最近添加的曲目。最左侧的窗格显示选择了哪个播放列表。播放列表顾名思义,就是一组歌曲列表,组合在一起播放。选项卡式窗口窗格显示 iPod 上的音乐,这些音乐在其 iTunes 数据库中列出,并根据所选选项卡显示。默认情况下,有两个窗格,但您可以编辑首选项以添加更多窗格。我添加了一个窗格,总共三个,这样我就可以更仔细地浏览我的音乐。
创建播放列表使您能够成为自己的 DJ,并在您想听的时候播放您想要的混音。我不知道您怎么样,但没有什么比老派的东海岸说唱更能让我的一天充满阳光了。因此,我将为那些在办公室的黑暗日子里创建播放列表,那时我需要比一杯咖啡更能提神的东西。我单击“新建播放列表”以创建我的“老派说唱”播放列表,然后使用 GTKPod 浏览我的音乐以选择合适的歌曲(请参见图 2)。借助附加的排序窗口窗格,我可以按流派、艺术家和年份进行排序。我想听 Beastie Boys,但只听老歌,所以我单击 1986 并将其拖放到我的新播放列表上,复制了 13 个文件。现在我向下移动到 RUN-DMC 并执行相同的操作。到现在,我意识到我没有足够的说唱歌曲,所以我需要启动 Grip 并开始工作。
如果您已经使用另一个应用程序生成播放列表,您仍然可以在 GTKPod 中使用这些播放列表文件。GTKPod 应该可以毫无问题地将预先存在的 .m3u 或 .pls 文件添加为播放列表。只需单击“新建播放列表”,命名您的播放列表,然后单击“添加文件”并找到您要添加的播放列表文件。GTKPod 还允许您将现有播放列表导出为 m3u 格式。
我最喜欢的 GTKPod 功能之一是能够编辑 iPod 以及 PC 上 MP3 的 ID3 标签。ID3 标签是 MP3 文件的一部分,其中包含元数据,例如艺术家姓名、专辑名称、歌曲名称和专辑发行年份。您可以将 MP3 文件命名为世界上任何名称,GTKPod 和您的 iPod 仍然会根据 ID3 标签列出它。另一方面,如果您的 MP3 文件由于某种原因缺少 ID3 标签,则它不会正确列出,并在 GTKPod 中显示在空白标题下,或在 iPod 上显示在“全部”标题下。要解决此问题,只需单击 GTKPod 中要编辑的部分并开始输入即可。
如果您单击下部窗口窗格中的单个歌曲,则只会编辑该歌曲的 ID3 标签。如果您想为整组歌曲编辑同一字段,请单击并编辑其中一个排序窗口窗格中的该字段,更改将反映在底部窗口窗格中的所有歌曲中。您还可以使用“多重编辑”功能一次编辑多个文件的 ID3 标签。此功能是可选的,必须在您的首选项中启用,但它允许您一次选择多首歌曲(使用 Shift 键像在 Windows 中一样突出显示它们),并将一个字段(例如,艺术家)的编辑应用于每首选定的歌曲。
GTKPod 的另一个出色功能是您在苹果公司的 iTunes 软件中找不到的功能,即导出歌曲,将歌曲从 iPod 复制回您的计算机。当然,这可以通过简单地将 iPod 挂载为外部硬盘驱动器并四处查找直到找到要复制的确切歌曲来完成,但是使用 GTKPod 对要复制的歌曲进行排序和选择要容易得多。查看“文件”菜单,然后选择“从 iPod 复制曲目”。“编辑”菜单下的“从 iPod 完全删除”选项按预期工作,如果您需要更多空间来存放本周最喜欢的音乐风格,则可以释放 iPod 上宝贵的兆字节。
GTKPod 明显缺少的一项功能是管理从 iTunes 音乐商店购买的音乐的能力。此 iTMS 音乐使用 AAC 格式压缩,然后用一点 DRM 技术进行修饰,以限制您可以对其执行的操作。如果您从 iTunes 购买了大量音乐,并且想使用 GTKPod 管理它,您有两个选择。第一个是使用 iTunes 将音乐刻录到 CD,然后使用 Grip 等工具重新翻录。这有效,但除非您一次刻录和翻录整张专辑,否则 CDDB 数据库不知道如何处理您新刻录的 CD,并且您最终需要手动添加所有 ID3 标签。第二个选择是使用 Hymn 等程序从您购买的音乐中去除所有 DRM 丑陋之处。请注意,由于 Hymn 规避了 DRM,因此如果您的国家/地区存在供应商锁定法律(例如美国的《数字千年版权法案》),则使用它可能不合法。
如果您不太喜欢 GUI,并且更喜欢 shell 提示符的简洁优雅,请考虑 GNUpod,这是一组 Perl 脚本,可以轻松管理 iPod 上的音乐。GNUpod 的工具可以完成从创建保存 iPod 上音乐的目录结构到添加或删除音乐以及管理播放列表的所有操作。它通过从命令行将参数传递给各种 Perl 脚本来完成所有这些操作,例如这个脚本
gnupod_addsong.pl -m /mnt/ipod /tunes/rappers_delight.mp3
GNUpod 安装起来非常简单。GNU 人员提供的在线文档非常全面,并引导您完成从使 Firewire 工作到重新格式化 iPod 的所有操作。在撰写本文时,GNUpod 支持所有类型的 iPod,包括 Shuffle。当前版本的 GTKPod (0.87) 不支持 Shuffle,但很可能在您阅读本文时它会支持。
iPod + Linux = iPodLinux
iPodLinux 项目将 Linux 放入您的 iPod 中。它是 uClinux 内核的移植版本,已针对在 iPod 硬件上运行进行了自定义,并且它包含 Podzilla 作为 GUI 操作系统。iPodLinux 吹嘘能够在 Podzilla 和常规 iPod 操作系统之间双启动,因此如果您想尝试一些完全不同的东西,请尝试一下。
如果您确实遇到问题,请放松。我在让一切顺利运行时也遇到了一些小麻烦。请注意,某些驱动程序仍然有点不稳定。通过 Firewire 运行 iPod 时使用的模块是 sbp2 和 ohci1394。我的一个测试系统是 Red Hat Fedora Core 3 系统,运行使用 up2date 下载和安装的 2.6.10-1.741_FC3 内核。注意:此发行版的默认内核存在一个已知错误,该错误使通过 USB 使用 iPod 成为一场噩梦。大多数时候,都没有问题,尽管当我尝试通过运行以下命令卸载 sbp2 模块时,它会挂起modprobe -r sbp2以 root 用户身份。有一次,我不得不删除 ohci1394 并重新加载 ohci1394 驱动程序,以便我的系统识别 iPod。当然,您的结果可能会因内核版本或系统中 Firewire 卡的芯片组而异。
如果无论插入/拔出 iPod 或加载/卸载模块多少次都无法让 Linux 识别 iPod,请不要惊慌。我遇到了这种情况,我发现让系统识别 iPod 的一种万无一失的方法是在插入 iPod 的情况下启动计算机。这不是很优雅,但很有效。请关注您的发行版的发行说明,并考虑帮助诊断您遇到的任何错误。
本文的资源: /article/8210。
Bert Hayes 自 2.0 内核的黑暗时期以来一直是 Linux 用户和管理员。他是 RHCE,也是Snort for Dummies的合著者。他的爱好包括骑自行车和修复风冷大众巴士。