トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

モバイルギアでNetBSD

はじめに

いまさらながら、モバイルギア(MC/R550, MC/R430)でNetBSD。自分のためのメモ。

ハードウェアの入手

  • モバイルギアII
    • Sofmapで程度のよい中古をみつけてしまった。
    • ヤフオクでうっかり。:-)
  • PCMCIAカードのイーサネットカード
    • 手持ちのを使う(TDK LAC-CD02x,mbe0でみえる)
    • 中古/ジャンクで探す。
  • Compact Flash
    • 512MB以上のを買う。SanDiskのを買った。
      • 先達は小さいCFにいかに詰め込むか苦労されていた。しかし、CFもその当時に比べるとやすくなったので、苦労しない方法をとる。=でかいのを買う。
  • マイクロドライブ
    • 充電池駆動では事実上使えない
    • 2GB以上のマイクロドライブは、起動の途中で止まることがある(電力が足らないらしい)

インストール

注:NetBSD 5.0をインストールしようとしている人へ。MC/R430とかMC/R550とか、一部の機種でbootできないかもしれません。2009年8月ごろそのbugが修正されたので、http://releng.netbsd.org/ の Daily binary snapshot から、最新の5_STABLEを取ってきたほうがいいでしょう。(わからない人へ:netbsd-5というdirが5_STABLEです。)

