このコマンドはネット接続状態で実行しないと失敗するみたいです、KeyHelperやNetHelperにスクリプトを登録しておけばOKですね。$ stone pop.gmail.com:995/ssl localhost:1025 $ stone smtp.gmail.com:465/ssl localhost:1026
本家サイトで公開しているザウルス用stoneはOpenSSL0.9.7を必要とします。自分の使用しているOpenSSLはdipusさんトコの0.9.8でw3m等でも使用しているので、こっちを使用するようにstoneをコンパイル。ちなみに2006/10現在のstoneのバージョンは2.3cです。
本家サイトのCVS レボジトリからtarballをゲットしてきてDebian上に展開、参照するOpenSSL0.9.8は以前Rubyのコンパイルで作ったのでそれを利用、Makefileを適当に書き換え
あとは、「make zaurus-ssl」を実行。CFLAGS= -static-libgcc # -Wall -g SSL= /home/zaurus/ipkg/openssl-0.9.8b/opt/QtPalmtop # 適当に修正 #SSL= /usr/local/ssl (中略) zaurus-ssl: $(MAKE) CC="arm-linux-gcc" TARGET=zaurus ssl_stone # $(MAKE) CC="arm-linux-gcc" SSL_LIBS="-lssl -lcrypto" TARGET=zaurus ssl_stone
# cd /usr/lib # mv libc.so libc.so.org
GROUP( /lib/libc.so.6 /usr/local/lib/libc_nonshared.a )
なお、ザウルスを再起動すると追加した分は消滅してしまうみたいなので「洋ぽんで通信通信してみる」と同じ要領で/etc/rc.d/init.dの下にスクリプトを作成して、起動時に自動で追加させる必要あり。$ su # mknod /dev/loop2 b 7 2 # loop2と最後の2は同じ数字、7まで可能? # chmod 660 /dev/loop2 # chown root:operator /dev/loop2
$ su # cd /home/QtPalmtop/lib # ln -s /hdd1/usr/QtPalmtop.rom/lib/libfloat.so.1 libfloat.so.1 # ln -s libfloat.so.1 libfloat.so
$ su # cd /home/QtPalmtop/bin # ln -s ../j2me/bin/cvm cvm
#!/bin/sh RUNLIB=/home/QtPalmtop/j2me/lib/personal.jar CPLLIB=/home/QtPalmtop/j2me/lib/btclasses.zip #CPLLIB=/opt/QtPalmtop/share/java/libgcj.jar if [ -e "$RUNLIB" ]; then echo "-- cvm compile mode --" else echo "You must install Java." fi #jikes -bootclasspath $RUNLIB:$CPLLIB "$@" jikes -bootclasspath $RUNLIB:$CPLLIB -encoding UTF-8 "$@" echo "jikes end!"
import java.io.*; class Hello{ public static void main(String[] args){ System.out.println("Hello Java World."); } }
$ javac Hello.java $ javac Hello.java 2>&1 | lv # エラーが沢山でて画面が流れてしまう場合は # lvやlessなどのページャーにリダイレクトさせると良い。
$ cvm Hello Hello Java World. # このように表示すればOK
サンプルTest.java.txt(日本語はUTF-8)
参考サイト:
-JavaTM 2 Platform Standard Edition 5.0 API 仕様
-とほほのJAVA入門
-Deep Side of Java〜Java 言語再入門
TMAKEPATH=/hdd3/qws/linux-sharp-g++
TMAKE_INCDIR = /mnt/dev/include
$ su # mkdir /mnt/dev # mount -o loop -t squashfs /hdd3/dev_img-1.6 /mnt/dev # cd /mnt/dev/bin # ./compiler_setup.sh -r /mnt/dev
export PATH=$PATH:/mnt/dev/bin:/usr/local/tmake/bin export TMP=/hdd3/tmp export TMAKEPATH=/usr/local/tmake/lib/qws/linux-sharp-g++
2行目の“115200”を“/dev/ttyACM0 115200”に変更(ACMの次はゼロ) 10,11行目のMTUとMRUを“576”から“1500”に変更
#!/bin/sh /bin/mknod /dev/ttyACM0 c 166 0 ←ACMの次はゼロ
ln -s /etc/rc.d/init.d/yopon.sh /etc/rc.d/rc5.d/S90yopon.sh
もう一つのコマンド停止 qcop QPE/System 'setScreenSaverMode(int)' 0 再開 qcop QPE/System 'setScreenSaverMode(int)' 3
を試したところ、こちらは機能しました。停止 qcop QPE/System 'setScreenSaverIntervals(int,int,int)' 0 0 0 再開 qcop QPE/System 'setScreenSaverIntervals(int,int,int)' -1 -1 -1
というScriptを用意して#!/bin/sh export QTDIR=/home/QtPalmtop (略) /home/QtPalmtop/bin/qcop …… (略)
という様にしてatdに登録しています。# echo su zaurus -c Script | at yyyy.mm.dd-HH:MM:SS
次にスクリプトをroot権限で実行させる場合を考えてみます、通常root権限ではQCopは使用できないので環境変数LOGNAMEをrootに変えて行う必要があります。
そこでScriptの冒頭部に
を追加してexport LOGNAME=root
の様にatdに登録してみました、結果は残念ながらQCopを実行しませんでした。どうやら実行するScriptにLOGNAMEを書いても有効にならない模様です。# echo Script | at yyyy.mm.dd-HH:MM:SS
これで実行したところrootのままでもQCopが機能しました。#!/bin/sh export LOGNAME=root Script 以下略
$ progen -o project
INCLUDEPATH += $(QPEDIR)/include \ /mnt/dev/include \ /mnt/dev/include/qt TARGET = t01
$ tmake -o Makefile project $ make $ ./t01
#include <qpe/qpeapplication.h> ←修正 #include <qpushbutton.h> int main( int argc, char **argv ) { QPEApplication a( argc, argv ); ←修正 QPushButton hello( "Hello world!", 0 ); hello.resize( 200, 60 ); ←修正 以下略
念の為スワップを作成export PATH=$PATH:/mnt/dev/bin:/mnt/dev/tmake/bin export TMAKEPATH=/mnt/dev/tmake/lib/qws/linux-sharp-g++ export TMP=/hdd3/tmp ←適当に空いてるエリアを使用
$ su # mkdir /mnt/dev # swapon /hdd3/swapfile # mount -o loop -t cramfs /hdd3/dev-img.bin /mnt/dev # cd /mnt/dev/bin # ./compiler_setup.sh -r /mnt/dev # exit $ gcc -v
$ gcc -o hello -I/mnt/dev/include hello.c
追記(2005/12)
INCLUDE関連で問題が生じたのは/usr/local/includeが他のアプリのインストールで実体ディレクトリとして存在、リンクが作成されないための模様(未確認です)
りなざうテクノウさんのdev-img.bin パッケージ化群で同じ問題が発生しましたが、こちらはdev-2で対策されました。
*.hが無いというエラー表示、Makefileの中をみるとINCPATHが$(QTDIR)/includeのみ、ちなみにQTDIR=/home/QtPalmtopです。以下の様にINCPATHに追加。$ progen -o hello.pro $ tmake -o Makefile hello.pro $ make
progenやtmakeで勝手に追加させるようにするにはどうすれば良いのだろう?INCPATH = -I$(QTDIR)/include -I/mnt/dev/include -I/mnt/dev/include/qt
追記(2006/2)念の為、make cleanしてから再度make、コンパイルできました!
tmake.confを修正すれば良さそうです。セルフ開発環境(dev-img1.6) tmake.confの設定を参照
で実行。これもdev-imgをアンマウントした環境でも動作しました。./hello
こちらから、cramfs.img, env.sh,mount.sh, umount.shをダウンロード、cramfsがやたらとデカイです。デフォルトでCFに環境を構築するようになっていたのでダウンロードしたファイルは全てCFへ
マウントポイント、作業ディレクトリ、スワップファイル作成
env.shの2行目以下を/home/zaurus/.bashrcの最後に追加$ su # mkdir /usr/local/zgcc34 # cd /mnt/cf # mkdir tmp # dd if=/dev/zero of=./swap.img bs=1M count=32 # mkswap ./swap.img # exit $
マウントされたか確認、lsでarm-linux,binなどが見えればOK。ついでにgccの起動も確認、ずらずらと表示された最後にVersion3.4.4の文字$ cd /mnt/cf $ su # ./mount.sh # exit $
お約束のHello.cをコンパイル$ ls /usr/local/zcc34 $ gcc -v
OK、環境をアンマウントする、~/.bashrcに追加した内容も削除$ cat hello.c #includeint main() { printf("hello world\n"); } $ gcc -o hello hello.c
ちなみにコンパイルしたファイルは、環境をアンマウントした状態では実行すると、ライブラリがないよ!って怒られました(^^; ファイルがでかいのは、X/Qt用のファイルとかも入っているからみたいですね、詳しいことは判りませんけど$ su # /mnt/cf/umount.sh # exit $
$ gcc -static -o hello hello.c $ gcc -static-libgcc -o hello hello.c
また、“/lib/ld-linux.so.2 --list ファイル名”で同じようなことが出きるそうです。$ ldd ファイル名
としたら上手く行っているみたいです。alias lddd='/lib/ld-linux.so.2 --list'
$ cd /hdd3 $ dd if=/dev/zero of=./extfile bs=1M count=32 #32Mの領域の場合 $ mkfs.ext2 ./extfile $ mkdir /home/zaurus/mnt #マウントポイント $ su # mount -t ext2 -o loop /hdd3/extfile /home/zaurus/mnt # exit $ ls /home/zaurus/mnt #確認してみる lost+found
再起動で自動にマウントさせるには/etc/rc.d/rc5/にスクリプトを書くか、fstabに設定すれば良いと思う。$ su # umount /home/zaurus/mnt
Qtopia環境への復帰方法$ su # init 2; chvt 1
ただしノーマルカーネルだとQtopiaを抜けた状態ではコンソールは画面最下行しか使用できない。スペシャルカーネルでは問題なし。# init 5
Hostnameを接続するPC名、ShareFoldrを共有フォルダ名に置き換えます、マウントして本体ディスク/NetworkFoldersを開くと接続した共有フォルダの内容をみることができるようになります。$ su マウント # /usr/bin/smbmount //HostName/ShareFolder /home/zaurus/Documents/NetworkFolders -o guest,codepage=cp932,iocharset=utf8 アンマウント # /bin/umount /home/zaurus/Documents/NetworkFolders
接続する先が複数ある場合には、qshdlgを使用してSmbMounterのようにメニューから接続先を選択してマウントするようにしたほうが便利かもしれません。[Menu] 01_smbmnt = @exec(TAB)/usr/bin/sudo /usr/bin/smbmount //HostName/ShareFolder /home/zaurus/Documents/NetworkFolders -o guest,codepage=cp932,iocharset=utf8 02_smbumnt = @exec(TAB)/usr/bin/sudo /bin/umount /home/zaurus/Documents/NetworkFolders
PCと同じワークグループ名を設定workgroup = WGROUP
無線LAN(wlan0)と有線LAN(eth0)を使用するので、interfaces行に追加します。hosts allow = 192.168. 127.0.0.1 interfaces = usbd0,wlan0,eth0
Windows XPの場合、ランチャーメニューからsambaを起動して「マイネットワーク」-「ネットワーク全体」-「MicrosoftWindowsNetwork」-「ワークグループ名」を開くと「Samba 2.07-ja-2.2(Zaurus)」が見えるので、これをクリックして更にhomeフォルダをクリックすると内蔵HDD(InternalDisk)とSD_Cardがあるのでファイルのやり取りが可能になります。[menu] 01_smbstart = @exec(TAB)/usr/bin/sudo /etc/rc.d/init.d/samba start 02_smbstop = @exec(TAB)/usr/bin/sudo /etc/rc.d/init.d/samba stop
・USBストレージ 7.02Mbps ・有線LAN(10Base-T) 4.65Mbps Planex CF-10T ・無線LAN(802.11b) 2.28Mbps Planex GW-CF11H
$ su # umount /mnt/usbmem アンマウント操作(念の為) 或いは # umount /hdd3/Documents/Photo_Files/usb # fdisk /dev/sda d 4 既存パーティション4情報削除 d 3 既存パーティション3情報削除 d 2 既存パーティション2情報削除 d 1 既存パーティション1情報削除 n p 1 新規パーティション プライマリパーティション ファーストパーティション (Enter) ファーストシリンダー(デフォルト) (Enter) エンドシリンダー(デフォルト) t c パーティションタイプ選択 Win95 FAT32(LBA)を選択 p パーティションテーブル確認 w 変更情報の書き込み # mkdosfs -F32 /dev/sda1 フォーマット # exit $ exit
/etc/hotplug/usb/usb-storage.off#!/bin/sh . /etc/hotplug/hotplug.functions if [ ! -L /var/run/usb/%proc%bus%usb%* ]; then #mount -t vfat -o umask=000,noatime,iocharset=utf8,codepage=932 /dev/sda1 /mnt/usbmem mount -t vfat -o umask=000,noatime,iocharset=utf8,codepage=932 /dev/sda1 /hdd3/Documents/Photo_Files/usb if [ $? = 0 ]; then ln -s /etc/hotplug/usb/usb-storage.off $REMOVER mesg make REMOVER in $REMOVER fi fi
上の二つのスクリプトはchmod a+xで実行属性をつけること、chown root:rootもしておいた方が良いかもしれません。#/bin/sh . /etc/hotplug/hotplug.functions #umount /mnt/usbmem umount /hdd3/Documents/Photo_Files/usb rmmod usb-storage
[Menu] 01_USB_exit = @exec(TAB)/usr/bin/sudo /etc/hotplug/usb/usb-storage.off
のように実行させたいコマンドを時刻指定したatコマンドへパイプで接続させる。$ su # echo command | at 2005.03.10-21:34:00
使用方法は以下#!/bin/sh ATD=/home/QtPalmtop/bin/atd ATSPOOL=/var/spool/at case "$1" in -d) EXETIME=`date -d "$2" +%s` ;; -s) EXETIME="$2" ;; *) ;; esac ATFILE=/var/spool/at/${EXETIME}.444 NEXTTIME=`expr $EXETIME + $3` echo \#!/bin/sh > $ATFILE echo rm \$0 >> $ATFILE echo su zaurus -c \""$4"\" >> $ATFILE echo export TZ=Asia/Tokyo >> $ATFILE echo /home/QtPalmtop/bin/at_regi.sh -s "$NEXTTIME" "$3" \""$4"\" >> $ATFILE chown root:qpe $ATFILE chmod a+x $ATFILE $ATD $ATSPOOL
$ su # at_regi.sh -d yyyy.mm.dd-HH:MM:SS interval command
#!/bin/sh rm $0 su zaurus -c "command" export TZ=Asia/Tokyo /home/QtPalmtop/bin/at_regi.sh -s $NEXTTIME interval "command"
のようにすれば指定回数の実行も可能だと思う。$NEXTCNT=`expr $COUNT - 1` if [ $NEXTCNT -eq 0]; then 〜
/home/zaurus/.anthy/以下にmeisi_rec.src,namae_rec.src,timei_rec.srcを作成、内容は名詞、人名、地名の登録フォーマットの2行目以下、副詞や形容詞は使用頻度が小さいと思うので今回はパス。下記は名詞の場合、文字はEUCで書くこと。#!/bin/sh OUTFILE=/home/zaurus/.anthy/private-dic.src MEISI=/home/zaurus/.anthy/meisi_rec.src NAMAE=/home/zaurus/.anthy/namae_rec.src TIMEI=/home/zaurus/.anthy/timei_rec.src qcf -w | perl -e '$_ = <>;s/(.+?) (.+)/\1 1 \2/;print $_."\n"' > $OUTFILE case "$1" in meisi) cat $MEISI >> $OUTFILE ;; namae) cat $NAMAE >> $OUTFILE ;; timei) cat $TIMEI >> $OUTFILE ;; *) ;; esac cat $OUTFILE | /home/QtPalmtop/bin/anthy-dic-tool --load
qcfの行で登録フォーマットの1行目を作成している、具体的にはクリップボード上の「よみ(半角スペース)単語」を「よみ(半角スペース)1(半角スペース)単語」に変更して改行コードを付加している。sedあたりを使用してもっとシンプルにできそうな気がするけど使い方を知らないのでperlを使用、perlの文法もイマイチ怪しいけれで動いているから、まあいいか。品詞 = 名詞 な接続 = y さ接続 = y する接続 = y 語幹のみで文節 = y 格助詞接続 = y (空行)
Menu01の日本語コードはUTF8で書くこと。[Menu01] 07_名詞登録= @exec(TAB)/usr/bin/sudo -u zaurus -s /home/zaurus/bin/anthy_rec.sh meisi 08_人名登録= @exec(TAB)/usr/bin/sudo -u zaurus -s /home/zaurus/bin/anthy_rec.sh namae 09_地名登録= @exec(TAB)/usr/bin/sudo -u zaurus -s /home/zaurus/bin/anthy_rec.sh timei
登録してみるよみ 1 単語 品詞 = 名詞 な接続 = y さ接続 = y する接続 = y 語幹のみで文節 = y 格助詞接続 = y (空行)
うん、ちゃんと候補に登場している、private-dic.srcを削除してダンプしてみる$ cat /home/zaurus/.anthy/private-dic.src | anthy-dic-tool --load
登録した候補は出力されている。これでマシン間の移植も問題なさそう。$ anthy-dic-tool --dump > /home/zaurus/.anthy/private-dic.src