ホーム
 TOPへ 最終更新日:2003年10月26日



Contents
 
● iPAQ 向け Linux ディストリビューション "Familiar" インストール

  ※懸田剛・まえだひさこ著『iPAQで作る最強Linux PDA』(アスキー社)
    を参考にしています。

--------------------------------------------------------------------------------------------------

    1. 使用機器
    
        ・本体
        
            [ COMPAQ ]
                222527-291  Compaq iPAQ Pocket PC H3660
                    - Intel(R) StrongARM(R) 32ビットRISC プロセッサ SA-1110 206MHz
                    - 64MB SDRAM・32MB ROM
                    - 240×320 ドット・4096色(※H3800シリーズは65536色)
        
        ・クレードル/シリアルケーブル(COMPAQ純正)
        
            [ COMPAQ ]
                176482-B21  IPP シリアルクレードル(H3600シリーズ専用)
            
            ※iPAQ本体とPC間の通信に必要、H3800 の場合はシリアル/USB兼用の
              クレードルがあるために不要
            ※クレードルタイプだと装着時は本体下部のリセットボタンが押せないため
              以下のシリアルケーブルの方が便利な場合もあるかも?
            
                [ COMPAQ ]
                  < H3600用 >
                    191008-B21 IPP シリアル Auto-Sync (同期) ケーブル
                    236251-B21 IPP RS-232Cケーブル 
                  < H3800用 >
                    250178-B21 IPP ユニバーサル同期ケーブル H3800 専用

        ・拡張パック
        
            [ COMPAQ ]
                170339-B21  IPP CF拡張パック(本体付属・※H3800シリーズはオプション)
                170338-B21  IPP PCカード拡張パック(オプション)
            
            ※PCカード拡張パックは CF で問題ない場合は必要ないかもしれないが、
              無線LANが CF では繋がらないのに PC カードでは繋がった、という
              Web上の情報があったため、動作比較のために購入
        
        ・メモリカード
        
            [ I・O DATA ]
                CFS-128M        CF メモリカード 128MB
            
            ※ WinCE 及びブートローダバックアップ用には 32MB+α程度の容量が必要
              なので、余裕をみてこのサイズを購入
        
        ・無線LANカード
        
            [ I・O DATA ]
                WN-B11/CF       CF 無線LANアダプタ
                    - Intersil 製 PRISM 2.5 
                    - 直接拡散型スペクトラム拡散方式(DS-SS方式)
                    - IEEE 802.11b準拠
                    - 伝送周波数 2.4GHz帯 1〜14ch 
                    - 通信速度 1Mbps, 2Mbps, 5.5Mbps, 11Mbps (自動切換) 
                    - SS ID, WEP 64/128bit 対応
            
            ※iPAQ の WinCE 上で試したところでは、どうも接続性に問題があり、
              アクセスポイントのすぐ近く(10cmくらい)で、手から離していないと
              うまく繋がらない。また、速度も1〜2Mbps。
              同じカードを PC 上で試すと、数m離れていても11Mbps で繋がるため、
              iPAQ(WinCE)用のドライバ(または CF用ジャケット(拡張パック)?)の
              問題の可能性が高い。

            [ メルコ ]
                WLI-PCM-L11     PC Card Type II 無線LANカード
                    - Lucent Technologies 製
                    - 直接拡散型スペクトラム拡散(DS-SS方式)、単信(半二重)
                    - IEEE802.11b準拠
                    - ARIB STD-T66/RCR STD-33(ワイヤレスLANシステム規格)準拠
                    - 周波数範囲 2,412〜2,484MHz(1〜14ch)
                    - SS ID, WEP 64bit 対応
                
            ※これは今回購入ではなく、たまたま手元にあったもの。チップメーカが
              異なることもあり、上記 CF のものと比較の意味で使用予定。
        
        ・PC(母艦)
        
            [ SONY ]
                PCG-R505S/PD    ノートPC(Pentium!!! 1GHz・HDD 40GB・384MBメモリ)
                ※ Windows XP 上で TeraTerm によりカーネルインストール等時の
                   ターミナルとして使用
            
            [ Panasonic ]
                CF-M1ER         ノートPC(Pentium!!! 500MHz・HDD 8GB・192MBメモリ)
                CF-VEBU01J      I/Oボックス(オプション)
                ※Red Hat Linux 7.3 をインストールしてクロスコンパイル環境等を
                  構築予定
        