別途、NetBSDなホストがあると、楽。全部、NetBSD上でできる。

  • CFのパーティションをわける。前に小さくFAT、後ろに大きくFFS。
    • swapは作らない。
  • どっちもフォーマット。
  • pbsdboot.exeとsets/*.tgzをとってくる。
  • 先頭のFATパーティションにpbsdboot.exeを置く。
  • 後ろのFFSパーティションにsets/*.tgzを展開(tar xzfp)する。
    • とりあえず、base.tgzとetc.tgzとカーネルがあればなんとかなる。自分は、X以外のもの全部を展開している。

設定

基本的に NetBSD/i386 などと変わらない。

コンパイルの準備

 NFS/diskccサーバ

  • NFSサーバをNetBSDで用意
  • 作業領域(/var/tmp)と、/usr/pkgsrcをexport。
  • /var/tmp/cross以下にインストールしたreleaseのtoolchainを用意
    • ソースをCVSでget
    • ./build.sh -T /var/tmp/cross -m hpcmips tools
    • (comp.tgzを前項でインストールしていない時は、このtoolchainを使う。)
  • devel/distccをインストール
  • distccdをセットアップ
    • rc.d/distccdに DISTCCD_PATH=/var/tmp/cross/mipsel--netbsd/bin:${PATH};export DISTCCD_PATH を追加
    • -a 許可するネットワーク --listen IPアドレス
    • cp /usr/pkg/share/examples/rc.d/distccd /etc/rc.d && /etc/rc.d/distccd forcestart

 モバイルギア

  • モバイルギアをboot。
  • PCカードをさして、IPふって、NFSクライアント化
  • nfssrv:/usr/pkgsrcをmount
  • nfssrv:/var/tmpを/workにmount
  • pkgsrcの一般的な設定をする。
  • swapfileを/workに作り、有効化
  • devel/distccをインストール
  • /etc/hostsにnfssrvを書く
  • /etc/mk.confはPKGSRC_COMPILER= distcc gcc

コンパイル

 ふつうの

  • env DISTCC_HOSTS=nfssrv make

 mgl2

すごい参考: http://web.kyoto-inet.or.jp/people/m-ito/netbsd/hpcmips_mgl2.html

  • font/mglfontsを先にいれる
  • graphics/jpeg, graphics/png, graphics/libungifも先に入れる
  • graphics/mgl
    • make extract
    • pkgsrcとCVS HEADの差分 mgl2.cvshead.patch
      • A8を押すとmglsvrが落ちるのがなおっているらしい
      • cd work/mgl2-alpha-020 && patch -p1 < /path/to/mgl2.cvshead.patch
    • make patch
      • rejされたぶん手パッチ(patch-aa,patch-ac,patch-al)。patch-ajはいらない。
    • gcc3パッチもあてる http://ichiro.nnip.org/books/hogeuni/index.html
    • gcc4パッチとmdateのパッチもあてる patch-gcc4 patch-mdate cf.[nbug:10244],[nbug:10248],[nbug:10260](おおしまさん、中治さんthanks _o_)
    • 必要に応じて、壁紙パッチをあてる http://www.kokone.to/~kgt/strage_room.html
      • rejされたぶん手パッチ
    • emsvr.cのMK_DUMP_SCREENを有効にするとスクリーンショットがとれる(A8〜A10以外のどれかにする)
      • A8: フォントの大きさ変更
      • A9: アプリ同士の切替
      • A10: ミニアプリとアプリの切替
      • A11: nine
    • config.mk-hpcmipsのIM_PROG=imcanna.soを有効にする。
    • graphics/mgl/MakefileのX関係のbuildlinkをコメントアウト
    • inputmethod/canna-libのbuildlinkを書く
    • make install
  • fonts/ja-elisauのソースから8dotフォントをつくっていれる

 canna

  • inputmethod/cannaを入れる
  • cannadicをソースから入れる

 w3m

  • www/w3mを入れる。

./mktableでfunctable.cとtagtable.cを作るところで落ちる。他のNetBSD Boxでそのファイルで作っておいて、落ちるたびに、そのファイルをコピーして先に進む。

--> だめ。セグメンテーションフォールトで落ちる。どうも、boehm-gcの関数が呼ばれるところで落ちるみたい。6.8/6.7では同じ現象。7.0まち?

↑の「すごい参考」の伊藤さんに

 当方では、MC-R450 + NetBSD-3.1/hpcmips 環境下でgc6.8に以下の修正を行い、
 
 *** include/private/gcconfig.h.ORG      Sun Sep  3 14:41:25 2006
 --- include/private/gcconfig.h  Sun Sep  3 14:18:23 2006
 ***************
 *** 1459,1465 ****
 --- 1459,1467 ----
           extern int etext[];
   #       define DATASTART GC_data_start
   #       define NEED_FIND_LIMIT
 + #if !defined(HPCMIPS)
   #       define DYNAMIC_LOADING
 + #endif
   #     else
   #       define DATASTART ((ptr_t) 0x10000000)
   #       define STACKBOTTOM ((ptr_t) 0x7ffff000)
 
 
 以下のオプションで configure & make した boehm-gc を利用して w3m-0.5.2
 が動いております(^^)/
 
 CFLAGS="-DHPCMIPS" ./configure -enable-threads=no --enable-static --disable-shared && make

と教えてもらったので、そうやってboehm-gcをmakeしなおすと、w3m動いた!(伊藤さんありがとう。)

せっかくなので、pkgsrcにあてるパッチつくった。boehm-gc.patch

 cd /usr/pkgsrc/devel
 cp -Rp boehm-gc boehm-gc.hpcmips
 cd boehm-gc.hpcmips
 patch -p1 < /path/to/boehm-gc.patch
 make install

たぶん、モバイルギアに限らず、mipselなmipsみんな関係していると(根拠なく)思うので、そういうパッチ。

画像は画像の上でIを押したときにミニアプリ領域へ出るようにする方法が、/usr/pkg/share/doc/mgl2/mil/mil.doc にある。けど、mailcapの説明がpkgsrcで入れたw3mには合っていない。

  • mailcapの位置は、w3mをpkgsrcでインストールすると、$(HOME)/.w3m/mailcap
  • mailcapのMIME Typeとコマンドの区切り文字は、コロンではなくセミコロン。つまり、"image/*; milecho %s"と書く。

 mutt

muttでGMailでSMTP/IMAP。とりあえず使えるようにしてみる。

Mutt Japanese Editionのパッチが当たったものをpkgsrc化したものを前原さんという方が作っている。でも、mail/mutt-develではそこそこ日本語が使えるはずなので、できるだけ素のpkgsrcを使ってみることにする。

まず、devel/libslangをインストール。make patchしたあとに、

 --- src/sl-feat.h.orig  2003-03-23 16:06:40.000000000 +0900
 +++ src/sl-feat.h
 @@ -57,5 +57,5 @@
  #define SLTT_XTERM_ALWAYS_BCE          0
 
  /* Set this to 1 to enable Kanji support.  See above comment. */
 -#define SLANG_HAS_KANJI_SUPPORT                0
 +#define SLANG_HAS_KANJI_SUPPORT                1
 

という変更を行う。そのあと、make install。

次に、mail/mutt-develをインストール。オプションは好きずきだが、

 PKG_OPTIONS.mutt=       slang smime ssl sasl gpgme mutt-smtp mutt-hcache

とした。あとは、make install。

(utf-8でいくひとは、PKG_OPTIONS.muttにslangの代わりにncurseswを指定すればよかったハズ。)

次に、cyrus-saslの認証モジュール。 (これがないと、メールが出せなくなる。)security/cy2-loginをインストール。

