本文已經(jīng)轉(zhuǎn)移到了ipodlinux wiki的5g Chinese Tutorial頁(yè)面。你可以隨意修改它。
昨天閑著沒(méi)事,在我的IPOD Video(5g)上裝上了Linux(可以和IPOD原來(lái)的系統(tǒng)共存),還是滿好玩的。下面是how-to。
注意,本文僅僅適用于5g 30G。如果你需要我告訴你怎么在其他model上裝linux,你可以送我一個(gè)那種型號(hào)的ipod,我安裝成功后告訴你。如果你用下面的方法把你的ipod搞爆炸了,請(qǐng)先打911然后聯(lián)系apple,不要把醫(yī)藥費(fèi)的帳單寄給我
先show幾張圖(感謝snoopy一家借我充電電池和充電器)
ipodlinux.org網(wǎng)站和其他地方有一些現(xiàn)成的installer等東西進(jìn)行傻瓜安裝,但我不推薦,因?yàn)椋?/p>
2. 下文的方法還是比較傻瓜的,更重要的是你會(huì)一步步知道具體對(duì)你的ipod都做了什么,這比較符合DIY的精神。DIY=Destroy It Yourself。
我使用的是30G的IPOD Video,第一次使用前默認(rèn)在windows下格式化過(guò),ipod設(shè)置為disk mode。本文的安裝平臺(tái)是Ubuntu 5.10。在運(yùn)行下面的步驟時(shí)可能需要你有系統(tǒng)的root權(quán)限。如果你在Windows下用ipod,那么你的ipod的默認(rèn)硬盤分區(qū)是這樣的:
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個(gè)cylinder,分為兩個(gè)分區(qū):
2. 后面的是第二個(gè)分區(qū),也就是你在Window下看到的那個(gè)移動(dòng)硬盤(ipod要設(shè)置在disk mode),是FAT32格式,如果你用的是Mac機(jī)器則是另一種格式。
我們要做的是:
2. 重寫第一個(gè)分區(qū),在Apple的OS引導(dǎo)代碼之前加入Linux的loader(類似于lilo或者grub)。
3. 最后在我們的第三個(gè)分區(qū)上建立linux操作系統(tǒng)。
當(dāng)ipod插在usb上時(shí)ubuntu會(huì)自動(dòng)mount第二個(gè)分區(qū)到/media/ipod。把它umount掉。注意你的ipod硬盤的設(shè)備名稱是:
第一分區(qū) /dev/sdX1
第二分區(qū) /dev/sdX2
X=a或者b,c…等。X后面號(hào)碼可能不一樣。下文同。
首先備份你的第一分區(qū)中的數(shù)據(jù):
dd if=/dev/sdX1 of=ipod_boot_sector_backup bs=512 count=1
如果想恢復(fù),使用下面命令:
dd if=ipod_boot_sector_backup of=/dev/sd
然后進(jìn)入fdisk工具:
/sbin/fdisk /dev/sdX
p是查看分區(qū)列表,d是刪除分區(qū),n是建立分區(qū)(會(huì)尋問(wèn)你新建的分區(qū)從哪里開(kāi)始到哪里結(jié)束,我的第二分區(qū)是從第11個(gè)cylinder到第3000個(gè)cylinder,11是必須的,因?yàn)?1=10+1
而3000可以根據(jù)你需要的第三分區(qū)大小調(diào)整),t是設(shè)置分區(qū)類型(b是FAT32,你不用設(shè)置第三分區(qū)類型,默認(rèn)就是ext2),用a命令將第二分區(qū)設(shè)置為bootable。最后用w命令將這些設(shè)置寫入分區(qū)表。(注意我們沒(méi)有動(dòng)第一分區(qū))然后,
mkdosfs -F 32 /dev/sdX2
mke2fs /dev/sdX3
格式化分區(qū)tune2fs -c 0 /dev/sdX3
將第三分區(qū)的自檢次數(shù)設(shè)置為無(wú)窮,否則每啟動(dòng)一定次數(shù)(我記得是30次),就會(huì)自檢一次。
最后將你以前備份的第二分區(qū)的數(shù)據(jù)拷貝到新的第二分區(qū)中。我得到的分區(qū)表是這樣的:
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
斷開(kāi)usb聯(lián)接,ipod應(yīng)該還是可以自己?jiǎn)?dòng)(按住中間的按鈕和menu不放就可以重啟)到apple的os里面,因?yàn)槲覀冞€沒(méi)有修改第一分區(qū)的啟動(dòng)信息。你的音樂(lè),視頻,圖片和播放列表還在那里,但菜單的設(shè)置可能恢復(fù)到默認(rèn)了,關(guān)系不大。
下載Loader2,展開(kāi)后得到loader.bin。另外,你需要make_fw程序,在這里下載預(yù)編譯的for x86的二進(jìn)制代碼。然后,執(zhí)行下面的代碼:
dd if=/dev/sdX1 of=orig_firmware.bin
從第一分區(qū)中得到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中提取出來(lái)。./make_fw -g 5g -v -o my_sw.bin -i apple_os.bin loader.bin
把loader.bin加在apple os前面生成一個(gè)新的引導(dǎo)程序。dd if=my_sw.bin of=/dev/sdX1
將新的引導(dǎo)程序?qū)懭氲谝环謪^(qū)。
重啟ipod后你可以看到上圖的菜單(不過(guò)還沒(méi)有iPodLinux那個(gè)選項(xiàng)),選擇disk mode。mount第三分區(qū)到某個(gè)目錄,比如/media/ipod-1。如果你用ubuntu,進(jìn)入disk mode后會(huì)自動(dòng)mount。
到這個(gè)網(wǎng)頁(yè)下載kernel的nightly builds,比如我用的2006-05-17-kernel.bin.gz,解壓縮后更名為kernel.bin,放在/media/ipod-1/下面。
下載userland到/media/ipod-1,tar -xvf 解壓,會(huì)生成bin, etc, var等目錄。如果某些文件的timestamp有問(wèn)題,touch一下即可。
你的Linux基本系統(tǒng)就安裝好了,umount掉重啟就可以在loader中看到iPodLinux選項(xiàng),進(jìn)去就可以看到下面的啟動(dòng)字符串:
不過(guò),為了得到pp的圖形界面,你還需要安裝podzilla 2 too
建議你從nightly builds下載最新版本。比如我下載的是:
appearance-1223.tar.gz
podzilla2-1223.gz
pzmodules-1223.tar.gz
解壓縮這三個(gè)文件:
2. pzmodules-NNN.tar.gz 解壓后生成一堆文件夾,放在 /media/ipod-1/usr/lib/ 目錄下,我把那個(gè)MPDc子文件夾給刪除了,因?yàn)樵谖业臋C(jī)器上無(wú)法正確加載。
3. appearance-NNN.tar.gz 解壓后生成兩個(gè)文件夾,放在/media/ipod-1/usr/share/ 目錄下。
make sure你的/media/ipod-1/etc/rc文件最后一行是podzilla。
還沒(méi)有爆炸?good!umount,重啟你的機(jī)器,應(yīng)該可以正常進(jìn)入podzilla看到我抓的那些圖片了。
裝好基本系統(tǒng)和podzilla,你可以玩你的ipodlinux了(或者說(shuō)它玩你)。
下面教你怎么給你的ipod寫hello world的c程序。你需要下載toolchain,這是一個(gè)后綴為.sh的腳本。su到root賬號(hào)后運(yùn)行這個(gè)程序,會(huì)在你的本地PC上的/usr/local目錄下生成arm-uclinux-tools2目錄,你需要的編譯器,庫(kù)文件,頭文件等等都在里面了。
設(shè)置PATH(比如放在.bashrc中):
export PATH=/usr/local/arm-uclinux-tools2/bin:$PATH
下面是測(cè)試的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復(fù)制到你的ipod即可。
我不打算繼續(xù)hack下去了,因?yàn)椋?/p>
2. 過(guò)一段時(shí)間會(huì)有一個(gè)更好玩的東東寄到家里,那是真的為3D圖形處理設(shè)計(jì)的,而且有無(wú)線網(wǎng)絡(luò)和紅外驅(qū)動(dòng),在上面hack linux,裝上OpenGL,SDL什么的肯定要爽很多。
關(guān)于iPodLinux的所有信息都可以從下面的網(wǎng)站找到,盡管這個(gè)網(wǎng)站的內(nèi)容組織的不太好。
關(guān)鍵字: ipod video, ipodlinux, podzilla聯(lián)系客服
“在IPOD Video 30G上安裝Linux” 有 7 個(gè)回響