LifeTouch Note

2011年5月31日 (火)

LTN用Debian(Lenny)配布ページ

Life Touch Note 用のDebian5.0(Lenny) の配布ページです。
現在のバージョンは0.10です。

Debian5.0をLTNに入れると以下のことができます。

  1. PCのDebian上で動いているソフトと同じものをLTNで動かすことが可能(一部動かないものあり)
  2. Androidで提供されていないソフトを動かす
  3. ソフトをLTNでコンパイルしてLTN上で動かす等

現時点では、以下のものがきちんと動きません

  1. サウンド機能(音が出ません)
  2. フラッシュ(flv)等の動画再生
  3. x-window上でのネット接続(一般ユーザー権限)
  4. Nvidiaのハードウェアアクセラレーション機能の使用
  5. LTNのセンサー(GPS等)
  6. テキストの色がおかしい(初期化されていないため)
  7. タッチスクリーンのキャリブレーションがうまくいかない
  8. コンソールのカーソルが出ない、キーリピートしない(x-windowだと大丈夫)

いずれ解決するかもしれません。また他にも動かないものがあるかもしれません。

スクリーンショット

lxde

Lxde

icewm

Icewm

gnustep

Gnustep

ここでは以下のものをダウンロードできます。

  1. Debian5.0のルートファイルシステムイメージ(cpio.gz)
  2. リカバリーパーティションに書き込むイメージ
  3. セットアップ用スクリプト
  4. busybox

ファイルのサイズを小さくするため、x-window-systemは入っていません。
LTNの起動後に、apt-get等を使用して必要なパッケージを入れてください。
本ページの後半に、各種ソフトを入れるためのコマンド等をメモしてあります。

注意
LTNのリカバリーパティションを書き換える必要があります。
パーティションの書き換えに失敗したり、書き換えの手順を間違えると、LTNが起動しなくなったり、メーカー修理が必要となる場合が考えられます。
また、この使用方法はメーカーが保障しない使用方法になりますので、メーカー修理も拒否される可能性も考えられます。
そのため、十分に注意して使用ください。

必要なもの

  1. SDカードをext3でフォーマットできる環境(Linux PC)
  2. LTN上で動く端末ソフトか、adb経由でLTNのコンソールへ接続できる環境
  3. root化ずみのLTN
  4. Linux(Debian)を普通に使える知識

LTNの構成として、/dev/block/mmcblk3p3にリカバリーパーティション、
/dev/block/mmcblk3p6に/system
/dev/block/mmcblk2p1に/sdcardがマウントされる環境前提です。
違う場合はインストールできません。

手順1
SDカード(空のもの)を用意してください。2GB以上は必要でしょう。SDHCのClassは6とか10とか、早いものがいいです。

LTNに付属しているSDカードはFAT32でフォーマットされています。
FAT32でフォーマットされているSDカードには、Debianを入れることができません。
付属のカードはAndroidのソフトを入れたりできますので、そのままとっておきましょう。

PC上でSDカードをext3でフォーマットしてください。
Debianを入れるパーティションはSDカードの第1パーティションになります。
必要とあらば、fdiskを使用して、SDカードにswap用のパーティションをあらかじめ作っておくのもよいと思います(2番目以降のパーティション)。

SDカードをext3でフォーマットするには以下のようにしてください
(/dev/sdc1がSDを示す場合)
#mkfs.ext3  /dev/sdc1

SDカードをフォーマットしたら、以下のファイルをSDカードの/にコピーしてください。

ltna-debian-010.tar.gz

そしてtarで展開してください。
展開するとSDの/に以下のファイルができます。

  1. recovery2.img
  2. ltna-debian-rootfs.cpio.gz
  3. setup_recovery.sh
  4. setup_rootfs.sh
  5. busybox
  6. sh

#tar xfpz ltna-debian-010.tar.gz

tarで展開したらltna-debian-010.tar.gzは消してもらってかまいません。

その後に、SDカードをumountしてから、LTNにSDカードを入れてください。
ここからはAndroidが起動しているLTN上での作業になります。

LTNの端末ソフト、あるいはadb経由でLTNに接続して
コンソールを開きrootになってください。
そして以下のコマンドを実行してください。

#mount -t ext3 /dev/block/mmcblk2p1 /sdcard

SDカード上の第1パーティションを/sdcardにマウントします。
(ext3なのでAndroidからは自動でマウントされません)

/sdcardに移動してから、setup_rootfs.shを実行します。
このコマンドで、SDカードにdebianのルートファイルシステムを展開します。
そして、Androidの無線LAN用の定義ファイルや、bluetooth動作に必要なファイルを
SDカードにコピーします。

#cd /sdcard
#./setup_rootfs.sh

extract...
copy wpa_supplicant.conf
copy /system/lib/BCM4329B1.hcd
copy bcm4329 files...
copy /system/lib/hw/wlan/usibcm4329-RC218-nvram.txt

debian rootfs ready.

と表示されれば、SDカードにルートファイルシステムが展開されたことになります。

エラーとか出た場合は教えてください。

さて、次にLTNのリカバリーパーティションを書き換えます。
setup_recovery.shを実行すると書き換えます。
一応念のため、/systemが/dev/block/mmcblk3p6で、
/dev/block/mmcblk3p3がどこにもマウントされていない環境でのみ
書き換えるようになっています。
もし違う場合はリカバリーパーティションを書き換えずに終わります。
以下のようにして実行します。

#./setup_recovery.sh
Backup recovery...
New recovery ready.

と出れば終わりです。
SDカードにrecovery_org.imgというファイルができます。
これが、オリジナルのリカバリーパーティションの内容です。
後で戻すことができます。

これを本体の/data/local/tmp/以下とか、外付けHDDにでもバックアップしておくといいでしょう。後でrecovery_org.imgを書き戻せば元に戻ります。

#cp recovery_org.img /data/local/tmp/

sdcardのbusybox、ltna-debian-rootfs.cpio.gz、recovery2.img、setup_recovery.sh、
setup_rootfs.shはいらないので消しても大丈夫です。

SDカードをumountします。

#cd /
#umount /sdcard

端末ソフトを終了させて、LTNの電源をOFFにします。

Debianの起動

電源をOFFにしたら、ホームボタンを押しながら電源をONにします
(上段の右から4つ目のボタン)。

ホームボタンはNECのロゴが出てから離します。
問題がなければLinuxの起動メッセージが流れて、その後にログイン画面が出ます。
SDカードによっては、LinuxのInitが起動するタイミングで十数秒またさせることもあります。

ユーザーは2つあります。userとrootです。

一般ユーザー:user
パスワード:user

ルート:root
パスワード:root

ログインしたら、rootのパスワードとuserのパスワードを違うものに変更しておきましょう。
passwdコマンドで変更できます。

自宅の無線LANがDHCPなら、以下のように入力すればIPアドレスが割当たるはずです(最初だけ必要)。

#ifup eth0

環境が違う等の影響でネットに接続できないなら、一般的なLinuxと同じように
以下の場所にあるファイルを書き換えてください。

  1. /etc/network/interface
  2. /etc/wpa_supplicant/wpa_supplicant.conf

無線LANのHWが認識していないなら、lsmodでdhdというモジュールがロードされているかも確認してください。
無線LAN用のiwconfigも入っていますので、ネット接続がうまくいかない場合は、
確認してください。

IPアドレスが割当たっている状態なら、apt-getコマンドでソフトをインストールできます。
アップデートしてから、ここではjfbtermを入れてみます。

#apt-get update
#apt-get install jfbterm

jfbtermが無事に入ったら後は好きなようにカスタマイズしてください。

各種ソフトを入れるためのメモ

[bluetooth]
bluetoothのキーボード、マウスが使えます。

#apt-get install bluez-utils

以下のように入力すると、LTNのBluetooth機能が正しく動いているか分かります。
#hcitool device

Bluetoothマウスを認識させたい場合(マウスをペアリング可能にしてから)
#hidd --search
と入れれば相手のBD Addressが見つかってマウスが使用できるようになります。

[時刻合わせ]

#apt-get install ntp

[ssh]

#apt-get install ssh

[開発環境]

#apt-get install build-essential

gccやmake等の開発環境が入ります。

[x-window-system]

基本+フォント+タッチスクリーンドライバ
#apt-get install x-window-system ttf-mona ttf-kochi-gothic ttf-kochi-mincho
#apt-get install xfonts-shinonome*
#apt-get install xserver-xorg-input-evtouch

ウインドウマネージャー(お好みで)
#apt-get install icewm

#apt-get install lxde

#apt-get install gnustep menu
#apt-get install wmbubble wmcalclock

