5g Chinese Tutorial
From iPodLinux
![]() | This page is deprecated, and is no longer a recommended method for installation. For recent installation instructions please visit Manual Installation. |
本文是关于在5g(30Gå’Œ60G)上安装iPodLinuxçš„ä¸Â文教程。如果你有问题,请点击上方的discussionå‚加讨论(需è¦Â注册)。注æ„Â,这个教程ä¸Â是核心开å‘组官方文档(英文)的一部分。
This article is a complete tutorial for installing iPodLinux on IPOD 5g (both 30G and 60G).
Contents |
安装Linux基本系统
安装原çÂâ€
本文å‡设你的IPOD在windows下格å¼Â化过,并设置为disk mode。安装平å°是Ubuntu 5.10。在è¿Â行下é¢的æÂ¥éª¤æ—¶å¯能需è¦Â你有系统的rootÃ¦ÂÆ’é™Â。如果你在Windows下çâ€Â¨ipod,那么你的ipod的默认硬盘分区是这样的(下é¢是30G的硬盘,60G的硬盘与æÂ¤ç±»ä¼¼ï¼‰ï¼š
Disk /dev/sda: 30.0 GB, 30005821440 bytes 255 heads, 63 sectors/track, 3648 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 10 80293+ 0 Empty /dev/sda2 11 3648 29222235 b W95 FAT32
30G的硬盘共3648个cylinder,分为两个分区:
- å‰Â10个cylinder是第一个分区,被çâ€Â¨Ã¦Â¥å˜æâ€Â¾Ã¥Â¼â€¢Ã¥Â¯Â¼Ã¤Â¿Â¡Ã¦Â¯å’ŒAppleçš„IPODæ“Â作系统,在Windows下ä¸Âå¯è§Â。
- åŽé¢的是第二个分区,也就是你在Window下看到的那个移动硬盘(ipodè¦Â设置在disk mode),是FAT32æ ¼å¼Â,如果你çâ€Â¨Ã§Å¡â€žÃ¦ËœÂ¯Mac机器则是å¦一ç§Âæ ¼å¼Â。
我们è¦Âåš的是:
- 将第二个分区的大å°Â缩å°Â并在åÂŽé¢开辟一个ext2æ ¼å¼Â的新分区作为Linux分区。具体过程大致是先把它delete掉(注æ„Â删除第二个分区å‰Â请将其ä¸Â所有文件å¤Â制到其他地方,ç‰格å¼Â完毕å†Âå¤Â制回æÂ¥ï¼Œæ³¨æ„Âwindows下必须display hidden filesæ‰Â能看到其ä¸ÂéšÂè—Â的文件夹),然åÂŽé‡Â新开辟第二个分区和第三个分区。
- é‡Â写第一个分区,在Appleçš„OS引导代ç Â之å‰Â加入Linuxçš„loader(类似于lilo或者grub)。
- 最åŽ在我们的第三个分区上建立linuxæ“Â作系统。
调整分区
当ipodæÂՌϬusb上时ubuntu会自动mount第二个分区到/media/ipod。把它umount掉。注æ„Âä½ çš„ipod硬盘的设备åÂÂ称是:
第一分区 /dev/sdX1 第二分区 /dev/sdX2
X=a或者b,c…ç‰。XåŽé¢å·ç Âå¯能ä¸Â一样。下文åŒ。
首先备份你的第一分区ä¸Â的数æÂ®ï¼š
dd if=/dev/sdX1 of=ipod_boot_sector_backup bs=512 count=1
如果想æÂ¢å¤Â,使çâ€Â¨Ã¤Â¸â€¹Ã©Â¢å‘½ä»¤ï¼š
dd if=ipod_boot_sector_backup of=/dev/sd
ç„¶åŽ进入fdisk工具:
/sbin/fdisk /dev/sdX
p是查看分区列表,d是删除分区,n是建立分区(会寻问你新建的分区从哪里开始到哪里结æÂŸï¼Œæˆ‘的第二分区是从第11个cylinder到第3000个cylinder,11是必须的,因为11=10+1 :) 而3000å¯以根æÂ®ä½ éœ€è¦Â的第三分区大å°Â调整),t是设置分区类型(b是FAT32,你ä¸Âçâ€Â¨Ã¨Â®Â¾Ã§Â½Â®Ã§Â¬Â¬Ã¤Â¸â€°Ã¥Ë†â€ 区类型,默认就是ext2),çâ€Â¨a命令将第二分区设置为bootable。最åÂŽçâ€Â¨w命令将这些设置写入分区表。(注æ„Â我们没有动第一分区)。
ç„¶åŽ,
mkdosfs -F 32 /dev/sdX2 mke2fs /dev/sdX3 æ ¼å¼Â化分区
tune2fs -c 0 /dev/sdX3 将第三分区的自检次数设置为无穷,å¦则æ¯Âå¯动一定次数(我记得是30次),就会自检一次。
最åŽ将你以å‰Â备份的第二分区的数æÂ®æ‹·è´Â到新的第二分区ä¸Â。我得到的分区表是这样的(下é¢是30G的硬盘,60G的硬盘与æÂ¤ç±»ä¼¼ï¼‰ï¼š
Disk /dev/sda: 30.0 GB, 30005821440 bytes 255 heads, 63 sectors/track, 3648 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 10 80293+ 0 Empty /dev/sda2 * 11 3000 24017175 b W95 FAT32 /dev/sda3 3001 3648 5205060 83 Linux
æ–Âå¼€usbèÂâ€Ã¦Å½Â¥Ã¯Â¼Å’ipodåºâ€Ã¨Â¯Â¥Ã¨Â¿ËœÃ¦ËœÂ¯Ã¥Â¯ä»¥è‡ªå·±å¯动(按ä½Âä¸Â间的按钮和menuä¸Âæâ€Â¾Ã¥Â°Â±Ã¥Â¯ä»¥é‡Âå¯)到appleçš„os里é¢,因为我们还没有修æâ€Â¹Ã§Â¬Â¬Ã¤Â¸â‚¬Ã¥Ë†â€ 区的å¯动信æÂ¯ã€‚你的音ä¹Â,视频,图片和æ’Âæâ€Â¾Ã¥Ë†â€”表还在那里,但èÂό•的设置å¯能æÂ¢å¤Â到默认了,关系ä¸Â大。
在IPOD的引导分区添加Loader 2
下载Loader2,展开åÂŽå¾—到loader.bin。å¦外,你需è¦Âmake_fw程åºÂ,在这里下载预编译的for x86的二进制代ç Â。然åŽ,执行下é¢的代ç Â:
dd if=/dev/sdX1 of=orig_firmware.bin 从第一分区ä¸Â得到apple的原始firmware。
./make_fw -o apple_os.bin -e 0 orig_firmware.bin ./make_fw -o apple_sw_5g_rcsc.bin -e 1 orig_firmware.bin å°†appleçš„os从firmwareä¸ÂæÂÂÃ¥ÂЌ༾¥。
./make_fw -g 5g -v -o my_sw.bin -i apple_os.bin loader.bin 把loader.bin加在apple oså‰Âé¢çâ€Å¸Ã¦Ë†Â一个新的引导程åºÂ。
dd if=my_sw.bin of=/dev/sdX1 将新的引导程åºÂ写入第一分区。
在IPOD的Linux分区安装Kernel和userland
如下图,é‡Âå¯ipodåŽ你å¯以看到èÂό•(ä¸Â过还没有iPodLinux选项),选择disk mode。
mount第三分区到æŸÂ个目录,æ¯â€Ã¥Â¦â€š/media/ipod-1。如果你çâ€Â¨ubuntu,进入disk modeåŽ会自åЍmount。
- 到这个网页下载kernelçš„nightly builds,æ¯â€Ã¥Â¦â€šÃ¦Ë†â€˜Ã§â€Â¨Ã§Å¡â€ž2006-05-17-kernel.bin.gz,解压缩åÂŽæ›´åÂÂ为kernel.bin,æâ€Â¾Ã¥Å“¨/media/ipod-1/下é¢。
- 下载userland到/media/ipod-1,tar -xvf 解压,会çâ€Å¸Ã¦Ë†Âbin, etc, varç‰目录。如果æŸÂ些文件的timestamp有问题,touch一下å³å¯。
ä½ çš„Linux基本系统就安装好了,umount掉é‡Âå¯就å¯以在loaderä¸Â看到iPodLinux选项,进去就å¯以看到下图的载入kernel的进程æÂ¡å’Œå¯åЍå—符串。ä¸Â过,为了得到图形界é¢,你还需è¦Â安装podzilla2。
安装podzilla2图形界é¢
建议你从nightly builds下载最新版本。æ¯â€Ã¥Â¦â€šÃ¦Ë†â€˜Ã¤Â¸â€¹Ã¨Â½Â½Ã§Å¡â€žÃ¦ËœÂ¯Ã¯Â¼Å¡
appearance-1223.tar.gz podzilla2-1223.gz pzmodules-1223.tar.gz
解压缩这三个文件:
- podzilla2-NNN.gz 文件解压åÂŽæâ€Â¹Ã¥ÂÂ为podzilla,设置å¯执行属性,æâ€Â¾Ã¥Å“¨ /media/ipod-1/bin/目录下。
- pzmodules-NNN.tar.gz 解压åÂŽçâ€Å¸Ã¦Ë†Â一堆文件夹,æâ€Â¾Ã¥Å“¨ /media/ipod-1/usr/lib/目录下,我把那个MPDcÃ¥ÂÂ文件夹给删除了,因为在我的机器上无法æÂ£ç¡®åŠ è½½ã€‚
- appearance-NNN.tar.gz 解压åÂŽçâ€Å¸Ã¦Ë†Â两个文件夹,æâ€Â¾Ã¥Å“¨/media/ipod-1/usr/share/目录下。
确定你的/media/ipod-1/etc/rc文件最åŽ一行是podzilla。
umount,é‡Âå¯你的机器,åºâ€Ã¨Â¯Â¥Ã¥Â¯ä»¥æÂ£å¸¸è¿›å…¥podzilla了。下图显示了podzilla2å¯动时的åˆÂ始化进程æÂ¡å’Œè¿Â行时的SettingsèÂό•:
下é¢是podzilla2ä¸Âçš„Cubeå’ŒMatrix程åºÂ
在本地PC上设置Cè¯Â言编译环境
为了在本地PC上编译能够在IPOD上执行的二进制代ç Â,我们需è¦Â在PC上设置Cè¯Â言的编译环境。下载toolchain,这是一个åŽ缀为.sh的脚本。su到rootå¸Âå·åÂŽè¿Â行这个程åºÂ,会在你的本地PC上的/usr/local目录下çâ€Å¸Ã¦Ë†Âarm-uclinux-tools2目录,需è¦Â的编译器,库文件,头文件ç‰ç‰都在里é¢了。
设置PATH(æ¯â€Ã¥Â¦â€šÃ¦â€Â¾Ã¥Å“¨.bashrcä¸Â):
export PATH=/usr/local/arm-uclinux-tools2/bin:$PATH
下é¢是测试的hello.c代ç Â:
#include <stdio.h>
int main(int argc, char **argv)
{
printf( "Hello World!" );
return 0;
}
çâ€Â¨Ã¤Â¸â€¹Ã©Â¢çš„命令编译链接:
arm-elf-gcc hello.c -o helloworld -elf2flt
å°†çâ€Å¸Ã¦Ë†Âçš„helloworldå¤Â制到你的ipodå³å¯。