次に、設定。その昔、Linux Japanに載っていた『百万人のMutt』が読めるので、それを読むのもイイ。でもせっかちな人は、Using Gmail with mutt, the minimal way (IMAP update)を見れば、とりあえずなんとかなる。(あとは、/usr/pkg/share/examples/mutt/Muttrcや各種Webサイトをみてカスタマイズしよう。)

初めてIMAPやSMTPでつなぐと、SSLのルート証明書のエラーが出る。無視して"保存"してしまえない、気になるあなたは下記のとおり。

  • muttをGNUTLSを使うようにしてインストールしなおす。OpenSSLだけでは、muttはルート証明書を検査できないようになっているみたい(!)。
    • mutt-devel_options.mk.patchの変更をoptions.mkにして、PKG_OPTIONS.muttにgnutlsを追加して、makeでもよい。(sslオプションがあると有効にならないので、あれば消す。)
  • あとは、ルート証明書ファイルが、/usr/pkg/share/examples/mutt/ca-bundle.crtにあるので、これを使えばOK。
    • ~/.mutt/ca-certificates.crtにこぴって、.muttrcでset ssl_ca_certificates_file=~/.mutt/ca-certificates.crtなどと使う。

 tremor-tools

Ogg Vorbisを再生したい、ということです。はい。とりあえず、忘れないように、めもがき。

再生側(モバイルギア)

  • 先に、devel/cpuflags を導入して、最適化をほどこすようにしておく
  • cd /usr/pkgsrc/audio/tremor
  • make patch
  • cd work
  • rm -rf Tremor
  • 最新のTremorをsvnでとってきて、work以下におく
  • http://lists.xiph.org/pipermail/tremor/2004-February/000928.html から asm_mips.h と asm_mips.S をとってきて、work/Tremor 以下におく
  • misc.h に asm_mips.h を追加(上記メールにそうある)
  • asm_mips.S に一ヶ所間違いがあるのでなおす
    • srlv のところ(他と違う)
  • asm_mips.h asm_mips.S の改行コードをLFになおす
  • configure.in をなおす
    • AM_PROG_AS を追加(とりあえず、AM_PROG_LIBTOOL の下あたりでも。)
    • Set build flags based on environment のところ、arm をまねて、mips を追加
      • -D_MIPS_ASSEM_ -D_MIPS_VR4121_ASSEM_
  • make configure
  • work/Tremor/Makefileの中身をみて、よく確認
  • make
  • make install
  • cd /usr/pkgsrc/audio/tremor-tools
  • PR/37835のパッチをあてる
    • audio/vorbis-tools/patches/patch-a[ab] と同じです
  • make
  • make install

作成側(さすがに、モバイルギア上では作成しない)

  • cd /usr/pkgsrc/audio
  • cp -Rp libvorbis libvorbis-aotuv
  • cd libvorbis-aotuv
  • make patch
  • cd work
  • rm -rf libvorbis-*
  • aoTuVから、libvorbis-aotuv_b5.7.tar.bz2 をとってきて、work 以下に展開
  • Makefile に WRKSRC を追加
    • WRKSRC= ${WRKDIR}/aotuv-b5.7_20090301
  • Makefile の PKGNAMEを適当に書く
    • PKGNAME= libvorbis-1.2.1.20090301
  • make
  • make install
  • cd /usr/pkgsrc/vorbis-tools
  • make
  • make install

あとは、oggenc -q-2 がつかえるようになったので、-q-2 でエンコードして、モバイルギアで再生する。

わかったこと

  • 再生後、必ずcore dumpする。asm_mips.* を導入する前はtremor-toolsにPR/37835のパッチをあてていれば、core dumpしなかった。
  • Ctrl + C も、ほぼcore dumpする。上記と同じ。
  • -D_MIPS_VR4121_ASSEM_ をつけるのと、つけないのでは、ほとんど変わらない。(ほんの少し、再生が速くなるような。)
  • asm_mips.* があるのとないのでは、曲によっては、聞いていると違いがあるような。(ある方が、より再生が速い。)
  • 全体的に、再生がまだ遅い。-q-2 エンコードした3分の曲で、??秒?の遅れがある。
    • モノラル再生をすると違うかも。(audio/madplay で mp3 を再生したときは、そうだった。)
  • メモリは、2Mくらいつかっているみたい。
  • そもそも、音楽の再生自体、しんどいものらしい。

(超書きかけ)

その他

りんくしゅ。

間違いの指摘や、ご意見などは、FrontPageにある連絡先にメールを下さるとうれしいです。

最終更新時間:2009年10月09日 00時56分22秒