You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。久しぶりに更新します。

2011年9月4日日曜日

Nook Touchの脱獄

Berns and Noble (以下B&N)のNook Touch のRootingについて書く。いわゆる脱獄だが、microSDカードをいれればそこからBootするようになっており、もともと入獄していないので、特に脱獄ともいえない。

Nook Touchについては以下) 2011年8月23日火曜日 電子ブックリーダの比較 - Nook Touchの詳細と脱獄

3つの手法がある。
  1. Nook Nooterを使った方法) http://forum.xda-developers.com/showthread.php?t=1132693 参照。
    これはこのイメージの入ったmicroSDカードをいれてリブートするだけで、自動でAndroidアプリも含めてインストールされるが、私の環境ではきわめて不安定であり、だんだんアプリが起動しなくなる。特に、NookのHome画面に戻れなくなり。リブートすると、ブートの無限ループに陥る。何度も工場出荷時に戻した。
  2. スクリプトを利用した方法) http://forum.xda-developers.com/showthread.php?t=1132292 参照。
    http://mikecanex.wordpress.com/2011/06/27/nook-touch-rooting-june-27th-news/ から、これの実行結果が参照できる。
    私の環境では、これも途中でadb(Android debuggerが、吹っ飛ぶ。その後、きわめて不安定になり、Nookのsetup画面にいけなくなる。そしてリブートすると、これもブートの無限ループに陥る。何度も工場出荷時に戻した。
  3. 上記2のスクリプトを分解し、Mac OS-Xからひとつずつアプリをインストールしていく方法
  4. システムイメージをMacにバックアップしておけば、上記2,3で無限リセットループに陥った場合にも、面倒な工場出荷時に戻す方法、ではなく、もっと簡単にバックアップリストアができると思われる。
以下、上記3の方法を試みる。

i. 工場出荷時に戻す方法)


ブートの無限ループに陥った場合でも、ブート中に、電源ボタンを長押しすると再リセットする。このやり方でリセットを8回かける(かなり根気が必要) と、Bootイメージを工場出荷時に書き換え、bootするようになる。以下8回リセット後にイメージ書き換え中の写真である。


ただし、ここまでは、ユーザファイルや設定等は初期化されておらず、WiFi設定やアカウントなど設定がそのまま残る。脱獄したroot環境も残っている。(User DataをOS更新だけでは初期化しないのは、iPhoneよりも賢い。) なのでこれだけでは、初期化は不完全であり、再度の脱獄の前には、安全のため、
settings → Device Info → Erase & Deregiter Device. 

で完全に出荷時状態に戻す必要がある。本操作のためのデータは、WiFiで取得するようであり、WiFiがつながっているところでやる必要がある。これをやると、Nookが完全に初期状態に戻る。firmwareも購入時の版に戻る。Berns and Noble (以下B&N)のIDの登録、WiFiの設定、settingの変更等からやり直す必要がある。

ii. Bootable microSDカードの作成)
http://nookdevs.com/NookTouch_Rooting にある方法。

iii. システムイメージのバックアップ・リストア)
http://forum.xda-developers.com/showthread.php?t=1142983 にある方法だが、"dd"のオプションは"bs=1M"ではなく、"bs=1m"の間違いである。/dev/xxxxxの部分を間違えると、Macのシステムイメージなどを破壊するので注意が必要。バックアップイメージひとつあたり、2GBのディスク容量が必要。

  バックアップ)
  1. Nook Touchがスタンドバイ状態でない稼動状態で、sleepボタンを名が押しすると、電源を落とすかのdialog boxがでる。ここで、電源を落とす。
  2. 上記ii.で作成した、micorSDカードをいれる。MacないしはPCにmicroUSBケーブルで接続すると、bootし、"Rooting Forever"の画面がでる。このとき、boot, NOOKの2つのpartitionがMacないしはwindowsにマウントされる。以下そのときのNookの画面である。
  3. 以下Macで解説する)

    • /dev/disk3s1 on /Volumes/boot
    • /dev/disk3s6 on /Volumes/NOOK
    とマウントされている。マウントされるポイントはdisk1になったりdisk2になったり変わることがあるので注意。
  4. terminal windowを開く。上記3のとおりマウントされているかmountコマンドで確認する。
  5. diskutil unmountdisk /dev/disk3 でNookをumountする。
  6. dd if=/dev/disk3  of=my_backup.img bs=1m で、カレントディレクトリのmy_backup.img というファイルにバックアップされる。
    my_backup.imgというファイルのサイズがぴったり 1,958,739,968 bytesであることを確認する。Nook内蔵の2GBのフラッシュまるごとバックアップするらしく、相当の時間がかかる。1868+0 record in out と出るはずである。
  7. USBをはずし、microSDを抜いて、sleepボタンを長押しして、本体のFlash ROMイメージから通常通りにブートする。