インストールに時間がかかるのもあるので、ACアダプターをつないでおいたほうがいいでしょう。

インストールが終わったら、/opt/ltna/xorg.confファイルを/etc/X11/に上書きコピーしてください。
LTN用の xorg.conf になります。

#cp /opt/ltna/xorg.conf /etc/X11/

タッチスクリーンの位置がずれる場合は、/etc/X11/xorg.confファイル内の
xmin、ymin、xmax、ymaxの値を少しいじってみてください。

タッチスクリーンのクリックで普通の左クリックになります。
タッチスクリーンを長押しすると、右クリックになります。
ただし、押した位置がずれると、ドラッグになるので、
右クリックしたいときは、押した位置がずれないようにしてください。

gnomeやkdeはおすすめしません。gnomeはインストールにすごく時間がかかります。また、インストールが途中で進まなくなってしまうパッケージがありました。
Ctrl+Cキーで中断すれば最後までいきました。

グラフィカルログインにしたいなら
#apt-get install gdm

x-window上で動くターミナルソフト
#apt-get install rxvt-unicode

私のLTNはgnustepにしています(動作が軽いので)。

[日本語化]
#apt-get install locales
#dpkg-reconfigure locales

ja_JP.UTF-8 を選択

日本語化したら、コンソールログインでキーボードがきかなくなりました。
まったくでたらめの配列になってしまってログインできなくなりました。
日本語化するなら、x-windowとgdmを入れておいてください。
(グラフィカルログインで使うなら問題ありません)

gnustepは日本語化すると、メニューが文字化けするので、
使用するフォントをWindow Maker Perferenceで日本語のフォントに変更してください。

[OpenGL]
#apt-get install mesa-base mesa-utils

glxdemoとかglxgearとか







| コメント (10) | トラックバック (0)

2011年5月23日 (月)

LifeTouch NoteにDebianを入れる3

LifeTouch NoteにDebianを入れる2の続き。

必要なもの

  1. android-sdk(mkbootfs、mkbootimg)

リカバリーモード用のinitramfsを書き換える。
リカバリーモードで起動すると、initramfsの/initが実行されるが、
initの中身を書き換えて、SDにLinuxのルートファイルシステムがあれば、
そちらを起動するようにする。
SDカードがなければ通常のリカバリーモードが実行されるようにする。
まずは、リカバリーモード用のパーティションを書き換える必要がある。

リカバリーモード用のパーティションの調べ方。

LTN上のコンソールを表示する。
LTNに端末ソフトを入れるか、PCからLTNへadb軽油で接続する。
リカバリーモード用のパーティションは、ロットとかモデルによって違うかもしれない。
操作を誤ると起動しなくなったり、メーカー修理になることもあるので注意すること。

mountコマンドでマウントされているパーティションを調べる。

$su
#busybox mount
/dev/block/mmcblk3p2 /fdt
/dev/block/mmcblk3p6 /system
/dev/block/mmcblk3p9 /data
/dev/block/mmcblk3p7 /cache
/dev/block/mmcblk3p1 /misc

私のLTNは上記のようになっている。
マウントされていないmmcblk3p3が、リカバリー用パーティションと仮定して、
ddコマンドで中身を取り出し、イメージをSDカードに保存する。

#busybox mount /dev/block/mmcblk2p1 /sdcard
#busybox dd if=/dev/block/mmcblk3p3 of=/sdcard/recovery.img

recovery.imgをzImageとinitramfsに分解する。
これはPC上で行う。

分解用のperlスクリプトがあるみたいだが、リンク切れで入手できなかった。
なので、自分でc言語で抜き出しソフトを書いた。
intel のx86用バイナリを置いておく。

「android_split」をダウンロード

以下のようにするとファイルが抜き出せる。

$android_split recovery.img

できるファイルは3つ。
android.header.bin
android.kernel.bin
android.ramdisk.bin

抜き出したイメージがAndroid用のboot、またはリカバリーイメージでない場合は、
not ANDROID imageと出るので、そのときは違うパーティションで試すこと。

android.header.binはファイル中の先頭から2KBのもの。
ヘッダや起動時にカーネルへ渡すコマンドライン等が入っている。android.kernel.binはzImageそのもの。android.ramdisk.binはinitramfs。

抜き出したinitramfsを以下のようにしてマウントする。
rootになって行う。

#mkdir ramdisk
#cd ramdisk
#zcat ../android.ramdisk.bin | cpio -id

以下のようなファイルがあるはず。

data
default.prop
dev
etc
init
init.goldfish.rc
init.rc
proc
res
sbin
sys
system
tmp
var

起動に必要なファイル(busybox)をramdisk/sbin/にコピーする。
そして必要そうなファイルも用意しておく。
(busyboxは/xxx/yyy/busyboxにある場合)

#cp /xxx/yyy/busybox sbin/
#cd sbin
#chmod 755 busybox
#ln -s /sbin/busybox switch_root
#ln -s /sbin/busybox mount
#ln -s /sbin/busybox umount
#ln -s /sbin/busybox mknod
#ln -s /sbin/busybox cp
#ln -s /sbin/busybox mv
#ln -s /sbin/busybox rm

起動時に表示される画像(ロゴ)もじゃまなので、

ramdisk/のinitlogo.rleをinitlogo.rle.disable等にファイル名を変更しておく。

initの改変

android2.2(froyo)のinit.cに以下のパッチをあてる。
コンパイル済みのバイナリも用意した。

パッチの内容
android-2-2のsystem/core/init/init.cのmain関数。
action_for_each_trigger("init", action_add_queue_tail);
drain_action_queue();
の後に以下のコードを入れる。
init.rcのinitセクションを実行した後に実行されるような箇所。

busyboxのswitch_rootコマンドでrootfsの移行をしている。
(/rootにSDカードをマウントする処理が必要)

//<- for LTN
    {
    static char *argv[] = {"switch_root","/root","/sbin/init","/bin/bash",NULL};

    // SD Card Check
    fd = open("/root/sbin/init",O_RDONLY);
    if (fd >= 0) {
        close(fd);
        umount("/tmp");
        umount("/cache");
        umount("/sys");
        umount("/proc");
        umount("/dev/pts");
        umount("/dev");
        execv("/sbin/busybox",argv);
    }
    }
// ->

「init」をダウンロード

initをramdiskの/にコピーし、実行権限をつけておく。

init.rcの変更をする。
initramfs内で、/rootを作成し、/dev/block/mmcblk2p1(rootfs)をマウントする指示を付け加える。

変更する箇所は以下の場所(+の行。+は含めない)
# create mountpoints
     mkdir /sdcard
     mkdir /misc
     mkdir /staging
     mkdir /system
     mkdir /data
     mkdir /cache
+   mkdir /root
     mount tmpfs /tmp /tmp

...

  # mount mtd partitions
  # Mount /system rw first to give the filesystem a chance to save a checkpoint
  # mount ext2 /dev/block/mmcblk3p6 /system
  # mount ext2 /dev/block/mmcblk3p6 /system ro remount
+  mount ext3 /dev/block/mmcblk2p1 /root
      mount ext3 /dev/block/mmcblk3p7 /cache nosuid nodev
      chown system cache /cache
      chmod 0770 /cache

変更準備が終わったら、新recovery.imgを作る。
ramdiskの階層で以下のコマンドを実行(mkbootimg は長いけど一行で)。

#find . | cpio -o -H newc | gzip > ../android.ramdisk-new.bin
#mkbootimg --cmdline 'mem=384M@0M nvmem=128M@384M vmalloc=256M video=tegrafb console=tty0,115200n8 usbcore.old_scheme_first=1 \
#no_console_suspend tegraboot=sdmmc egrapart=pt:600:80:800,bootloader:680:400:800,fdt:1180:12c00:800, \
#recovery:13d80:a00:800,boot:14800:1000:800,mbr:b80:200:800,system:15880:18000:800, \
#cache:2d900:12c00:800,misc:d80:400:800,staging:40580:1f400:800,userdata:5fa00:35b600:800' \
#--kernel android.kernel.bin --ramdisk android.ramdisk-new.bin --base 0x10000000 -o recovery2.img

 (最初に抜き出したrecovery.imgをとっておけば、いつでも戻せる)

recovery2.imgをSDカードへコピーする。
(/mnt/hd1がSDカードの第一パーティション)

#cp recovery2.img /mnt/hd1/
#umount /mnt/hd1

そして、LTNへSDカードを挿入しAndroidを起動する。
LTN上で端末ソフトを起動し、ddで書き込む。
/dev/block/mmcblk3p3がリカバリーパーティションでない場合は適時読み替えること。

