fakesh-omocha version 3 koboのおもちゃ Copyright © 2013 fakesh. http://sourceforge.jp/users/fakesh/ MIT/X Consortium License http://www.opensource.org/licenses/mit-license.php * WhatIsThis kobo に login してつかうものですので, telnet や ssh で login できる環境ができていないと基本的にはつかえません. ただし, screenShot-jpeg.sh は fbset が install されていて /dev/fb0 が読めるような unix-like 環境でもつかえるはずです. fakesh 本体(整備中) のなかで, 単独でつかっても役にたちそうな sh scripts と fakesh 本体 にはないけれど便利な sh scripts (extra) などを集めたものです. install path は, とくにきまってませんが, よくつかうようであれば, $PATH のかよったところがいいでしょう. + whinker.sh LED を点滅させる. パターンは動的にかえられる. 使いかたは, help PROMPT# ./whinker.sh を参照. fakesh 本体 では /etc/fakesh/tools/ に配置. ($PATH には入っていない) + screenShot-*.sh スクリーンショットを撮る, .raw.gz からの変換. fakesh 本体 では /root/bin/ に配置. (fakesh の$PATH には入ってる) screenShot-*.sh の * は出力フォーマットで, 数字 1,2,3,4 は各色のbit数, jpeg は 3x8bit color または 8bit grayscale, 単独 ppm は binary 3x7bit color + gzip, 単独 pgm は binary 7bit grayscale + gzip, 単独 raw は "そのまま" + gzip , raw[1-4] は grayscale + gzip, L つきと raw は landscape, それ以外は portrait, r は reverse video. raw1 は reverse video 付き. つかいたは help で PROMPT# screenShot-jpeg.sh help Usage: screenShot-jpeg.sh [pathto/pict] [1-999] [cmd] [cjpeg_opts] pathto/pict : path to output file. (/mnt/onboard/screenShots/001.jpg) 1-999 : shutter timer sec. (none) cmd : help , conv , wait, showfb , fb:_params_ , fmt:_output_format_ (jpeg). options は dash(-) ではじまる option 以降が cjpeg の option になる (jpeg のとき). それより左の option が screenShot-*.sh の option で slash(/) が含まれるときは出力ファイルの指定(無条件置き換え(上書き)), 1から999までの十進表記はシャッターのタイマー秒数, conv は画面からの代わりにstdinから .raw.gz を読み込む, wait は現像仕上りまで待つ, showfb があるときは framebuffer(fb) の parameter を表示して終了(撮らない,変換しない), fb:_params_ は fb の parameter を上書き設定, conv といっしょにつかえば 他機種の .raw.gz も変換できる, (環境変数 SCREENSHOT_FB_PARAMS も利用可能) fmt:_output_format_ は出力フォーマット, help で (/mnt/onboard/screenShots/001.jpg) のように設定値を確認することが できる. 以下, 利用例: 撮るのは一瞬. PROMPT# time screenShot-jpeg.sh real 0m 0.71s user 0m 0.02s sys 0m 0.21s 現像(変換)にスゴク時間がかかる. PROMPT# time screenShot-jpeg.sh wait output: /mnt/onboard/screenShots/002.jpg real 1m 28.35s user 1m 13.52s sys 0m 14.21s でも gzip だけならまあまあ速い. PROMPT# cd /mnt/onboard/screenShots PROMPT# time screenShot-raw.sh ./thePict wait output: /mnt/onboard/thePict.raw.gz real 0m 2.00s user 0m 1.28s sys 0m 0.20s raw1(raw BW and its reverse video) でも変換に結構時間がかかる. PROMPT# time screenShot-raw1.sh conv ./thePict wait < thePict.raw.gz output: /mnt/onboard/screenShots/thePict.BW.raw.gz output: /mnt/onboard/screenShots/thePict.WB.raw.gz real 2m 52.79s user 1m 20.05s sys 1m 32.45s E-ink の残像軽減になるかな? PROMPT# dispPics.sh ./thePict.BW.raw.gz 500 ./thePict.WB.raw.gz ./thePict.raw.gz framebuffer の parameters の表示 (on glo) PROMPT# screenShot-jpeg.sh showfb w=1024;h=758;rB=5;rP=11;gB=6;gP=5;bB=5;bP=0; 他機種の .raw.gz を変換 PROMPT# cd /etc/images PROMPT# screenShot-ppm.sh 'fb:w=800;h=600;' conv showfb w=800;h=600;rB=5;rP=11;gB=6;gP=5;bB=5;bP=0; PROMPT# screenShot-ppm.sh 'fb:w=800;h=600;' conv showfb help Usage: screenShot-ppm.sh [pathto/pict] [1-999] [cmd] pathto/pict : path to output file. (/mnt/onboard/screenShots/003.ppm.gz) 1-999 : shutter timer sec. (none) cmd : help , conv , wait, showfb , fb:_params_ , fmt:_output_format_ (ppm). PROMPT# screenShot-ppm.sh 'fb:w=800;h=600;' conv < initializing_usb_partition.raw.gz PROMPT# cd /mnt/onboard/screenShots PROMPT# ls 001.jpg 002.jpg 003.ppm.gz.wait PROMPT# sleep 180; ls 001.jpg 002.jpg 003.ppm.gz PROMPT# zcat 003.ppm.gz | cjpeg > initializing_usb_partition.jpg ?? usb 端子が下にあるから ?? (やってみて!) 以上は, fakesh 所有の glo での結果. touch は処理能力が低いけど, 画素が少ないので速くなるか遅くなるかは不明. ぎゃくに, Touch で glo用の画面の jpeg をつくるのには: PROMPT# screenShot-jpeg.sh /mnt/onboard/glo-on-3 'fb:w=1024;h=758;' conv < /etc/images/kraken-on-3.raw.gz timer が必要な用途の一つは, /mnt/onboard が umount されているときの screen shot を撮ることで (wifi経由loginして, usbnet ではムリかも) PROMPT# cd /; screenShot-jpeg.sh 30 & と唱えてすぐに, usb 接続, [接続] をタッチして, さらに, 画面を撫でていれば(koboを居眠りさせないため), 30秒後くらいの "PC に接続されています。" の画像が撮れる. 現像が終っても, /mnt/onboard が mount されるまでは /tmp から mv しないので安心. usb 接続解除後すぐに見たいときは(見ている画面だけど), シャッター後 さらに2分ほど撫でまわしてから接続解除して, /mnt/onboard の mount と ほぼ同時に現像済 jpeg を /tmp から mv させるようにすればよい. / partition の /mnt/onboard が汚れていないことを確認. PROMPT# cd /tmp ; mkdir -m 000 root-bind-$$ ; stat -c %a root-bind-$$ 0 PROMPT# mount --bind / root-bind-$$ ; stat -c %a root-bind-$$ 755 PROMPT# ls -a root-bind-$$/mnt/onboard . .. PROMPT# umount root-bind-$$; stat -c %a root-bind-$$ 0 PROMPT# chmod 700 root-bind-$$; rmdir root-bind-$$ root-bind-$$/mnt/onboard に . .. 以外の何かがあったら消しときましょう. kobo ウェブブラウザでは, jpeg, png画像が grayscale になっている? svg でもグラデーションなどは grayscale になるようだ. (FW 2.2.1) http://upload.wikimedia.org/wikipedia/commons/0/02/CIExy1931.svg + extra/fakesh-logo.jpg screenShot-jpeg.sh で撮ったショットサンプル. 元の png を /mnt/onboard にコピーして撮った. (jpegtran 不使用版) version 1 のものは jpegtran の BUG のせいでおかしい. 今度はダイジョブ fakesh 本体 には含めない + extra/conv-etc-images.sh screenShot-jpeg.sh をつかった sample script. /mnt/onboard/etc_images の画像を ppm に変換して /mnt/onboard/etc_images に保存する. background で走りつづけるが, 2時間以上かかる. umount されようが nickel が死のうが走りつづける. 電池はかなりへる. fakesh 本体 には含めない, $PATH にも入っていない. + addVerCheck.sh KoboRoot.tgz を version check つきにする. script を実行させる KoboRoot.tgz を生成する. distributer むけの sh script なので詳しい説明は省略. cwd に versions.lst がないときは, versions.lst の例を生成して終了. もう一度実行すると KoboRoot.tgz がなければ sample の KoboRoot.tgz を生成し, version check つき KoboRoot.tgz に変身させる. 詳しくは script addVerCheck.sh 自身を参照. fakesh 本体 では /etc/fakesh/tools/ に配置, $PATH には入っていない. - koboBackup.sh 簡単koboバックアップ http://sourceforge.jp/users/fakesh/pf/easyKoboBackup/ または, 最新版 http://sourceforge.jp/projects/fakesh-kobo/scm/git/fakesh_kobo/tree/master/etc/fakesh/tools/ からどうぞ. KoboRoot.tgz を展開したなかの tmp/*/koboBackup-oneShot.sh と同一です. koboBackup.sh と rename してつかってください. 画像 *.raw.gz は /mnt/onboard/.fakesh/images に install してください. - outputEKBuu.sh 最新版 http://sourceforge.jp/projects/fakesh-kobo/scm/git/fakesh_kobo/tree/master/etc/fakesh/tools/ からどうぞ. koboBackup.sh に addVerCheck.sh をつかって別パッケージ "簡単koboバックアップ" をつくる script. koboBackup.sh と addVerCheck.sh は同じ directory に配置されて いなければならない. ssh でつかいやすいように base64 で KoboRoot.tgz を stdout に出力. fakesh 本体 では /etc/fakesh/tools/ に配置. ($PATH には入っていない) + dispPics.sh kobo 画面に 画像を表示, 引数なしで help fakesh 本体 では /root/bin/ に配置, $PATH にはいってる. + extra/pstree.sh debian squeeze あたりから psmisc を導入すればいいのだけれど, 面倒だから書いてしまった. と思ってたら. FW2.6.0 以降の busybox に含まれるようになった. でも, こちらは, STAT や 引数の表示があるぶん便利. 適当な引数をつけると help. fakesh 本体にはないが $PATH 入ってる + {Stop,Cont,Ping}Nickel.sh pipeclear 付きだから, STOP してるときの影響が CONT したときにでない. ./StopNickel.sh した回数だけ ./ContNickel.sh しないと nickel は動き出さない. 5回 ./StopNickel.sh したら, 5回 ./ContNickel.sh しないと nickel は動き出さない. 状態は ./PingNickel.sh で確認できる. fakesh 本体 では /root/bin/ に配置, $PATH にはいってる. + extra/batteryStat.sh ときどき電池が気になります... fakesh 本体にはないが $PATH 入ってる + extra/hwtime.sh fork せずにいける. 日付けはいらない. JST(+09:00)でないときは, 環境変数 TZMIN で調整. サマータイムとかは当然無視. fakesh 本体にそのものはないが, ひな型がある. $PATH に入ってる - wrapping-mount-dosfsck.sh 簡単koboバックアップ http://sourceforge.jp/users/fakesh/pf/easyKoboBackup/ または, 最新版 http://sourceforge.jp/projects/fakesh-kobo/scm/git/fakesh_kobo/tree/master/etc/fakesh/tools/ からどうぞ. koboBackup.sh の付随script rootfs と recoveryfs の /bin/{mount,umount,dosfsck} を KOBOeReader が ext4 でつかえるように wrap, restore する. wrap は, PROMPT# ./wrapping-mount-dosfsck.sh /mount_point_to_fs で, restore は, PROMPT# ./wrapping-mount-dosfsck.sh /mount_point_to_fs restore とする. '-Message' という option を第1引数にすると饒舌になる. 引数なしで, test code の実行. また, koboBackup.sh により recoveryfs の /etc/fakesh/tools にも install され, factory reset しても, ext4 がつかえている状態にする. fakesh 本体 では /etc/fakesh/tools/ に配置, $PATH には入っていない. + extra/ldd.sh オプション -l /path_to/ld-linuxXXXXX でリンカを指定できる. 引数なしで, help fakesh 本体にはないが $PATH 入ってる + extra/busyboxRelink.sh FW2.6.0 の busybox が大変更に applet を整理する. ./busyboxRelink.sh / と唱えれば, /bin/busybox に symlink されてるのになくなった, applet を消して, /bin/busybox が想定している場所に applet を install する. すでにある command は /bin/busybox への symlink でないかぎり消さない. /bin/busybox への symlink でも想定している場所でなければ消さない. 以上のように, 安全に /bin/busybox の applets を整える. busybox --install というのもあるけれど, 挙動がよくわからないので不安だから書いた. wrapper とか上書きされるといやだし, 孤児 applet は消してくれないだろうから. fakesh 本体にはない, $PATH にも入っていない. ################################################################ * Install fakesh-omocha?.{tgz,tar.bz2,tar.xz} をお好みの場所で展開(ただし symlink がはいっているので unix な filesystem上 で[含むMacOSX]). directory fakesh-omocha? (?はversion番号) 以外に展開物はなし. バラケない. あとは, 上記 WhatIsThis を参考にするなどして, (kobo内外に)配置. sh script ですので... tgz,tar.bz2,tar.xz のどれになるかは, 一番小さくなるものにするので varsion によりかわるかも. * ChangeLog + 2013-12-08 - outputEKBuu.sh - koboBackup.sh - wrapping-mount-dosfsck.sh + extra/ldd.sh + extra/busyboxRelink.sh + 2013-02-22 + wrapping-mount-dosfsck.sh + 2013-02-11 + screenShot-*.sh reverse video の強化 + whinker.sh $(./whinker.sh 2>/dev/null) がダメなので修正 + 2013-02-10 + extra/hwtime.sh + extra/batteryStat.sh + extra/{Stop,Cont,Ping}Nickel.sh + extra/pstree.sh + extra/conv-etc-images.sh を本体からはずす. + 本体にないものを extra に移動 + dispPics.sh + 2013-02-05 version 2 + README.html + outputEKBuu.sh + 2013-02-04 + addVerCheck.sh BUG 取り [ ! -f ../KoboRoot.tgz ] のときの cd $wd + whinker.sh help の値を 30 から 99 に変更. + screenShot-*.sh jpegtran -rotate 90 に BUG があるので jpegtran をつかわずに, 回転するようにした. さまざまな format の画像出力に対応. default の画像出力先を /mnt/onboard/screenShots/ に変更. 画像出力先を option 指定可能. .raw.gz からの変換. kobo でなくても(たぶん)つかえるようにした. 次の options を追加 pathto/pict , 1-999 , help , conv , wait , fb:show , fb:_params_ , fmt:_output_format_ . + fakesh-logo.jpg jpegtran の BUG のため jpegtran未使用版に変更. + conv-etc-images.sh + addVerCheck.sh + koboBackup.sh + 2013-01-27 version 1 + whinker.sh + screenShot-jpeg.sh + fakesh-logo.jpg * TODO + screenShot-*.sh kobo の E-ink では, rgb to grayscale が ppmtopgm の .299 r + .587 g + .114 b でないようなので, その対策. + README もっと, ちゃんと詳しく書く. でもつかれた.... wiki に移動... binary <--> text に od と awk の printf "%c" のほかに uu{en,de}code base64 をつかうという手もあるか... 処理は面倒たけど, uudecode -m を tr の代わりにつかえば 3x8bit color bin ppm, 8bit grayscale pgm をつくれる. しかも, base64 は 3bytes binary <-|-> 4bytes text だから rgb にピッタリ. - base64 じゃない uuencode の方が awk での encode が楽そう. - printf "%c", g%64 + 32; g=int(g/64); でいける! だけど, 当分後回し. - やってみたくなってきた...ガマン * FAQ * 最新版 http://sourceforge.jp/projects/fakesh-kobo/scm/git/fakesh_kobo/tree/master から root/bin/screenShot-jpeg.sh root/bin/dispPics.sh etc/fakesh/tools/whinker.sh etc/fakesh/tools/addVerCheck.sh etc/fakesh/tools/koboBackup.sh etc/fakesh/tools/outputEKBuu.sh root/bin/{Stop,Cont,Ping}Nickel.sh と extra は http://sourceforge.jp/users/fakesh/pf/fakesh_omocha/scm/tree/master/extra/ にあります. ================ Copyright © 2013 fakesh. http://sourceforge.jp/users/fakesh/ MIT/X Consortium License http://www.opensource.org/licenses/mit-license.php