iPhone/Touch ディスク容量不足を解決しよう

ipod touch FW 2.2で確認済みです。

iPod touch記憶媒体フラッシュメモリ)は、2つに区切られています。
ssh(root/alpine)でログインし、dfコマンドで知ることができます。

# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/disk0s1         300M  272M   26M  92% /
devfs                 15K   15K     0 100% /dev
/dev/disk0s2          30G  150M   30G  1%  /private/var
ルート(/)にマウントされているdisk0s1がシステム領域、
/private/varにマウントされているdisk0s1が音楽や動画などを記録しているメディア領域です。
iPod touchにInstaller.appでアプリをインストールすると、
全て/Aplications以下(システム領域)へファイルが置かれます。
しかし、システム領域は全体で300MBしかなく、色々とアプリを入れていくと、
どうしても容量が不足してきます。
「Running Out of Disk Space!」のエラーが表示されます。
普通のやり方はアプリをメディア領域に移動することですが、
私の場合、PythonPHP・lighthttpなど開発ソフトを入れるので、
普通のやり方だと「物足りない」なので、下記の方法を使いました。
メディア領域の方へアプリだけではなく、
シェアファイル・壁紙・フォント等を移動しました。
手順は、以下のとおり。
$ ssh root@192.168.1.X (←iPod touch のIP)
(アプリの移動)
#/bin/mkdir /private/var/Applications
#/bin/cp -R -p /Applications/* /private/var/Applications
#/bin/rm -rf /Applications
#/bin/ln -s /private/var/Applications/ /Applications
(シェアファイルの移動)
#/bin/mkdir /private/var/usr/share
#/bin/cp -R -p /usr/share/* /private/var/usr/share
#/bin/rm -rf /usr/share
#/bin/ln -s /private/var/usr/share /usr/share
(ファントの移動)
#/bin/mkdir /private/var/Fonts
#/bin/cp -R -p /System/Library/Fonts/* /private/var/Fonts
#/bin/rm -rf /System/Library/Fonts
#/bin/ln -s /private/var/Fonts/ /System/Library/Fonts
(壁紙の移動)
#/bin/mkdir /private/var/Wallpaper
#/bin/cp -R -p /Library/Wallpaper/* /private/var/Wallpaper
#/bin/rm -rf /Library/Wallpaper
#/bin/ln -s /private/var/Wallpaper/ /Library/Wallpaper
#
#
(注意:iPhoneの場合のみ下記のRingtonesファイルを移動、Touchは存在しない)
#/bin/mkdir /private/var/Ringtones
#/bin/cp -R -p /Library/Ringtones/* /private/var/Ringtones
#/bin/rm -rf /Library/Ringtones
#/bin/ln -s /private/var/Ringtones/ /Library/Ringtones
(TextInput/の移動)
#/bin/mkdir /private/var/TextInput
#/bin/cp -R -p /System/Library/TextInput/* /private/var/TextInput
#/bin/rm -rf /System/Library/TextInput
#/bin/ln -s /private/var/TextInput/ /System/Library/TextInput
(iPhone/Touchを再起動)

FWバージョンによっては/etc/fstabが

/dev/disk0s1 / hfs rw 0 1
/dev/disk0s2 /private/var hfs rw,noexec 0 2

となっていた場合、下記のようにnoexecを取り除く必要があるようです。

/dev/disk0s1 / hfs rw 0 1
/dev/disk0s2 /private/var hfs rw 0 2
効果:かなりの容量を空け、システム領域の1/3容量が再生しました。
これで、余り空き容量を気にすることなく、
アプリとシステムソフトをどんどんインストールする事ができます。
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/disk0s1          500M  213M  283M  43% /
devfs                  17K   17K     0 100% /dev
/dev/disk0s2           30G  410M   30G   2% /private/var