$su
#busybox mount /dev/block/mmcblk2p1 /sdcard
#cd /sdcard
#busybox dd if=./recovery2.img of=/dev/block/mmcblk3p3

Debianのルートファイルシステムが入っているSDをLTNに入れて、
HOMEキーを押しながら電源ONにすると、Debianが立ち上がるはず。


| コメント (0) | トラックバック (0)

2011年5月21日 (土)

LifeTouch NoteにDebianを入れる2

LifeTouch NoteにDebianを入れる1の続き。

無線LANとBluetoothを使えるようにする。

1.無線LAN

LTNで使用している無線LANはbcm4329。
bcm4329は動作させるためにファームウェアを読み込む必要がある。
これに必要なファイル一式をSDカードにコピーする。
コピー元のファイルは、Androidの/system/lib/hw/wlan/にある。

事前にAndroid上で無線LANを使えるようにしておく。

LTNにDebianのルートファイルシステムを書き込んだSDカードを挿入し、マウントする。
ext3なので手動でマウントさせる必要がある。

LTN上に入れた端末ソフトか、PCからLTNへadbで接続してLTNのコンソールで操作する。

$su
#busybox mount /dev/block/mmcblk2p1 /sdcard
#cd /sdcard/lib
#busybox mkdir firmware
#cd firmware
#busybox cp /system/lib/hw/wlan/* .
#busybox rm nvram.txt
#busybox mv usibcm4329-RC128-nvram.txt nvram.txt

usibcm4329-RC128-nvram.txtはファイル名が違うかもしれないので、そのときは適時読み替えること。

以下のようなファイルが/sdcard/lib/firmwareにあるはず。

bcm4329.ko
fw_bcm4329.bin
fw_bcm4329_apsta.bin
nvram.txt
calibration

2.Bluetooth

Bluetoothを動かすために、bcm4329にファームウェアをロードする必要がある。
そのファームウェアは/system/lib/BCM4329B1.hcdにある。
ファームウェアをロードするためにbrcm_patchram_plusというのも必要になるが、元のAndroid用のは使えないので、ソースコードにパッチをあててコンパイルする必要がある。

まずは、BCM4329B1.hcdを/sdcard/lib/firmwareにコピーする。

#busybox cp /system/lib/BCM4329B1.hcd .
#busybox mv BCM4329B1.hcd bcm4329.hcd

コピーが終わったらSDカードをアンマウントしてPCに挿入する。

brcm_patchram_plusはAndroid用のソースをダウンロードしてきてパッチをあてて作成する。
brcm_patchram_plusの作り方の元ネタはここ
コンパイル済みのものを用意した。
「brcm_patchram_plus」をダウンロード

 

brcm_patchram_plusをSDカードの/usr/bin/にコピーする。
(私の環境では、/dev/sdc1がSDカードの第一パーティション)

#mount /dev/sdc1 /mnt/hd1
#cp brcm_patchram_plus /mnt/hd1/usr/bin/
#chmod 755 /mnt/hd1/usr/bin/brcm_patchram_plus

3.その他

Linuxで起動したときに、無線LAN用モジュールをロードするようにスクリプトを用意する。

perlで適当に作ったスクリプト。
「ltnaw」をダウンロード

 

ltnawをSDカードの/etc/init.d/にコピーする。
#cp ltnaw /mnt/hd1/
#chmod 755 /mnt/hd1/etc/init.d/ltnaw
#ln -s /etc/init.d/ltnaw /mnt/hd1/etc/rc2.d/S10ltnaw
#ln -s /etc/init.d/ltnaw /mnt/hd1/etc/rc3.d/S10ltnaw
#ln -s /etc/init.d/ltnaw /mnt/hd1/etc/rc5.d/S10ltnaw

/etc/network/interface ファイル

以下のようなinterfacesファイルを作って、SDカードの/etc/network/にコピーする。
(essidsecretは、使用しているessidに書き換えること)

auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet dhcp
wpa-essid "essidsecret"
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

#cp interfaces /mnt/hd1/etc/network/

wpa_supplicant.conf ファイル
以下のようなwpa_supplicant.confファイルを作って、SDカードの/etc/wpa_supplicant/にコピーする。
(WPA2の場合)

ctrl_interface=eth0
update_config=1
network={
    proto=WPA2
    ssid="essidsecret"
    psk="psksecret"
    key_mgmt=WPA-PSK
    pairwise=CCMP
    priority=1
}

#cp wpa_supplicant.conf /mnt/hd1/etc/wpa_supplicant/

カーネルモジュール

nvidiaのtegra用Linuxカーネルを元に、NTNの/proc/config.gzの設定を摘要させ、
できたLinuxカーネルモジュールをSDカードの/lib/modulesにコピーしておく。
(ないと、起動時にエラーかなにかが出るため)
このモジュールはきちんと使えるか不明。
NECがきちんと、LTN用のLinuxカーネルを公開してくれれば問題ないんだが。
(GPLだから公開する義務があるはず...)

「libs.tar.gz」をダウンロード

(/xxx/yyy/libs.tar.gz はlibs.tar.gz ファイルの場所)
#cd /mnt/hd1/
#tar xfpz /xxx/yyy/libs.tar.gz

LifeTouch NoteにDebianを入れる3に続く。

| コメント (0) | トラックバック (0)

2011年4月28日 (木)

LifeTouch NoteにDebianを入れる1

Life Touch NoteにLinux(Debian)を入れ、ブートさせることに成功したのでメモ。
以下Life Touch Noteは長いのでLTNと略して書く。

手順は以下のとおり

  1. SDカード上にLinuxのルートファイルシステムを構築。
  2. Androidでchrootした環境でDebianの設定
  3. リカバリーモード用のinitramfsを書き換え
  4. Linuxブート後の設定

事前に必要なこと

  1. LTNのroot化
  2. LTN上で動くbusyboxの用意
  3. Android上で無線LANの接続設定
  4. PCにadbでLTNに接続できる環境。またはLTN上で動く端末ソフトのインストール

この記事は上級者向けです。手順を間違えるとLTNが起動不能になる可能性もあります。

入れるLinuxはDebianのlenny。
最新のsqueezeにしたかったが、LTNのLinuxカーネルとの相性が悪くudevが動かない。(squeezeには、signalfdを有効にしたカーネルが必要だが、LTNのカーネルは有効になっていない)

今回は16GのSDHCカードを使用した。

SDにパーティションを切ってext3でフォーマット。
1番目はext3。2番目のパーティションはスワップ用に確保。
Command (m for help): p
Disk /dev/sdc: 15.9 GB, 15931539456 bytes
256 heads, 63 sectors/track, 1929 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1793    14458720+  83  Linux
/dev/sdc2            1794        1929     1096704   82  Linux swap / Solaris

最初この実験のため、SanDisk 16GB (Extreme Class6)のカードを購入し、それにLinuxの起動に必要なデータを入れて試していたが、apt-get 中、頻繁にwriteエラーやmmapエラーが出る。すごく不安定で使い物にならないので、違うPanasonicのSDカードで試してみると、エラーはまったく出なく調子が良くなった。

私のLTNと購入したSanDiskのカードとの相性が悪いのか、SanDiskのカードが壊れたのかわからない。でもSDカードにLinuxを入れて使うなら、PanasonicのSDカードが良いかもしれない。
使用しているのがPanasonicのSDHC 8GB(Class4)とPanasonicのSDHC 4GB(Class10)のもの。なるべくなら読み書きが早いほうがいい。

1.SDカード上にLinuxのルートファイルシステムを構築。

SDカード上にfdiskでパーティションを作成し、ext3でフォーマットする。ext4にしたかったがLTNのカーネルがext4をサポートしていなかったのでext3にする。
以下の作業はPCで行う。

私の環境だと、sdc1がSDカードの第1パーティション(PCのHDDと間違わないように注意すること)。

#mkfs.ext3 /dev/sdc1

次に、debootstrapコマンドで、最小構成のルートファイルシステムを作成する。
debootstrapコマンドがなければインストールする。

#apt-get install debootstrap

PCにディレクトリを作り、そこにLTN用のルートファイルシステムを作成する(/xxx/yyy/deb5以下に作成)。

#mkdir /xxx/yyy/deb5
#cd /xxx/yyy/deb5
#debootstrap --foreign --arch armel lenny /xxx/yyy/deb5 http://ftp.debian.org/debian/

昔、SharpのZaurusをDebian化しようとしてdebootstrapを使ったとき、--foreignオプションがうまく機能しなかった。今ならできるようだ。

apt-getでソフトを入れるために、SDカードに/etc/apt/sources.listを入れておく。
PCでDebianが動いているならPC上のsources.listが使えるので、
それをSDカードにコピーする。sources.listの中身にsqueezeを指定してあるなら、
編集してlennyにする。ここではいったん規定の/etc/apt/の下ではなく/にコピーしておく。