--------------------------------------------------------------------------------------------------

    2. カーネルインストール
    
        2.1. 必要なファイル(アーカイブ)
        
            2002/9/10 現在で取得したファイルは以下のとおり。
            
            a) BootBlaster
                BootBlaster_1.18.exe                117,248バイト
                ※ ftp://ftp.handhelds.org/pub/linux/compaq/ipaq/v0.30/
                ※ http://www.handhelds.org/pub/bootblaster/ にも.tar.gz 形式有り
                
                iPAQ 上の Pocket PC データ(DRAM・Flash ROM上の WindowsCE関連
                及びブートローダ(Parrot Bootldr))をバックアップしたり、ARM 
                Bootloader をインストールするのに使用する。
                
                備考)
                    Windows CE 上で実行するため、Linux インストール後の iPAQ では
                    当然ながら使用できない。
                    ちなみに、 Linux インストール後は、boot プロンプト(Serial 
                    Bootloader Console)より、
                    boot> load bootldr
                    コマンドにより、シリアル・X modem 経由で PC からブートローダを
                    転送して書き換えることが出来る(ブートローダをバージョンアップ
                    する場合など)。
                
            b) ARM Bootloader
                bootldr-2.19.8.bin                  213,248バイト
                ※ http://www.handhelds.org/pub/bootldr/
                
                標準のブートローダ(Parrot Bootldr)と置き換えて使用するもの。
                上記のバージョンでは、
                
                1. Serial Bootloader Console
                    → boot プロンプトを起動するモード
                       ※シリアル接続した PC 上ターミナルより、boot プロンプトを
                         介してやり取りする。
                         ルートパーティションのインストールや、ブートローダの
                         アップデート等に使用。
                2. Boot IDE
                    → PC カードの IDE ドライブ上の 1st パーティションより 
                       zimage を読み込んで起動するモード
                3. Boot VFAT HDD/CF
                    → FAT16 でフォーマットされた CF の /boot から、zimage を
                       読み込んで起動するモード
                4. Boot Flash ROM
                    → Flash ROM から起動するモード
                
                という起動方法がある。
                
                    ブートローダの更新は、上記 1. モードで起動した後、
                    boot> load bootldr
                    コマンドで実行できる。
                
            c) ルートパーティション
                task-bootstrap.jffs2                6,291,456バイト
                task-bootstrap.jffs2.md5            55バイト
                ※ http://familiar.handhelds.org/familiar/releases/v0.5.3/install/H3600/install.html
                ※ Windows 版の MD5 チェック用ツール→http://www.shodoya.jp/loft/
                
                Familier のルートパーティションイメージ。
                
        2.2. BootBlaster のインストール
        
            iPAQ の Windows CE 上に BootBlaster をインストールする。
            
            2.2.1. CF メモリカードの準備
            
                母艦 PC が Windows の場合は特に必要なし(ただし、CF メモリカードの状態に
                よってはフォーマットが必要かもしれない)。
                
                母艦 PC が Linux の場合、CF メモリカードを PC カードスロットに挿した後、
                
                # fdisk /dev/hde
                
                で、パーティションを確保する。
                
                ※今回は、Windows 用とLinux 用に半分ずつ確保した
                     デバイス ブート   始点      終点  ブロック   ID  システム
                    /dev/hde1             1       246     62960    b  Win95 FAT32
                    /dev/hde2           247       492     62976   83  Linux
                
                その後、
                
                # mkdosfs /dev/hde1
                # mke2fs /dev/hde2
                
                でそれぞれ DOS / Linux 用ファイルシステムを作成する。
                
                # mkdir /mnt/cf_vfat
                # mkdir /mnt/cf_ext2
                
                のようにマウントポジションを準備し、マウントする。
                
                ※次のようなシェルスクリプト(mount_cf.sh)を用意しておくと便利。
                
                    #! /bin/bash
                    mount -t vfat /dev/hde1 /mnt/cf_vfat
                    mount -t ext2 /dev/hde2 /mnt/cf_ext2
            
            2.2.2. BootBlaster のコピー
            
                母艦 PC から CF メモリカード(の DOS 領域)に、
                - BootBlaster_1.18.exe
                - bootldr-2.19.8.bin
                をコピーする。
                
                ※なお、母艦 PC が Linux の場合には、カードを抜く前にアンマウントするのを
                  忘れないこと。
                  次のようなシェルスクリプト(umount_cf.sh)を用意しておくと便利。
                    #! /bin/bash
                    umount /mnt/cf_vfat
                    umount /mnt/cf_ext2
                    cardctl eject
                    sync
                
                これを iPAQ 側に挿し変えて、上記のファイルを My Documents フォルダ下に
                コピーする。
                ※ BootBlaster では My Documents 以下のフォルダしか認識出来ない模様。
        
        2.3. ARM Bootloader のインストール
            
            iPAQ の標準ブートローダ(Parrot Bootloader)を、ARM Bootloader と置き換える。
            
            2.3.1. Windows CE のバックアップ
            
                a)  2.2. で iPAQ にインストールした BootBlaster を実行する。
                
                b)  Flash → Save Bootldr により、オリジナルのブートローダを保存する。
                
                c)  Flash → Save Wince .gz Format により、Windows CE イメージを保存する。
                
                    ※多少時間がかかるが、ダイアログが出るまで待つこと。
                
                d)  File → Exit で一度 BootBlaster を終了し、My Documents 下に保存された
                    - saved_bootldr.bin
                    - wince_image.gz
                    を、CF メモリカード上に移動する。
                
                    ※作成したイメージは、リストアに備えて母艦 PC 上に保存しておく。
            
            2.3.2. ブートローダの書き込み
            
                a)  BootBlaster を実行する。
                
                b)  Flash → Program で、警告表示に『はい』で答えた後のダイアログで、
                    書き込むブートローダファイル(ここでは bootldr-2.19.8.bin)を選択する。
                
                    ※この後はダイアログが出るまでリセット・電源断などが起こらないように
                      気をつけること。
                
                c)  書き込みが完了したら、
                    You apper to have a valid OHH Bootloader 2.19.8 in flash. ...
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    という表示が出ることを確認する(Flash → Verifyでも確認できる)。
                
                    ※もし valid 表示が無ければ、サイド書き込みを実行すること。
                
                d)  アクションボタンを押しながらリセットし、ペンギンマークのブートローダ
                    画面が起動することを確認する。
        
        2.4. ルートパーティションのインストール
        
            2.4.1. 母艦側 PC の準備
            
                母艦側の PC で、シリアル接続可能で、XMODEM が使えるターミナルソフトを
                準備する(WindowsならTera Term、Linux なら minicom 等)。
                
                ※シリアルポートの設定は以下のとおり。
                    - ポート(デバイス)  COM1(/dev/ttyS0)等有効なポート(デバイス)
                    - 通信設定          115200 bps/8bit/NON Parity/STOPビット1
                                        フロー制御はハード・ソフト共に OFF
            
            2.4.2. シリアル接続の確認
            
                a)  iPAQ で 2.3.2.d) のようにブートローダ画面を起動し、母艦 PC 側と
                    シリアルコネクタで接続する。
                
                b)  母艦 PC 側のターミナルソフトで、help[Enter]等として、正常に接続
                    出来ていることを確認する。
            
            2.4.3. パーティションインストール
            
                a)  以下のコマンドにより、パーティションのリセットを行う。
                
                    boot> partition reset
                    defining partition: bootldr
                    defining partition: root
                
                b)  以下のコマンドにより、XMODEM 経由でルートパーティションイメージ
                    (ここではtask-bootstrap.jffs2)を母艦PCから iPAQ に転送する。
                
                    boot> load root
                    partition root is a jffs2 partition:
                     expecting .jffs2 or wince_image.gz.
                     After receiving file, will automatically uncompress .gz images
                    loading flash region root
                    using xmodem
                    ready for xmodem download..
                
                    ※ XMODEM 経由での Upload 方法は、ターミナルソフトの種類によって
                       異なるので、予め調査しておくこと。
                       
                       例1) Windows 版:Tera Term Pro version 2.3
                      
                        “ready for xmodem download” が表示されたら、
                        
                        File → Transfer → XMODEM→Send
                        
                        で、送信するファイルを選択する。
                    
                       例2) Linux 版:minicom version 2.00.0
                      
                        “ready for xmodem download” が表示されたら、
                        
                        CTRL-A S → xmodem
                        
                        で、送信するファイルを選択する。
                        
                        ※ディレクトリ移動は対象ディレクトリ名上でスペースキー2回。
                        ※ファイル選択はスペースキー1回。反転するので、そのまま
                          Okayを選択して Enter キーを押す。
                        ※予め、CTRL-A O → Filenames and paths で、Upload directory
                          を定義しておいたほうが無難。
                        ※ xmodem upload の窓は、送信が完了しても自動では閉じない。
                          送信完了したら“すぐに”Enter キーを押して閉じておかないと、
                          ROM への書き込み経過がモニタできない。
                          (自動で閉じる設定があるのかも知れないが、解らなかった)
                          
                          送信完了後もしばらく窓を開いたままにしておいた場合、その後
                          うかつに画面通りに Enter キーを押してしまうと、ROMへの書き
                          込みが止まってしまうようなので、注意すること。
                          ( Upload は結構時間がかかるので、なんとかしたいが……)
                    
                c)  アップロード及び書き込みが終了し、最後に
                
                    verifying ...
                    formatting ... done.
                    
                    が表示されることを確認する。
                    
                    ※表示されていなければ、b) をもう一度行う。
                
                d)  以下のコマンドを入力する。
                
                    boot> boot
                
                    この後、しばらく待って、login プロンプトが表示されたら、ログインが
                    出来ることを確認する。
                
                    familiar login: root
                    Password:
                    PAM_unix[120]: (login) session opened for user root by LOGIN(uid=0)
                    login[120]: ROOT LOGIN on `ttySA0'
                    
                    #
                
                    ※ login 名は"root"、パスワードは"rootme" である。

--------------------------------------------------------------------------------------------------

    3. PPP 接続の設定
    
        3.1. 母艦 PC 側の設定
        
            a)  PPPサポートがサポートされているかどうかを確認する。
            
                # ll /lib/modules/2.4.18-3/kernel/drivers/net/|grep ppp
                -rw-r--r--    1 root     root        11184  4月 18 20:45 ppp_async.o
                -rw-r--r--    1 root     root         5932  4月 18 20:45 ppp_deflate.o
                -rw-r--r--    1 root     root        31260  4月 18 20:45 ppp_generic.o
                -rw-r--r--    1 root     root         9300  4月 18 20:45 ppp_synctty.o
                # ll /lib/modules/2.4.18-3/kernel/drivers/net/|grep slhc
                -rw-r--r--    1 root     root         7836  4月 18 20:45 slhc.o
                
                のようなファイルが存在すれば、とりあえず OK(カーネルバージョン等は環境に
                よって異なる)。
                
                もしくは、
                
                # cd /usr/src/linux-2.4
                
                で、
                
                # make menuconfig
                や
                # make xconfig
                
                によって、Network device support → PPP (point-to-point protocol) support
                を確認する。
                
                ※もし存在しなければ、カーネルの再構築が必要。
            
            b)  以下のように、iPAQ への接続用設定ファイルを作成する。
            
                # vi /etc/ppp/peers/ipaq
                
                で、内容を
                
                -detach
                noauth
                nocrtscts
                lock
                user ppp
                connect '/usr/sbin/chat -v -t3 ogin--ogin: ppp'
                /dev/ttyS0
                115200
                192.168.1.1:192.168.1.10
                
                とする。
                
                ※最後の IP アドレスは、とりあえず何でも良い(左は母艦、右が iPAQ)。
            
        3.2. PPP 接続の確認
        
            a)  母艦 PC 側から、以下のコマンドを打ち込んで、PPP 接続が確立することを確認
                する。
                なお、2.4.3 で Serial Bootloader Console からログインした状態の場合には
                一度ログアウトした後、ターミナルソフトを終了(シリアルポートを解放)して
                おくのを忘れないこと。
            
                # pppd call ipaq &
                Serial connection established.
                Using interface ppp0
                Connect: ppp0 <--> /dev/ttyS0
                Deflate (15) compression enabled
                local  IP address 192.168.1.1
                remote IP address 192.168.1.10
                
                のように表示されればOK。
                
                ※接続確立時の /var/log/messages は以下のようになる。
                
                    Sep 27 18:54:17 localhost pppd[4060]: pppd 2.4.1 started by foo, uid 0
                    Sep 27 18:54:18 localhost chat[4061]: expect (ogin)
                    Sep 27 18:54:21 localhost chat[4061]: alarm
                    Sep 27 18:54:21 localhost chat[4061]: send (^M)
                    Sep 27 18:54:21 localhost chat[4061]: expect (ogin:)
                    Sep 27 18:54:21 localhost chat[4061]: ^M
                    Sep 27 18:54:21 localhost chat[4061]: familiar login:
                    Sep 27 18:54:21 localhost chat[4061]:  -- got it
                    Sep 27 18:54:21 localhost chat[4061]: send (ppp^M)
                    Sep 27 18:54:21 localhost pppd[4060]: Serial connection established.
                    Sep 27 18:54:21 localhost pppd[4060]: Using interface ppp0
                    Sep 27 18:54:21 localhost pppd[4060]: Connect: ppp0 <--> /dev/ttyS0
                    Sep 27 18:54:21 localhost /etc/hotplug/net.agent: assuming ppp0 is already up
                    Sep 27 18:54:21 localhost modprobe: modprobe: Can't locate module ppp-compress-21
                    Sep 27 18:54:21 localhost modprobe: modprobe: Can't locate module ppp-compress-21
                    Sep 27 18:54:21 localhost pppd[4060]: Deflate (15) compression enabled
                    Sep 27 18:54:21 localhost pppd[4060]: local  IP address 192.168.1.1
                    Sep 27 18:54:21 localhost pppd[4060]: remote IP address 192.168.1.10
                
                ※今回使用した Familier のルートパーティション(v0.5.3)では、iPAQ 側は特に
                  何も設定を変更する必要は無かった。
            
            b)  試しに
                
                $ ping 192.168.1.10
                
                で、応答が返ることを確認する。
        

--------------------------------------------------------------------------------------------------

    4. ssh 接続の確認
    
        4.1. ssh ログインの確認
        
            3. によって PPP 接続を確立後、slogin コマンドで iPAQ 側にログインできることを
            確認する。
            
            # slogin root@192.168.1.10
            root@192.168.1.10's password:
            
            ※初回のみ、
            
                The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
                DSA key fingerprint is 15:6a:f8:56:88:a1:8e:6e:63:f4:2c:5e:3e:71:fb:e0.
                Are you sure you want to continue connecting (yes/no)?
                
                のような問い合わせがあるので、yes で答えると、
                
                Warning: Permanently added '192.168.1.10' (DSA) to the list of known hosts.
                
                と出た後でパスワード入力画面になる。
            
            パスワードを入力して、ログインプロンプトが出ることを確認する。
            
            ※再インストールした場合など、DSA host key が変更された旨の警告が出て、接続が
              できない場合がある。
              とりあえず、~/.ssh/known_hosts を削除すれば繋がるようになるが、もっとスマート
              な方法があるかも……。
        
        4.2. scp によるコピーの確認
        
            scp を使ってコピーが出来ることを確認する。
        
            $ echo "test text">>test.txt
            $ scp test.txt root@192.168.1.10:~/.
            root@192.168.1.10's password:
            test.txt             100% |********************************************************************************************|    10       00:00
            $ slogin root@192.168.1.10
            root@192.168.1.10's password:
            # ls
            test.txt
            # cat test.txt
            test text
            #

--------------------------------------------------------------------------------------------------

    5. IP マスカレードによるインターネットへの接続
        
        IP マスカレード機能を使って、母艦 PC を介して iPAQ からインターネットへの接続を
        確立する。
        これは主として、ipkg(Itsy Package Management System)を使用してパッケージをインストール
        するために用いる。
        
        構成の例は以下のとおり。
        
        ルータ/DNS     : 192.168.0.1
        母艦 PC eth0    : 192.168.0.10
        母艦 PC ppp0    : 192.168.1.1
        iPAQ ppp0       : 192.168.1.11
        
        5.1. 母艦 PC 側の設定
        
            a)  IP マスカレードがサポートされているかどうかを確認する。
            
                # cd /usr/src/linux-2.4
                
                で、
                
                # make menuconfig
                や
                # make xconfig
                
                によって、
                Networking options   --->
                - Network packet filtering (replaces ipchains)
                - IP: Netfilter Configuration   --->
                  - Connection tracking (required for masq/NAT)
                  -   FTP protocol support
                  - IP tables support (required for filtering/masq/NAT)
                  -   Full NAT
                  -      MASQUERADE target support
                のチェックを確認する。
                
                また、iptables の存在を確認する。
                
                # iptables --version
                iptables v1.2.5
                
                ※もしサポートされていなければ、カーネルの再構築が必要。
            
            b) IP マスカレードの設定を行うため、次のようなシェルスクリプトを作成・実行する。
                
                #! /bin/bash
                iptables -F
                iptables -t nat -F
                iptables -t nat -A POSTROUTING -s 192.168.1.10 -j MASQUERADE
                echo 1 > /proc/sys/net/ipv4/ip_forward
                
                実行後、以下のコマンドにてルーティングが正しく設定されているかどうか確認する。
                
                # iptables -t nat -L
                Chain PREROUTING (policy ACCEPT)
                target     prot opt source               destination
                
                Chain POSTROUTING (policy ACCEPT)
                target     prot opt source               destination
                MASQUERADE  all  --  192.168.1.10         anywhere
                
                Chain OUTPUT (policy ACCEPT)
                target     prot opt source               destination
                
                ※  なお、iptables を実行するとエラーが発生して、ルーティングが出来ない場合が
                    ある( ip_tables.o が busy である旨メッセージが出て、カーネルか iptables
                    のバージョンが古いのではないかなどと言われるが、実際にはカーネルや
                    iptables を Update または削除後再インストールしても解消されないこともある)
                    
                    解決策は今のところはっきりしない(ファイヤーウォールを無効にした状態で
                    試すとうまくいった例もある)。
                    
        
        5.2. iPAQ 側の設定
        
            # echo "nameserver 192.168.0.1" > /etc/resolv.conf
            
            のようにして、DNS アドレスを登録する。
            
            ※  なお、proxy サーバを使用している場合には、/etc/ipkg.conf 中、
                
                #option http_proxy http://proxy.tld:3128
                #option ftp_proxy http://proxy.tld:3128
                
                のコメント(#)を外し、"http://proxy.tld:3128"部分を使用しているProxyの
                設定に合わせて置き換える必要がある。
            
            

  Indexに戻る



ホーム  このページの先頭