Nook Touchについては以下) 2011年8月23日火曜日 電子ブックリーダの比較 - Nook Touchの詳細と脱獄
3つの手法がある。
- Nook Nooterを使った方法) http://forum.xda-developers.com/showthread.php?t=1132693 参照。
これはこのイメージの入ったmicroSDカードをいれてリブートするだけで、自動でAndroidアプリも含めてインストールされるが、私の環境ではきわめて不安定であり、だんだんアプリが起動しなくなる。特に、NookのHome画面に戻れなくなり。リブートすると、ブートの無限ループに陥る。何度も工場出荷時に戻した。 - スクリプトを利用した方法) 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画面にいけなくなる。そしてリブートすると、これもブートの無限ループに陥る。何度も工場出荷時に戻した。 - 上記2のスクリプトを分解し、Mac OS-Xからひとつずつアプリをインストールしていく方法
- システムイメージをMacにバックアップしておけば、上記2,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のディスク容量が必要。
バックアップ)
- Nook Touchがスタンドバイ状態でない稼動状態で、sleepボタンを名が押しすると、電源を落とすかのdialog boxがでる。ここで、電源を落とす。
- 上記ii.で作成した、micorSDカードをいれる。MacないしはPCにmicroUSBケーブルで接続すると、bootし、"Rooting Forever"の画面がでる。このとき、boot, NOOKの2つのpartitionがMacないしはwindowsにマウントされる。以下そのときのNookの画面である。
- 以下Macで解説する)
- /dev/disk3s1 on /Volumes/boot
- /dev/disk3s6 on /Volumes/NOOK
- terminal windowを開く。上記3のとおりマウントされているかmountコマンドで確認する。
- diskutil unmountdisk /dev/disk3 でNookをumountする。
- 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 と出るはずである。 - 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)の方法で完全に工場時出荷時に戻せると思われるからである。
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. ツールのインストール)
- adb - adbはandroidのリモートデバッガであり、以下から取得できる。
http://developer.android.com/sdk/index.html
コマンドについては以下などに解説がある。
http://android.akjava.com/cms/develop/sdk/tools/adb.html
- sqlite3 - リレーショナルデータベースであり、Androidのsetting.dbを修正し、non-marketアプリをNookにインストール可能にするために必要。以下から取得できる。
http://www.sqlite.org/download.html
日本語pdfや日本語ファイル名はそのままでも表示できるが、日本語ePubはフォントが化ける。以下で日本語フォントをインストールし、読書中に中央下三角マークからメニューを立ち上げ、text->FontでフォントをTrebuchetに変えれば日本語が表示できるようになる。ここでフォントを買えると、全ePubに対してそれが有効になるので、他の日本語ePubの日本語も読めるようになる。
以下) http://d.hatena.ne.jp/rudi/20110621/1308663846 のやり方を参考にした。
- http://mix-mplus-ipa.sourceforge.jp/download.html から日本語True Typeフォントをダウンロードする。今回は、MigMix-2P-20110610.zipをダウンロードした。すでにkのサイトのフォントは、20110825に版があがっているが、以下は、この0610版で記載する。
- Macのターミナルをあげて以下のコマンドを入力する。
- n キーを押して、Nook をスタンバイモードから抜けておく。stanbyではWiFiにはつながらない。
- WiFiでNookにadbを接続する。NookのIPアドレスをBB router等から取得。xx.xx.xx.xxとすると。
adb connect xx.xx.xx.xx でconnectする。 - adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
- adb push MigMix-2P-regular.ttf /system/fonts/Trebuchet.ttf
- adb push MigMix-2P-regular.ttf /system/fonts/Trebuchet-Italic.ttf
- adb push MigMix-2P-bold.ttf /system/fonts/Trebuchet-Bold.ttf
- adb push MigMix-2P-bold.ttf /system/fonts/Trebuchet-BoldItalic.ttf
- adb shell ls /system/fonts/Trebuchet* とすると、フォントサイズが日本語TrueTypeのサイズに変わっている。
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