#cp /etc/apt/sources.list /xxx/yyy/deb5/

deb5をtarで固めてSDカード上で展開(/mnt/hd1はマウント先の例)。

#tar cfz ../deb5.tar.gz *
#mount /dev/sdc1 /mnt/hd1
#cd /mnt/hd1
#tar xfpz /xxx/yyy/deb5.tar.gz
#umount /mnt/hd1

2.Androidでchrootした環境でDebianの設定

ここからはLTN上で作業する。

SDカードをLTNに挿入してLTNを普通に起動する。
LTN上で動いている端末ソフトか、PCからLTNへadb経由で接続し、LTN上のコンソールにて操作できるようにしておく。

SDカードに作ったルートファイルシステムにchrootする。
chrootした環境でdebootstrapの2nd stageを実行する。
Android上で無線LANにてネットワークに接続可能になっていれば、chrootした後の環境でもネットワークに接続することが可能。それを利用して必要なソフトもインストールできる。

以下LTN上のコンソール。
(mmcblk2p1 はSDカード)

$su
#busybox mount /dev/block/mmcblk2p1 /sdcard
#busybox chroot /sdcard
#export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/debootstrap
#export TERM=linux
#mount -t proc none /proc
#mkdir /dev/pts
#mount -t devpts none /dev/pts
#mount -t sysfs none /sys
#debootstrap/debootstrap --
second-stage

Base system installed successfully.
と出て終了するはず。

apt-get コマンドで必要になりそうなものをインストール。
/にコピーしてあったsources.listを規定の場所へ移動しupdate。

#mv /sources.list /etc/apt/
#apt-get update
#apt-get install wireless-tools
#apt-get install wpasupplicant

Debianで起動させるための事前設定をする。

ユーザーの追加やrootパスワード、hostname、キーボードの設定をする。

#adduser xyz
#passwd
#echo "xxx" > /etc/hostname

タイムゾーンをTokyoに設定。
#dpkg-reconfigure tzdata
キーボードをJapaneseの106に。
#apt-get install console-tools

chroot環境を抜けて、Android上の/dev/ファイルの中身をSDカードの/dev/へコピーする。
#exit
lsでAndroidのルートファイルシステムが表示されることを確認。
initやinit.rcが見えればよい。

#cd /sdcard/dev
#busybox cp -R /dev/* .

続きは2で。



| コメント (0) | トラックバック (0)

2011年4月10日 (日)

Linux kernel ビルド

Tegra dev-kit 用のLinux kernelを取得して、実機の/proc/config.gzを元にLinux kernelをコンパイルしてみた。

コンパイルは問題なく終わり、試しにリカバリー用のrecovery.imgに新しくコンパイルしたzImageを入れかえて起動させてみた。
すると、起動中のUSB Ehci のメッセージが出るところで
「!!! Error in accessing ULPI」
と出て止まってしまった。

USBのHost側を無効にして再びトライ。
今度は、タッチパネル系のメッセージでリードできないというのが永遠と出力され続ける。

タッチパネル系の機能も無効にするとやっと起動した。
でも、
本体のキーボードをいじっても反応なし。
本体のSDHCスロットも使えない。

tegraのdev-kitとHW構成が違うからだめかも。

せっかくなので、/sys/bus/platform/devicesの内容以下にメモしておく。
(どのH/Wが有効になっているかの手がかり)

  • 普通に本体を起動したとき

alarm
android_usb
asari-gps-rfkill.0
headset-switch
lbee9qmb-rfkill.0
nvaes
nvec
nvecUpdate
nvec_leds
nvrm
nvtegrafb
power.0
serial8250
serial8250.0
tegra-ehci.2
tegra-sdhci.0
tegra-sdhci.2
tegra-sdhci.3
tegra-udc.0
tegra-Msensor
tegra-battery
tegra_gart
tegra_grhost
tegra_i2c.0
tegra_i2c.1
tegra_i2c.3
tegra_regulator
tegra_rtc_odm
tegra_spi.0
tegra_thermal
tegra_touch
tegra_uart.1
tegra_uart.2
tegra_vibe
usb_mass_storage

  • ビルドしたカーネル

alarm
android_usb
lbee9qmb-rfkill.0
nvaes
nvec
nvrm
nvtegrafb
serial8250
serial8250.0
tegra-sdhci.0
tegra-sdhci.1
tegra-sdhci.3
tegra-udc.0
tegra-battery
tegra_gart
tegra_grhost
tegra_i2c.0
tegra_i2c.1
tegra_i2c.3
tegra_nand
tegra_regulator
tegra_rtc_odm
tegra_spi.0
tegra_uart.1
tegra_uart.2
tegra_uart.3
usb_mass_storage

| コメント (1) | トラックバック (0)

2011年4月 7日 (木)

リカバリーモード時のadb接続

Android のリカバリーモード(HOMEキーを押しながら電源ON)したときにでも、
PCとUSBケーブルで接続し、ADB経由でファイルのpushやshellで入れるように設定する。
その方法のメモ。

Life Touch Noteをadbで接続するときに必要となるUSBのIDは以下のとおり。

Life Touch Noteの設定も「USBデバッグ」をONにしておく。

ベンダID:0409
プロダクトID:0301
/etc/udev/rules.d/に51-android.rulesというファイルを作って認識するようにしてある。
SUBSYSTEM="usb",SYSFS{idvendor}="0409",mode="0301",GROUP="xxxxx"
xxxxxはLinuxでログインしているユーザー名

必要なもの

  • root化
  • busybox
  • sdcard
  • Linux PC
  • バイナリエディタ
  • android sdk(adb、mkbootfs、mkbootimg)

busyboxはLifeTouch Noteで動くものを入手する。
私はPC上でクロスコンパイルした。
(どこかでダウンロードしたbusyboxは起動しなかった)。
busyboxのdd、mount、shコマンドを使用する。

まず、コンソールを表示する。
これはLifeTouchNote本体にTerminalソフトを入れるか、
PCとUSBケーブルを接続し、adb shell コマンドを使用する。

リカバリーモードのイメージはddコマンドで吸い出す。
イメージが格納されているパーティションは、ロットとかモデルによって違うかもしれない。
操作を誤ると起動しなくなったり、メーカー修理になることもあるので注意すること。

suでsuper userになる。
そのあと、mountコマンドでマウントされているパーティションを調べる。
(busyboxのmountじゃなくてもいいかもしれないが、元からmountコマンドが使えたか忘れた)

$su
#busybox mount
/dev/block/mmcblk3p2 /fdt
/dev/block/mmcblk3p6 /system
/dev/block/mmcblk3p9 /data
/dev/block/mmcblk3p7 /cache
/dev/block/mmcblk3p1 /misc

とか出てくる。
マウントされていないmmcblk3p3が、リカバリー用パーティションと仮定する。
(/dev/block/mmcblk3p4は拡張パーティションだった)

ddで抜き出し、SDに保存する。
#dd if=/dev/block/mmcblk3p3 of=/sdcard/recovery.img

ついでにバックアップ目的で/systemも保存しておく。
#dd if=/dev/block/mmcblk3p6 of=/sdcard/system.img

このrecovery.imgがAndroidのboot.imgもしくはrecovery.imgなら以下のようになってる。
ファイルの先頭から
Offset:0-7:ANDROID!
Offset:8-11:Linuxカーネルのサイズ
Offset12-15:Linuxカーネルがメモリーにロードされるアドレス
Offset16-19:initramfsのサイズ
Offset20-23:initramfsがメモリーにロードされるアドレス

実際に抜き出したものは以下のようになっていた。
Offset0:ANDROID!
Offset8:002BDEA4
Offset12:10008000
Offset16:00029DD1
Offset20:11000000

recovery.imgをzImageとinitramfsに分解する。
PCのLinuxで操作する。

分解用のperlスクリプトがあるみたいだが、リンク切れで入手できなかった。
なので、自分でc言語で抜き出しソフトを書いた。

「android_split.c」をダウンロード
gccでコンパイル可能。
gcc -o android_split android_split.c

以下のようにするとファイルが抜き出せる。
$android_split recovery.img

できるファイルは3つ。
android.header.bin
android.kernel.bin
android.ramdisk.bin

android.header.binはファイル中の先頭から2KB。ヘッダやコマンドライン等が入っている。android.kernel.binはzImageそのもの。android.ramdisk.binはinitramfs。

抜き出したinitramfsを以下のようにしてファイルとして取り出す。
ramdiskというディレクトリを作ってその中に書き出す。rootになって行う。

