はじめに
いまさらながら、モバイルギア(MC/R550, MC/R430)でNetBSD。自分のためのメモ。
ハードウェアの入手
- モバイルギアII
- Sofmapで程度のよい中古をみつけてしまった。
- ヤフオクでうっかり。:-)
- PCMCIAカードのイーサネットカード
- 手持ちのを使う(TDK LAC-CD02x,mbe0でみえる)
- 中古/ジャンクで探す。
- Compact Flash
- 512MB以上のを買う。SanDiskのを買った。
- 先達は小さいCFにいかに詰め込むか苦労されていた。しかし、CFもその当時に比べるとやすくなったので、苦労しない方法をとる。=でかいのを買う。
- 512MB以上のを買う。SanDiskのを買った。
- マイクロドライブ
- 充電池駆動では事実上使えない
- 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 などと変わらない。
- Fn + space で輝度変更できるようににするには
コンパイルの準備
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をソースから入れる
- pkgsrc-wip-jpにある。(作った。)
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くらいつかっているみたい。
- そもそも、音楽の再生自体、しんどいものらしい。
(超書きかけ)
その他
りんくしゅ。
- MGL2 on NetBSD/hpcmips: すごい参考になる伊藤さんのページ
- Jornada 6x0でNetBSD/hpcshを使う: Jornadaでがんばってみるひとはおおしまさんのページへ
間違いの指摘や、ご意見などは、FrontPageにある連絡先にメールを下さるとうれしいです。
最終更新時間:2009年10月09日 00時56分22秒