    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