#mkdir ramdisk
#cd ramdisk
#zcat ../android.ramdisk.bin | cpio -id

ファイルを変更する。
<が変更前、>が変更後の行
adbで接続可能にして、接続後はroot。

[default.prop]
#ro.secure=1
ro.secure=0

#ro.debuggable=0
ro.debuggable=1

#persist.service.adb.enable=0
persist.service.adb.enable=1

必要なファイルのコピー(PC上のrootで)
Life Touch Note上で動作するbusyboxをramdisk/sbin/にコピーする。
#cp ../busybox sbin/
#cd sbin
#chmod 755 busybox
必要そうなコマンドも作っておく。
#ln -s /sbin/busybox /sbin/ash
#ln -s /sbin/busybox /sbin/dd
#ln -s /sbin/busybox /sbin/mkdir
#ln -s /sbin/busybox /sbin/mount

adbでの接続時は、/system/bin/shが必要なので
mkdirでディレクトリがなければ作って。
/sbin/busyboxへリンクしておく
#cd system/bin
#ln -s /sbin/busybox sh

変更準備が終わったら、新recovery.imgを作る。

ramdiskの上の階層へ戻って以下のコマンドを実行。
$mkbootfs ./ramdisk | gzip > android.ramdisk-new.bin
$mkbootimg --kernel android.kernel.bin --ramdisk android.ramdisk-new.bin --base 0x10000000 -o recovery2.img

これをLife Touch Noteに書き込む。
(最初に抜き出したrecovery.imgをとっておけば、いつでも戻せる)
$adb push recovery2.img /data/local/tmp/
$adb shell
ここからLife Touch Note
$su
#cd /data/local/tmp
#ls
でファイルがあるかを確認。
そして、リカバリーパーティションへ書き込み。
(間違って違うところに書き込まないように注意)
busybox dd if=/data/local/tmp/recovery2.img of=/dev/block/mmcblk3p3

これで、HOMEキーを押しながら電源ONにすると、リカバリーモード上からadbで接続可能になる。

| コメント (0) | トラックバック (0)

2011年3月26日 (土)

mmcblk3の領域

LifeTouch Noteの内蔵ディスク領域を調べてみた。
カーネルコマンドラインに渡されているパラメーターにtegrapartというのがある。
以下はその抜粋

tegrapartの内容

  • pt:600:80:800
  • bootloader:680:400:800
  • fdt:1180:12c00:800
  • recovery:13d80:a00:800
  • boot:14800:1000:800
  • mbr:b80:200:800
  • system:15880:18000:800
  • cache:2d900:12c00:800
  • misc:d80:400:800
  • staging:40580:1f400:800
  • userdata:5fa00:35b600:800

内部で実際にマウントしているディレクトリはこれ
/dev/block/mmcblk3p6    /system
/dev/block/mmcblk3p9    /data
/dev/block/mmcblk3p7    /cache
/dev/block/mmcblk3p1    /misc

mmcblk3のパーティションテーブル(LBAで記載、SIZEはセクタ)

  • P1:Linux(83h)、LBA:00000800、SIZE:00001000
  • P2:Linux(83h)、LBA:00001800、SIZE:0004B000
  • P3:Linux(83h)、LBA:0004C800、SIZE:00002800
  • P4:拡張(05h)、LBA:0004F000、SIZE:00EA6240

拡張パーティションの中身(LBA)

  • P5:Linux(83h)、LBA:0004F200、SIZE:00004000
  • P6:Linux(83h)、LBA:00053400、SIZE:00060000
  • P7:Linux(83h)、LBA:000B3600、SIZE:0004B000
  • P8:Linux(83h)、LBA:000FE800、SIZE:0007D000
  • P9:Linux(83h)、LBA:0017BA00、SIZE:00D6D800

P6に/systemが入っているはずなので
tegrapartのsystemをバイト位置にすると0AC40000
P6をバイト位置にすると0A680000
うーん合わない。
じゃtegrapartのmiscをバイト位置にすると6C0000
P1をバイト位置にすると100000
違う。

ANDROIDのimgを探してみた(ヘッダがANDROID!)。
すると、recovery.imgはP3に、boot用カーネルとrootfsはP5にあるのがわかった。
P6は/systemなので、これらをバックアップしておけば安心だろう。
P3の内容と、P5の内容にはzImageやrootfsがあるので抜き出して改変することも可能か。


| コメント (0) | トラックバック (0)

2011年3月21日 (月)

LifeTouch Noteを購入

NECのLifeTouch Noteを購入した。
3GはなしのWifiモデル(LT-NA75W)。
Dynabook AZにしようかとも思ったがこっちにした。
で、過去にSharpのZaurusを使ってきて、
SharpのZaurusでスペシャルカーネルを入れたり、
Zaurus内臓のマイクロドライブをもうちょっと容量が大きいのに換装したりもした。
Zaurusのハードウェア情報も公開されていたり、有志によるハードウェア/ソフトウェア解析も結構されていたのでよかった。
今はAndroid。
巷ではスマートフォンにカスタムROMを入れたりRoot化したりしている人もいるようだし何かしてみようと思う。
とりあえず、日経Linux 2011/1月号に、「Android搭載機Dynabook AZを改造する」
という記事があり、バックナンバーとして購入した。
Tegra用のツールでnvflashというのを使用して、内臓フラッシュのイメージをバックアップする方法や、root化。dynabook AZでubuntuを動かす方法が記事になっていて参考になった。
Lifetouch Noteは、発売まもないこともあり、こういうハッキング的な情報はまだないが、調べてわかったことをメモしておく。

Android system recovery 3e メニュー
上部の緑色のホームボタンを押しながら電源ON
画面が出てきたら、ホームボタンをもう一度押すと、リカバリー用メニューが表示される

fastboot usb download モード?
上部の戻るボタン(Insertの隣)を押しながら電源ON
画面にfastboot usb download のような表示がでるのでそのモードになっていると思う。
fastboot reboot
とPCから入力すればLifetouch Noteがrebootしたので、いちおう効いているのだろう。

今日はここまで。


| コメント (0) | トラックバック (0)

LifeTouch Noteのパーティーション(mmcblk3)

# fdisk /dev/block/mmcblk3

The number of cylinders for this disk is set to 977184.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/block/mmcblk3: 8005 MB, 8005091328 bytes
1 heads, 16 sectors/track, 977184 cylinders
Units = cylinders of 16 * 512 = 8192 bytes

              Device Boot      Start         End      Blocks  Id System
/dev/block/mmcblk3p1             129         384        2048  83 Linux
Partition 1 does not end on cylinder boundary
/dev/block/mmcblk3p2             385       19584      153600  83 Linux
Partition 2 does not end on cylinder boundary
/dev/block/mmcblk3p3           19585       20224        5120  83 Linux
Partition 3 does not end on cylinder boundary
/dev/block/mmcblk3p4           20225      980260     7680288   5 Extended
Partition 4 does not end on cylinder boundary
/dev/block/mmcblk3p5           20257       21280        8192  83 Linux
/dev/block/mmcblk3p6           21313       45888      196608  83 Linux
/dev/block/mmcblk3p7           45921       65120      153600  83 Linux
/dev/block/mmcblk3p8           65153       97152      256000  83 Linux
/dev/block/mmcblk3p9           97185      977184     7040000  83 Linux

マウント情報

# mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
/dev/block/mmcblk3p2 /fdt ext3 ro,relatime,data=ordered 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/mmcblk3p6 /system ext2 ro,relatime 0 0
/dev/block/mmcblk3p9 /data ext3 rw,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/mmcblk3p7 /cache ext3 rw,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/mmcblk3p1 /misc ext3 rw,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/vold/179:33 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:33 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0

| コメント (0) | トラックバック (0)

LifeTouch NoteのLinuxカーネル機動メッセージ(/proc/kmsg)

<5>[    0.000000] Linux version 2.6.32.9-00044-g2b64cc5 (nec@Bryony) (gcc version 4.4.0 (GCC) ) #1 SMP PREEMPT Tue Jan 18 15:36:51 CST 2011

