Debian(potato) on MobileGear

 

以前の物はslinkの時の物で内容が古くなってしまいました。
もっと楽なインストール手順が開拓されましたので、修正しました。
 

ざっと手順を説明すると、
 

1. Debianのbase systemをflashカードに展開する。
2. FlashにPocketLinuxのkernelを入れる。
3. rdevする。
4. liloする。


こんなものです。
 
 

[もうちょっとましな説明]

これ以降は、「SoftwareDesign (技術評論社/2000年12月号)」の
特集記事「ここまで来た!モバイル/PDAのUNIX」で掲載されたPocketLinuxの文章から
インストール手順の部分のみを切り出した物に修正を入れています。
 

うすいの使っているThinkPad535の環境では
/dev/hda1    debianシステム(普段使っているLinux)
/dev/hda2    windows
/dev/hdc1    pcmcia(Flash ATA, /mnt/cardにマウントされる)
となっています。
自分の環境にあわせて読み替えてください。
[母艦側の準備]
pcmcia-csが動作していてフラッシュカードが認識されることを確認。

base2_2.tgzを取得しておく。
   Debianのベースシステムです。
   ftp://ftp.ring.gr.jpなどからダウンロードしてください。
   main/disks-i386の中に入っています。

/dev/necmgが存在するかの確認
   初めてインストール際には間違いなく無いはずなので、
       mknod /dev/necmg b 78 83
       mknod /dev/necmg c 78 83
←こちらは間違い(^^;
   として作成しておきます。
   これは、フラッシュカードにブートマーカーを付けるためだけに必要なもので、それ以外の
   アクセスは一切しません。

kernel-image-2.2.16-plinux_Custom.1.00_i386.deb
  自分でカーネルとパッチをダウンロードして、そちらで構築した物を使用するというなら
  必須ではありません。

 
 1. フラッシュカードのfdiskとformat

    PCへのインストールと同様にfdiskします。

      hdc1   swap   約8MB
      hdc2   ext2   約88MB

    としました。hdc1/2というのは母艦上のデバイス名で、PocketLinux上では
    hda1/hda2
    になります。
    確保した後は忘れずに、

      mkswap /dev/hdc1
      mke2fs /dev/hdc2 -b 1024

    とフォーマットしてください。
    mke2fsでの"-b 1024"は、ブロックサイズの設定で、少ないストレージを少しでも無
    駄に使わないようにとの 悪あがきです(^^;

 
 2. ベースシステムの構築

    フラッシュカードをマウントしベースを展開します。

      mount /dev/hdc2 /mnt/card
      tar xvfz base2_2.tgz -C /mnt/card

    展開しただけの状態でブートしてもconfigされていない!とエラーメッセージが出て
    しまいますので、

      rm /mnt/card/sbin/unconfigured.sh

    として、適切な設定が された事にします。
 

    fstab, lilo.confを設定します。

    母艦側のfstab,lilo.confをフラッシュカードにコピーして編集するとラクです。
    編集する際には、fstabのデバイス名は母艦上でのフラッシュカードのデバイス名
    ではなく、hdaxになるという事に注意して編集してください。
    lilo.confは一つのファイル上に、母艦上でのデバイス名とMpbileGearでの
    デバイス名が混在しますので気を付けてください。
    後述のliloのコマンドパラメータの関係から、lilo.conf内のディレクトリも
    /mnt/cardにchrootした場合のパスとなります。
    bootの項が母艦側でのデバイス、その他の項がMobileGearでブートしたときの
    デバイ ス名となります。

    さらに、

      disk = /dev/hdc
           bios=0x80
           sector=32
           heads=8
           cylinders=732

    という項を追加します。
    sector以降の項は、使用するカードによって違いますので、fdisk /dev/hdc -lで出
    力されるメッセージを参照してください。
    この項の設定を忘れると、liloが凄い勢いで数値を表示します。
    実際筆者はすっかり忘れていて、思いっきりハマりました(^^;
    実は、この項の代わりに、"linear"という一文を入れておけば、別にこんな面倒なことを
    しなくても良いらしいのですが、試したこと無いのでそんないい加減な事はかけません(^^;

    <必要ないかもしれませんが、うすいの設定したlilo.conf>

boot=/dev/hdc
map=/mnt/card/boot/map
install=/mnt/card/boot/boot.b
prompt
timeout=50
disk=/dev/hdc
    bios=0x80
    sectors=32
    heads=8
    cylinders=978
image=/mnt/card/boot/vmlinuz-2.2.16-plinux
    label=linux
    root=/dev/hda2
    read-only

 

    次に、ホストネームの設定をします。

      echo mob > /mnt/card/etc/hostname

    mobがホスト名としてそのまま使用されます。
 
 

 3. カーネルパッケージのインストール

    dpkg --root=/mnt/card -i kernel-image-2.2.16-plinux_Custom.1.00_i386.deb

    とすることで、カーネルをフラッシュカード内にインストールできます。
    気を付けるべき点としては、

    boot floppyは作成しない。
   /etc/lilo.confを使用してのインストールは行わない。
    lilo.confの作成は行わない。

     です。インストールする際のメッセージにはすべて"No"と答えます。
    内容が前後してしまいますが、 lilo.conf中の"image = /vmlinuz"はリンクが張られていないので、

    " image = /boot/vmlinuz-2.2.16-plinux"

    と書き換えます。

   ちなみに、同様に"--root=/mnt/card"というオプションを付けることで、他のパッケ
   ージも容量的に厳しいフラッシュカードにコピーすることなくインストールできます 。
 
   追補:

インストール元がDebianでない場合には、alienでtgzにするなりしてインストールしても、良いと思います。ここでは、カーネルとlibをフラッシュ上にコピーする以外のことはしていません。
それでも、パッケージとしてインストールしたい場合には、
ln -s kernel-image-2.2.16-plinux_Custom.1.00_i386.deb  /mnt/card/kernel-image-2.2.16-plinux_Custom.1.00_i386.deb

chroot /mnt/card

dpkg -i /kernel-image-2.2.16-plinux_Custom.1.00_i386.deb

などとすればインストールできるかと思います。( 未確認)
 
  4. liloのインストール、ブートマーカーの設定

    liloをインストールします。

      lilo -r /mnt/card

    設定は終わっているので、これだけです。

    さらに、 ブートマーカーを書き込むために

       rdev /dev/hdc2 /dev/necmg

    とします。

    あとは、

      umount /dev/hdc2
      cardctl eject 0

    としてカードを抜きます。
    不思議なことに、筆者の環境ではcardctl eject 0がresource busyとメッセージが
    出てうまくいかず、無理矢理引っこ抜いたところコンソールがrespawnされてしまった
    りと、怪しい挙動を見せました。
 

  5. ブート

   すべての手順は終了しました。
   あとは、MobileGearのカードスロットに挿して、電源を入れるだけです。
   無事に ペンギンのロゴを見ることができましたか?

   "LILO"の文字も見ることなくMS-DOSに行ってしまう場合には、ブートマーカーがうまく
   書き込まれていません。

   ブート画面をよく見ていると、やたらとwarnigやらerrorを見たと思いますが、そのあたりは
   debianのインストーラーが何を設定しているかという挙動を把握していないためです。
   ソースコードがあるので調べれば良いだけなんですけどね(^^;

   うまくいけばこれだけの手順でブートまでこぎ着ける事ができます。
 
 
 


[ PocketLinux Home]