リストア)  上記6の代わりに、dd if=my_backup.img of=/dev/disk3 bs=1m と打てばよい。my_backup.imgのあるディレクトリで実行するか、フルパスを指定すること。システムイメージが壊れていても、iiで作ったmicroSDを入れてrebootすれば、必ずbootし、上記2の画面にいたる。したがって、リストア操作で、任意の時点のシステムイメージに戻せるはずである。(以下9/25に修正) Flash memoryがまっさらの綺麗な状態で、真っ先にバックアップを取って置くことをお勧めする。 Rooting失敗等で頻繁にリストアすることを考えると、ユーザ登録を終え、初期設定を終えてからバックアップを残すことをお勧めする。工場出荷状況に戻したい場合には、上記 i)の方法で完全に工場時出荷時に戻せると思われるからである。

iv. Rooting)
http://nookdevs.com/NookTouch_Rooting にある方法。
Nookは、Sleepしていても、Firmwareが勝手に更新される。更新されるとRootingしていない元の状態に戻ってしまう。これも止めるため以下のスクリプトにある、Blocking OTA Updates  の方法は機能しないようである。

Rootingしてリブートや電源断/再投入をやると、リセットの無限ループに陥る。どうもuRAMDiskに問題があるのではと思う。

(2011/9/26追記)
http://forum.xda-developers.com/showthread.php?p=14936923
に、uRAMdiskの作り方がある。uRAMdiskを解凍して、init.rcを書き換え、rc.localをroot権限で起動するよう指定するだけのようである。これだけの作業であれば、リセットループには陥らないと思う。ii)にあるbootable microSDカードでのbootは、システムの安定性とは関係しないので、このmicroSDカードを使い、uRAMdiskをアクセスしたうえで、自分でroot対応したuRAMDiskを作って、安定化するか試してみたい。
上記サイトには、このやり方で作ったuRAMdiskがある、が、ひょっとして、Nookの版が違ってもともとのuRAMdiskの内容が違っているのかもしれない。しかしそうだとすると、uRAMdiskを変更した最初のbootで失敗するはずである。ともあれ、NookからコピーしたuRAMdiskと、これまで用いてきたuRAMdisk_rootedを両方展開して、内容がどう違うのか確認すれば、解決の糸口はつかめるかもしれない。init.rcで起動するようにしたrc.localが余計なことをやっているのかもしれない。。

それ以前にuRAMdiskを再生成する際のfindとcpioの引数がこれで妥当なのであろうか??? 展開するときに比べてずいぶんと引数が多いのが気になる。ただし、間違っていたら、rootingしたあとのrebootで失敗するはずであるが、これは成功する。そしてrootingした後の、rebootは失敗する。一旦rootになると、なぜrebootできないのだろうか、最初は上手くいくのに。。。ここにも、解決の糸口があるかもしれない??

CPIOのコマンド引数は以下に解説がある) http://www.mediaweb.biz/database/modules/database/article.php?articleid=7
mkimageコマンドは以下) http://www.yamasita.jp/linktheater/0602/060203.html

v. ツールのインストール)
vi. 日本語フォントのインストール)

日本語pdfや日本語ファイル名はそのままでも表示できるが、日本語ePubはフォントが化ける。以下で日本語フォントをインストールし、読書中に中央下三角マークからメニューを立ち上げ、text->FontでフォントをTrebuchetに変えれば日本語が表示できるようになる。ここでフォントを買えると、全ePubに対してそれが有効になるので、他の日本語ePubの日本語も読めるようになる。
以下) http://d.hatena.ne.jp/rudi/20110621/1308663846 のやり方を参考にした。
  1. http://mix-mplus-ipa.sourceforge.jp/download.html から日本語True Typeフォントをダウンロードする。今回は、MigMix-2P-20110610.zipをダウンロードした。すでにkのサイトのフォントは、20110825に版があがっているが、以下は、この0610版で記載する。
  2. Macのターミナルをあげて以下のコマンドを入力する。
    1. n キーを押して、Nook をスタンバイモードから抜けておく。stanbyではWiFiにはつながらない。
    2. WiFiでNookにadbを接続する。NookのIPアドレスをBB router等から取得。xx.xx.xx.xxとすると。
      adb connect xx.xx.xx.xx でconnectする。
    3. adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
    4. adb push MigMix-2P-regular.ttf /system/fonts/Trebuchet.ttf
    5. adb push MigMix-2P-regular.ttf /system/fonts/Trebuchet-Italic.ttf
    6. adb push MigMix-2P-bold.ttf /system/fonts/Trebuchet-Bold.ttf
    7. adb push MigMix-2P-bold.ttf /system/fonts/Trebuchet-BoldItalic.ttf
    8. adb shell ls /system/fonts/Trebuchet* とすると、フォントサイズが日本語TrueTypeのサイズに変わっている。