<4>[    0.000000] CPU: ARMv7 Processor [411fc090] revision 0 (ARMv7), cr=10c5387f
<4>[    0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
<4>[    0.000000] Machine: NVIDIA Harmony Development System
<4>[    0.000000] Framebuffer tag with 65536 handle
<4>[    0.000000] Shmoo tag with 65537 handle
<4>[    0.000000] Found a warmboot tag!
<4>[    0.000000] Memory policy: ECC disabled, Data cache writealloc
<7>[    0.000000] On node 0 totalpages: 98304
<7>[    0.000000] free_area_init_node: node 0, pgdat c05ab940, node_mem_map c0698000
<7>[    0.000000]   DMA zone: 768 pages used for memmap
<7>[    0.000000]   DMA zone: 0 pages reserved
<7>[    0.000000]   DMA zone: 97536 pages, LIFO batch:31
<6>[    0.000000] PERCPU: Embedded 8 pages/cpu @c09a4000 s11040 r8192 d13536 u65536
<6>[    0.000000] pcpu-alloc: s11040 r8192 d13536 u65536 alloc=16*4096
<6>[    0.000000] pcpu-alloc: [0] 0 [0] 1
<4>[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 97536
<5>[    0.000000] Kernel command line: mem=384M@0M nvmem=128M@384M vmalloc=256M video=tegrafb console=ttyS0,115200n8 usbcore.old_scheme_first=1 no_console_suspend tegraboot=sdmmc tegrapart=pt:600:80:800,bootloader:680:400:800,fdt:1180:12c00:800,recovery:13d80:a00:800,boot:14800:1000:800,mbr:b80:200:800,system:15880:18000:800,cache:2d900:12c00:800,misc:d80:400:800,staging:40580:1f400:800,userdata:5fa00:35b600:800
<6>[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
<6>[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
<6>[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
<6>[    0.000000] Memory: 384MB = 384MB total
<5>[    0.000000] Memory: 382464KB available (5344K code, 1186K data, 172K init, 0K highmem)
<6>[    0.000000] SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
<6>[    0.000000] Hierarchical RCU implementation.
<6>[    0.000000] NR_IRQS:416
<4>[    0.000000] Console: colour dummy device 80x30
<6>[    4.609343] Calibrating delay loop... 1998.84 BogoMIPS (lpj=9994240)
<4>[    4.879342] Mount-cache hash table entries: 512
<6>[    4.879719] CPU: Testing write buffer coherency: ok
<6>[    4.879905] Calibrating local timer... 1.19MHz.
<4>[    4.989399] CPU1: Booted secondary processor
<6>[    5.259196] Brought up 2 CPUs
<6>[    5.259210] SMP: Total of 2 processors activated (3991.14 BogoMIPS).
<7>[    5.259231] CPU0 attaching sched-domain:
<7>[    5.259242]  domain 0: span 0-1 level CPU
<7>[    5.259251]   groups: 0 1
<7>[    5.259268] CPU1 attaching sched-domain:
<7>[    5.259276]  domain 0: span 0-1 level CPU
<7>[    5.259284]   groups: 1 0
<6>[    5.283005] regulator: core version 0.5
<6>[    5.283388] NET: Registered protocol family 16
<4>[    5.283724] Chip Id: 0x20 (Handheld SOC) Major: 0x1 Minor: 0x3 SKU: 0x8
<4>[    5.284366] NVRM Got shmoo boot argument (at 0xd8874004)
<4>[    5.284378] NVRM corner (2, 1)
<4>[    5.439163] NVRM CLOCKS: PLLX0:      1000000 Khz
<4>[    5.439174] NVRM CLOCKS: PLLM0:      666000 Khz
<4>[    5.439181] NVRM CLOCKS: PLLC0:      600000 Khz
<4>[    5.439187] NVRM CLOCKS: PLLP0:      216000 Khz
<4>[    5.439193] NVRM CLOCKS: PLLA0:      11289 Khz
<4>[    5.439199] NVRM CLOCKS: CPU:        1000000 Khz
<4>[    5.439205] NVRM CLOCKS: AVP:        240000 Khz
<4>[    5.439211] NVRM CLOCKS: System Bus: 240000 Khz
<4>[    5.439220] NVRM CLOCKS: Memory Controller: 333000
<4>[    5.439229] NVRM CLOCKS: External Memory Controller: 666000
<6>[    5.617532] regulator: lbee9qmb_vdd: 1700 <--> 2000 mV
<6>[    5.617800] regulator: soc_main: 0 mV
<6>[    5.618078] regulator: vddio bb: 1700 <--> 2000 mV
<6>[    5.618342] regulator: vddio lcd: 1700 <--> 2000 mV
<6>[    5.618607] regulator: vddio vi: 1700 <--> 2000 mV
<6>[    5.618868] regulator: vddio uart: 1700 <--> 2000 mV
<6>[    5.619172] regulator: vddio ddr: 1700 <--> 2000 mV
<6>[    5.619475] regulator: vddio nand: 1700 <--> 2000 mV
<6>[    5.619755] regulator: vddio sys: 1700 <--> 2000 mV
<6>[    5.620026] regulator: vddio audio: 1700 <--> 2000 mV
<6>[    5.620302] regulator: vddio sd: 1700 <--> 2000 mV
<4>[    5.626762] ADJUSTED CLOCKS:
<4>[    5.626776] MC clock is set to 333000 KHz
<4>[    5.626787] EMC clock is set to 666000 KHz (DDR clock is at 333000 KHz)
<4>[    5.626795] PLLX0 clock is set to 1000000 KHz
<4>[    5.626801] PLLC0 clock is set to 600000 KHz
<4>[    5.626807] CPU clock is set to 1000000 KHz
<4>[    5.626813] System and AVP clock is set to 240000 KHz
<4>[    5.626822] GraphicsHost clock is set to 111000 KHz
<4>[    5.626829] 3D clock is set to 111000 KHz
<4>[    5.626836] 2D clock is set to 111000 KHz
<4>[    5.626844] Epp clock is set to 111000 KHz
<4>[    5.626851] Mpe clock is set to 111000 KHz
<4>[    5.626857] Vde clock is set to 240000 KHz
<4>[    5.649426] Local timer scaling factor 2097, shift 24
<6>[    5.649474] PL310/L2C-310 cache controller enabled
<7>[    5.668968] kfuse_cache_isvalid=1
<6>[    5.671261] tegra_setup_i2c: skipping tegra_i2c.2 (SMBUS)
<4>[    5.685798] bio: create slab <bio-0> at 0
<5>[    5.686690] SCSI subsystem initialized
<6>[    5.687004] usbcore: registered new interface driver usbfs
<6>[    5.687135] usbcore: registered new interface driver hub
<6>[    5.687287] usbcore: registered new device driver usb
<6>[    5.688758] Bluetooth: Core ver 2.15
<6>[    5.688920] NET: Registered protocol family 31
<6>[    5.688927] Bluetooth: HCI device and connection manager initialized
<6>[    5.688940] Bluetooth: HCI socket layer initialized
<6>[    5.689963] Switching to clocksource timer_us
<6>[    5.694168] NET: Registered protocol family 2
<6>[    5.694245] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
<6>[    5.694421] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
<6>[    5.694626] TCP bind hash table entries: 16384 (order: 5, 196608 bytes)
<6>[    5.694840] TCP: Hash tables configured (established 16384 bind 16384)
<6>[    5.694849] TCP reno registered
<6>[    5.694946] NET: Registered protocol family 1
<6>[    5.695075] Unpacking initramfs...
<6>[    5.703619] Freeing initrd memory: 164K
<4>[    5.704457] tegra_iovmm_register: added iovmm-gart
<4>[    5.706584] ==============>Msensor_ACTIVE
<6>[    5.706714] nvrm_init called
<4>[    5.706763] nvrm probe
<4>[    5.707780]
<4>[    5.707783] I2C Slave is *New*
<6>[    5.755354] ashmem: initialized
<6>[    5.765684] alg: No test for stdrng (krng)
<6>[    5.765717] io scheduler noop registered
<6>[    5.765725] io scheduler anticipatory registered
<6>[    5.765732] io scheduler deadline registered
<6>[    5.765787] io scheduler cfq registered (default)
<6>[    5.767678] tegra_grhost tegra_grhost: initialized
<4>[    5.768134] nvtegrafb: base address: d9000000 physical: 1fe76000
<4>[    5.768496] Console: switching to colour frame buffer device 100x30
<6>[    5.778203] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
<6>[    5.778745] serial8250.0: ttyS0 at MMIO 0x70006000 (irq = 68) is a Tegra
<6>[    6.333416] console [ttyS0] enabled
<6>[    6.333876] tegra_uart.1: ttyHS1 at I/O 0x0 (irq = 69) is a unknown
<6>[    6.343544] Registered UART port ttyHS1
<6>[    6.347416] tegra_uart.2: ttyHS2 at I/O 0x0 (irq = 78) is a unknown
<6>[    6.353984] Registered UART port ttyHS2
<6>[    6.357934] Initialized tegra uart driver
<6>[    6.364990] loop: module loaded
<3>[    6.581050] NvRmSpiOpen() Opening channel Inst 0 and IsMaster 1
<6>[    6.588554] usbcore: registered new interface driver cdc_ether
<6>[    6.594504] usbcore: registered new interface driver smsc9500
<6>[    6.600361] usbcore: registered new interface driver cdc_subset
<6>[    6.606320] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
<6>[    6.616228] tegra-ehci tegra-ehci.2: Tegra Ehci host controller
<6>[    6.622196] tegra-ehci tegra-ehci.2: new USB bus registered, assigned bus number 1
<6>[    6.660125] tegra-ehci tegra-ehci.2: irq 129, io base 0xc5008000
<6>[    6.682615] tegra-ehci tegra-ehci.2: USB 2.0 started, EHCI 1.00
<6>[    6.688573] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[    6.695361] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[    6.702578] usb usb1: Product: Tegra Ehci host controller
<6>[    6.707967] usb usb1: Manufacturer: Linux 2.6.32.9-00044-g2b64cc5 ehci_hcd
<6>[    6.714836] usb usb1: SerialNumber: tegra-ehci.2
<6>[    6.719700] usb usb1: configuration #1 chosen from 1 choice
<6>[    6.725462] hub 1-0:1.0: USB hub found
<6>[    6.729227] hub 1-0:1.0: 1 port detected
<6>[    6.733263] tegra-ehci tegra-ehci.2: dmabounce: registered device
<6>[    6.739589] usbcore: registered new interface driver cdc_acm
<6>[    6.745255] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
<6>[    6.753885] usbcore: registered new interface driver cdc_wdm
<6>[    6.759538] Initializing USB Mass Storage driver...
<6>[    6.764576] usbcore: registered new interface driver usb-storage
<6>[    6.770586] USB Mass Storage support registered.
<6>[    6.775455] usbcore: registered new interface driver usbserial
<6>[    6.781278] usbserial: USB Serial Driver core
<6>[    6.785763] USB Serial support registered for GSM modem (1-port)
<6>[    6.791897] usbcore: registered new interface driver option
<6>[    6.797458] option: v0.7.2:USB Driver for GSM modems
<6>[    6.802428] Tegra High-Speed USB SOC Device Controller driver (Apr 20, 2007)
<3>[    6.815209] tegra-udc tegra-udc.0: vbus_draw regulator error -19; charging disabled
<6>[    6.822986] android init
<6>[    6.825548] android_probe pdata: c057e730
<6>[    6.829659] android_bind
<7>[    6.832199] android_bind_config
<4>[    6.832207] Gadget Android: controller 'tegra-udc' not recognized
<6>[    6.838292] android_usb gadget: android_usb ready
<6>[    6.842993] tegra-udc: bind to driver android_usb
<6>[    6.850317] f_adb init
<6>[    6.852670] android_register_function adb
<6>[    6.856675] f_mass_storage init
<6>[    6.859807] android_register_function usb_mass_storage
<6>[    6.864949] mass_storage_bind_config
<6>[    6.868773] fsg_probe pdata: c057e958
<6>[    6.872729] android_usb gadget: Number of LUNs=1
<6>[    6.877339] adb_bind_config
<6>[    6.917702] input: nvec keyboard as /devices/virtual/input/input0
<7>[    6.923965] evbug.c: Connected device: input0 (nvec keyboard at unknown)
<6>[    6.924110] usbcore: registered new interface driver usbtouchscreen
<3>[    6.930447] NvRmSpiOpen() Opening channel Inst 0 and IsMaster 1
<6>[    6.936802] input: nvodm_touch as /devices/virtual/input/input1
<7>[    6.942897] evbug.c: Connected device: input1 (nvodm_touch at unknown)
<6>[    6.942907] nvodm_touch: Successfully registered the ODM touch driver d8adc004
<6>[    6.985984] input: nvec button as /devices/virtual/input/input2
<7>[    6.991917] nvec_button nvec_button: input device file is opened.
<7>[    6.992092] evbug.c: Connected device: input2 (nvec button at unknown)
<4>[    6.992290] [qci_finpoint]finpoint_init()
<3>[    6.996328] [qci_finpoint] finpoint_power(1)
<6>[    7.262015] android_usb gadget: high speed config #1: android
<6>[    7.607564] using rtc device, tegra_rtc_odm, for alarms
<6>[    7.612655] tegra_rtc_odm tegra_rtc_odm: rtc core: registered tegra_rtc_odm as rtc0
<6>[    7.620603] i2c /dev entries driver
<4>[    7.624650] XXXXXXXXXXXXXXX IR Probe XXXXXXXXXXXXXXX
<6>[    7.629872] input: qci_finpoint as /devices/virtual/input/input3
<7>[    7.636045] evbug.c: Connected device: input3 (qci_finpoint at unknown)
<4>[    7.636055] [qci_finpoint] write address = 0x3a , data = 0x5a
<4>[    7.842351] [qci_finpoint] write address = 0x60 , data = 0x84
<4>[    7.848441] [qci_finpoint] write address = 0x62 , data = 0x12
<4>[    7.854563] [qci_finpoint] write address = 0x63 , data = 0x0e
<4>[    7.860640] [qci_finpoint] write address = 0x77 , data = 0x21
<4>[    7.867208] [finpoint_init_panel]device id = 0x83
<3>[    7.871902] [finpoint_init_panel]device id = 0x83
<4>[    7.880408] [0x60]=0x84
<4>[    7.882868] [0x62]=0x12
<4>[    7.885308] [0x63]=0x0e
<4>[    7.887747] [0x64]=0x08
<4>[    7.890186] [0x65]=0x06
<4>[    7.892631] [0x66]=0x40
<4>[    7.895071] [0x67]=0x08
<4>[    7.897509] [0x68]=0x48
<4>[    7.899948] [0x69]=0x0a
<4>[    7.902385] [0x6a]=0x50
<4>[    7.904832] [0x6b]=0x48
<4>[    7.907272] [0x6d]=0xc4
<4>[    7.909710] [0x6e]=0x34
<4>[    7.912149] [0x6f]=0x3c
<4>[    7.914593] [0x70]=0x18
<4>[    7.917031] [0x71]=0x20
<4>[    7.919468] [0x73]=0x99
<4>[    7.921904] [0x74]=0x02
<4>[    7.924351] [0x75]=0x50
<4>[    7.926791] [0x77]=0x21
<4>[    7.929229] finpoint_init_client() success
<6>[    7.935944] Linux video capture interface: v2.00
<6>[    7.940894] usbcore: registered new interface driver uvcvideo
<6>[    7.946650] USB Video Class driver (v0.1.0)
<3>[    7.994457] tegra_thermal:registered
<6>[    7.999020] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com
<6>[    8.007493] Bluetooth: HCI UART driver ver 2.2
<6>[    8.011930] Bluetooth: HCI H4 protocol initialized
<6>[    8.016726] Bluetooth: HCI BCSP protocol initialized
<6>[    8.021680] Bluetooth: HCILL protocol initialized
<6>[    8.026764] cpuidle: using governor ladder
<6>[    8.031532] cpuidle: using governor menu
<6>[    8.035577] sdhci: Secure Digital Host Controller Interface driver
<6>[    8.041746] sdhci: Copyright(c) Pierre Ossman
<4>[    8.048950] mmc0: Invalid maximum block size, assuming 512 bytes
<6>[    8.055134] Registered led device: mmc0::
<6>[    8.059293] mmc0: SDHCI controller on tegra-sdhci.0 [tegra-sdhci.0] using ADMA
<6>[    8.066534] tegra-sdhci tegra-sdhci.0: probe complete
<4>[    8.073019] mmc1: Invalid maximum block size, assuming 512 bytes
<6>[    8.079211] Registered led device: mmc1::
<6>[    8.083430] mmc1: SDHCI controller on tegra-sdhci.2 [tegra-sdhci.2] using ADMA
<6>[    8.090640] tegra-sdhci tegra-sdhci.2: probe complete
<4>[    8.096428] mmc2: Invalid maximum block size, assuming 512 bytes
<6>[    8.102608] Registered led device: mmc2::
<6>[    8.106761] mmc2: SDHCI controller on tegra-sdhci.3 [tegra-sdhci.3] using ADMA
<6>[    8.113991] tegra-sdhci tegra-sdhci.3: probe complete
<6>[    8.119319] Registered led device: green
<6>[    8.124538] usbcore: registered new interface driver usbhid
<6>[    8.130107] usbhid: v2.6:USB HID core driver
<6>[    8.134805] logger: created 64K log 'log_main'
<6>[    8.139401] logger: created 256K log 'log_events'
<6>[    8.144272] logger: created 64K log 'log_radio'
<6>[    8.148944] logger: created 64K log 'log_system'
<4>[    8.154575] nf_conntrack version 0.5.0 (5982 buckets, 23928 max)
<4>[    8.160887] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use
<4>[    8.168270] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or
<4>[    8.176246] sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
<6>[    8.182715] ip_tables: (C) 2000-2006 Netfilter Core Team
<6>[    8.188111] TCP cubic registered
<6>[    8.192402] NET: Registered protocol family 10
<6>[    8.197368] IPv6 over IPv4 tunneling driver
<6>[    8.202017] NET: Registered protocol family 17
<6>[    8.206561] Bluetooth: L2CAP ver 2.14
<6>[    8.210268] Bluetooth: L2CAP socket layer initialized
<6>[    8.215378] Bluetooth: SCO (Voice Link) ver 0.6
<6>[    8.219951] Bluetooth: SCO socket layer initialized
<6>[    8.224984] Bluetooth: RFCOMM TTY layer initialized
<6>[    8.229916] Bluetooth: RFCOMM socket layer initialized
<6>[    8.235122] Bluetooth: RFCOMM ver 1.11
<6>[    8.238864] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
<6>[    8.244173] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
<6>[    8.250254] ThumbEE CPU extension supported.
<5>[    8.254549] Registering SWP/SWPB emulation handler
<6>[    8.259348] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 1
<4>[    8.267773] regulator_init_complete: incomplete constraints, leaving vddio sys on
<4>[    8.275270] regulator_init_complete: incomplete constraints, leaving vddio ddr on
<4>[    8.282752] regulator_init_complete: incomplete constraints, leaving vddio bb on
<4>[    8.290136] regulator_init_complete: incomplete constraints, leaving soc_main on
<6>[    8.293578] mmc1: new high speed SDHC card at address b368
<6>[    8.293852] mmcblk2: mmc1:b368 SD    7.51 GiB
<6>[    8.307502]  mmcblk2:
<6>[    8.310320] tegra_rtc_odm tegra_rtc_odm: setting system clock to 2011-03-20 15:17:01 UTC (1300634221)
<6>[    8.319796] Freeing init memory: 172K
<4>[    8.323466]  p1
<3>[    8.326933] init: /init.rc: 234: invalid option 'chmod'
<3>[    8.332159] init: /init.rc: 234: invalid option 'start'
<3>[    8.337402] init: /init.rc: 234: invalid option 'chmod'
<6>[    8.463182] mmc2: new high speed MMC card at address 0001
<6>[    8.468903] mmcblk3: mmc2:0001 M8G2EM 7.45 GiB
<6>[    8.473572]  mmcblk3: p1 p2 p3 p4 < p5 p6 p7 p8 p9 >
<6>[    9.306683] kjournald starting.  Commit interval 5 seconds
<6>[    9.306701] EXT3-fs: mounted filesystem with ordered data mode.
<4>[    9.323784] EXT2-fs warning (device mmcblk3p6): ext2_fill_super: mounting ext3 filesystem as ext2
<4>[    9.332672] EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
<6>[   10.312316] kjournald starting.  Commit interval 5 seconds
<6>[   10.321066] EXT3 FS on mmcblk3p9, internal journal
<7>[   10.325868] ext3_orphan_cleanup: deleting unreferenced inode 876842
<6>[   10.325942] EXT3-fs: mmcblk3p9: 1 orphan inode deleted
<6>[   10.331088] EXT3-fs: recovery complete.
<6>[   10.578679] EXT3-fs: mounted filesystem with ordered data mode.
<6>[   10.620304] kjournald starting.  Commit interval 5 seconds
<6>[   10.629312] EXT3 FS on mmcblk3p7, internal journal
<6>[   10.634114] EXT3-fs: recovery complete.
<6>[   10.641750] EXT3-fs: mounted filesystem with ordered data mode.
<6>[   10.675113] kjournald starting.  Commit interval 5 seconds
<6>[   10.684143] EXT3 FS on mmcblk3p1, internal journal
<6>[   10.688931] EXT3-fs: recovery complete.
<6>[   10.696391] EXT3-fs: mounted filesystem with ordered data mode.
<3>[   10.813549] init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
<6>[   10.836161] warning: `adbd' uses 32-bit capabilities (legacy support in use)
<6>[   10.843267] enabling adb
<6>[   10.862704] adb_open(adbd)
<6>[   11.004144] adb_release
<3>[   11.004502] init: sys_prop: permission denied uid:2000  name:adb.connected
<6>[   11.013749] adb_open(adbd)
<4>[   11.234284] NvRmIoctls_NvRmFbControl: deprecated
<6>[   11.262655] android_usb gadget: high speed config #1: android
<3>[   11.493609] init: sys_prop: permission denied uid:2000  name:adb.connected
<6>[   11.877066] ioModule=30, instance=0, config=1, enable=0
<4>[   13.658349] DTT: T = 46, Range = 1 (-64 : 60)
<6>[   14.262932] nvrm_notifier_store: nvrm_daemon=890
<6>[   14.267950] nvrm_notifier_show: blocking
<7>[   21.561595] CPU0 attaching NULL sched-domain.
<7>[   21.561634] CPU1 attaching NULL sched-domain.
<7>[   21.740293] CPU0 attaching NULL sched-domain.
<5>[   21.741345] CPU1: clean shutdown
<4>[   23.498165]
<4>[   23.498169] Dongle Host Driver, version 4.218.223.1
<6>[   23.616036] request_suspend_state: wakeup (3->0) at 19005939742 (2011-03-20 15:17:16.805719452 UTC)
<7>[   23.782536] mmc0: queuing CIS tuple 0x80 length 50
<7>[   23.834342] mmc0: queuing CIS tuple 0x80 length 7
<7>[   23.858025] mmc0: queuing CIS tuple 0x80 length 7
<7>[   24.012835] mmc0: queuing CIS tuple 0x02 length 1
<6>[   24.020325] mmc0: new SDIO card at address 0001
<4>[   24.650150] sdio_reset_comm():
<4>[   24.700022] DHD: dongle ram size is set to 294912(orig 294912)
<4>[   24.951920] Firmware version = wl0: Jul  8 2010 15:59:50 version 4.218.243.0
<4>[   25.101556] CPU1: Booted secondary processor
<7>[   25.101639] CPU0 attaching NULL sched-domain.
<4>[   25.128912] wlan0: Broadcom Dongle Host Driver mac=48:5d:60:d8:5d:7f
<4>[   25.140199] Enter wl_control_wl_start
<7>[   25.152630] CPU0 attaching sched-domain:
<7>[   25.152642]  domain 0: span 0-1 level CPU
<7>[   25.152651]   groups: 0 1
<7>[   25.152667] CPU1 attaching sched-domain:
<7>[   25.152674]  domain 0: span 0-1 level CPU
<7>[   25.152681]   groups: 1 0
<4>[   25.155977] Exited wl_control_wl_start
<4>[   27.805950] Unkown PRIVATE command, ignored
<4>[   27.825285] Unkown PRIVATE command, ignored
<4>[   27.841457] Unkown PRIVATE command, ignored
<4>[   27.855679] Unkown PRIVATE command, ignored
<4>[   27.865279] Unkown PRIVATE command, ignored
<4>[   28.424438] STA connect received 1
<4>[   28.433726] STA disconnect received 6
<4>[   30.370742] STA connect received 1
<4>[   31.452465] Unkown PRIVATE command, ignored
<7>[   35.252377] wlan0: no IPv6 routers present
<4>[   36.478807] Unkown PRIVATE command, ignored
<7>[   39.176477] CPU0 attaching NULL sched-domain.
<7>[   39.176516] CPU1 attaching NULL sched-domain.
<7>[   39.220213] CPU0 attaching NULL sched-domain.
<5>[   39.221600] CPU1: clean shutdown
<4>[   44.640433] CPU1: Booted secondary processor
<7>[   44.640500] CPU0 attaching NULL sched-domain.
<7>[   44.710120] CPU0 attaching sched-domain:
<7>[   44.710132]  domain 0: span 0-1 level CPU
<7>[   44.710142]   groups: 0 1
<7>[   44.710156] CPU1 attaching sched-domain:
<7>[   44.710163]  domain 0: span 0-1 level CPU
<7>[   44.710171]   groups: 1 0
<7>[   46.122564] CPU0 attaching NULL sched-domain.
<7>[   46.122636] CPU1 attaching NULL sched-domain.
<7>[   46.230287] CPU0 attaching NULL sched-domain.
<5>[   46.231570] CPU1: clean shutdown
<7>[   52.538857] evbug.c: Event. Dev: input3, Type: 2, Code: 0, Value: -2

| コメント (0) | トラックバック (0)