PocketPC←→PocketPC2002(←→Linux)
(FlashRom書き換え、iPAQ本体のみで行ったり来たり) (自己責任で。)
iPAQ36xxは、デフォルトのOSはPocketPC(2000)ですが、
コンパックより発売されていたアップグレードCD(日本語版は現在は販売終了)を
利用することでPocketPC2002にすることができるのは周知のことと思います。
またこのCDでPocketPC(2000)をバックアップしておけば
USB経由でPocketPC(2000)←→PocketPC2002と
行ったり来たりすることもできることもよく知られているかと思います。
ただ、この行き来にはFlasROMへの書き込みの為、失敗するリスクを伴います。
又、とても時間が掛かります。
実際、PocketPC関連サイトの掲示板等で失敗されたとの報告を
目にしたこともあるでしょう。リスク・時間を軽減しさらにお手軽に
iPAQ本体のみで行き来する方法を紹介したいと思います。
もちろんアップグレードCDを1度は使用しなければなりませんが。
(お持ちでない方、38xxの方は参考までということで。Linuxもいけるのでぜひ、一読を。)
iPAQのOSがPocketPC(2000)の状態である場合を例に説明していきます。
まずは、BootBlaster.exe(現在最新バージョンは1.19)を使って
WinCEをバックアップしておきます。
Flash - Save Wince .gz format
My Documents 下に wince_image.gz というファイルが生成されます。
これをCFにコピーしておきます。
〈念の為、母艦にもコピーしておくことをお勧めします。)
今度は、アップグレードCDを使って指示に従って2002へUPします。
(詳しくは説明しませんが…)、モバチキさんで解説されてます。
※アップグレードCDによる書き換えは、できるだけ慎重に行いましょう。
母艦の環境を整え他のタスクを終了させUSBはハブを介さずに行います。
また、標準のbootldr(BIOS)であるパロットでない場合は
パロットにもどしておく必要があります。
PocketPC2002へUPが完了したところでPocketPC(2000)の時と同様に
BootBlasterで wince_image.gz をバックアップし、CFへコピーしておきます。
PocketPC(2000)のものと区別できるようにPocketPC(2000)、PocketPC2002それぞれを
ppc2000.gz、ppc2002.gzとリネームしておくことにします。
これで前準備は完了です。
この後は、iPAQ本体のみで行き来で、これにはCFからのBootできるLinux。
つまりDUAL BOOTを使用して行います。どのDUAL BOOTイメージでもできると思いますが、
今回はこちらのDownloadで公開している ipaqfdisk.zip を例に紹介します。
※ipaqfdisk.zipのイメージはMemplugDualCFジャケットに対応してません。
MemplugDualCFジャケットを使用される方はganさんのFamiliar0.6.2の方の
イメージを使用されるのをおすすめします。
ホントに0からのsnes9x等を参考に標準のパロットをbootldrに書き換えておきます。
(bootldr_1.18.45.bin)
ipaqfdisk.zip を展開した中身の boot フォルダと linux.img
、
バックアップしてリネームしておいた ppc2000.gz をCFにコピーし、
iPAQに挿してCFからLinuxをBOOTさせます。
Terminalを起動して
# cd /mnt/hda/
# ls
ppc2000.gz が、あるのを確認。
# gunzip ppc2000.gz
ppc2000.gz を解凍。
# ls
で確認するとppc2000.gzの代わりにppc2000があるはず。
MTDドライバを使用してFlashROMを書き換えます。
# dd if=ppc2000 of=/dev/mtdblock/1
7分ほど、触らずにじっと待ちます。
# がでたら
# sync
# reboot
でそのまま放っておくと勝手にFlashROMから起動します。
(BootLoaderの画面でボタン4でも可)
PocketPC2002から無事、PocketPC(2000)へ書き換わったでしょうか?
同様にしてファイルを換えれば当然、PocketPC2002へも戻せます。
また、PocketPCのイメージだけでなくFamiliarのFlashROMのイメージである
.jffs2ファイルも同じように書き換えが可能で
シリアルケーブルなしでお手軽にLinux化できます。
例えば、
# dd if=bootgpe-v061-01.jffs2 of=/dev/mtd/block/1
として、シリアルで転送するよりかなり速く行うことができます。
Familiar0.61
-GPE、Opie、
Familiar0.7 -GPE、Opie、それぞれの.jffs2イメージで確認。
3分前後で書き換えることができます。(PocketPCのイメージは、7分前後)
やはり、シリアルやUSBよりかなり短時間でいけます。
(ただし、Linuxの初回のBootは時間が結構掛かるので気長に待ちましょう。)
例えばPocktPC(OS)ではなくFlashROMにOpieを入れてCFにXを入れての
Linux同士のDualBootもいけるということです。
この書き換え機能を現在BootLoader(bootldr2.20以降)に
組み込もうという動きがあります。
今のところ、まだちょっと問題がありますが近いうちに
更に手軽に行き来できるかと思われます。
以上の紹介させていただいた内容は、tagashiraさんの記事の
”MTDドライバを使ってFlashROMの書き換えをする方法”を参考に、
というか、具体的に試しただけです。
これは、かなり使えますのでぜひ!おすすめです。
ただ、PocketPC(2000)とPocketPC2002を行き来する必要がある方は
僕のように動作確認を趣味としている人ぐらいかなとも思いますが…。
最後にtagashiraさん、貴重な情報ありがとうございます。
これからも、よろしくお願いします。
(2003年7月8日)
(2003年10月15日 修正)