日本語ePubのサンプルを表示した写真を以下に示す。ePubの解説と、このサンプルePub は、
http://www.ipad-howto.com/ibook/epub_basic1.cfm にある。
経験上、ここまでは安定に動くので、ここでiii)のシステムイメージのバックアップを取っておく。が、これは駄目。バックアップをとった後に、システムを再起動しようとするとreset loopに陥る。rootingすると再起動できないのである。いまもって対策法は不明。

Vii. Androidアプリのインストール)

以下のシーケンスをばらしてMacのterminal windowから順に実行する。echoの部分はやる必要もない。
途中でNookがリブートしたり、同じコマンドを2度実行したりすると、Nookがリセットループに陥ることがある。
何が不安定の原因なのか今後解析したい。

現状わかっている課題。
1. Rootになると、rebootできない。rebootは無限ループに落ち込む。
2. 下記のBlocking OTA Updates をしていても、firmwareは勝手にupdateされる。すると、rootingが解けてしまい。adbでも入れないし、viでインストールした日本語フォントももとに戻ってしまう。ただし、1.0.0が1.0.1にアップデートされても以下は残る。

  • setting.db, devicemanager.db (サイズが大きいまま。再度sqlite3をやると、さらに大きくなる)
  • Superuser.apk (すでにinstall済みとエラーが出る)
  • TWL4030_keypad.kl
  • screensaverは、もとのauthorに戻ってしまっている。
特に、
echo ***************************
echo * Installing Applications *
echo ***************************
のあとのアプリの展開(install)の最初
adb install ./apks/com.amazon.kindle-1.apk
の際に、Nookがリブートする。これは、Macでscriptをひとつずつ実行しても、もともとのwindowsのバッチコマンドで実行しても変わらない。windowsバッチコマンドは、シフトを押しながらクリックしてアドミニストレータ権限で実行しても状況は改善しない。
原因が不明。

ファイルは、6分割されたファイルを以下から取得し、rarで結合し展開する。
http://forum.xda-developers.com/showthread.php?t=1132292


----
  Vi) と同様にして、adb connectで接続しておく。Vi)の操作と続けてやれば、再度adbを接続する必要はないが、Nookがstanby modeに入っていたら接続が切れている。

すくなくとも、adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
をやっておくこと。v) でやっていからrebootしていなければ不要。


echo ********************************
echo * Enabling non-market installs *
echo ********************************
adb pull /data/data/com.android.providers.settings/databases/settings.db settings.db
sqlite3 settings.db "update secure set value=1 where name='install_non_market_apps';"
adb push settings.db /data/data/com.android.providers.settings/databases/settings.db
rm settings.db

echo **********************
echo * Installing SQLite3 *
echo **********************
adb push ./mods/sqlite3 /system/bin

echo ***********************************
echo * Installing Superuser 2.3.6.1-ef *
echo ***********************************
adb install ./apks/Superuser.apk
adb push ./mods/su /system/bin
adb shell chmod 6755 /system/bin/su

echo ************************
echo * Blocking OTA Updates *
echo ************************
adb pull /data/data/com.bn.devicemanager/databases/devicemanager.db devicemanager.db
sqlite3 devicemanager.db "update registry set value='manual' where name='com.bn.device.fota.mode';"
adb push devicemanager.db /data/data/com.bn.devicemanager/databases/devicemanager.db
rm devicemanager.db

echo *******************************************
echo * Converting Left Buttons to (Menu, Back) *
echo *******************************************
adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
adb push ./mods/TWL4030_Keypad.kl /system/usr/keylayout/TWL4030_Keypad.kl
adb shell chmod 644 /system/usr/keylayout/TWL4030_Keypad.kl

echo ********************************************************
echo * Replacing Authors wallpapers with AWESOME wallpapers *
echo ********************************************************
adb push ./screensaver/authors /system/media/screensaver/authors

echo *****************************
echo * Installing Android Market *
echo *****************************
adb push ./gapps /system/
adb push ./mods/build.prop /system/
adb shell chmod 644 /system/build.prop

echo ******************************************
echo * Setting application permissions to 644 *
echo ******************************************
adb shell chmod 644 /system/app/*

echo ***************************
echo * Installing Applications *
echo ***************************
adb install ./apks/com.amazon.kindle-1.apk
adb install ./apks/NookColorTools_0.2.apk
adb install ./apks/com.smart.swkey-1.apk
adb install ./apks/com.bigtincan.android.adfree-1.apk
adb install ./apks/com.rhythm.hexise.uninst-1.apk
adb install ./apks/LauncherPro.apk
adb install ./apks/com.th.android.widget.gTabsimiClock-1.apk

echo **************************
echo * You Nook is rebooting!    *
echo * Wait until rebooted...      *
echo * Press the "n" Button     *
echo * Select the check box     *
echo * Select Launcher Pro     *
echo *                   *
echo * Enjoy!               *
echo **************************
adb reboot
adb kill-server
exit
blog comments powered by Disqus