NOVO7 Basicのfirmware?

2011/11/13追記: すzさんのところでNovo7 basic 用 Android 2.2カスタムファームウェアが公開されています。
————————–
検索していたら、NOVO7 basicっぽいfirmwareを配布しているところを発見した。
まぁ、恒例のimp3.netなんですが・・・

[ROM发布] 【Novo7 普及版固件】君正MIPS热风来袭,2.2 3.2两版固件周末突击发布新版本公测!!
転載:Android 3.2 for NOVO7 Basic
転載:Android 2.2 for NOVO7 Basic / update.zip version

どうやらsdcardにupdate.zipを置いて、ボリュームupボタンを押しながらリセットボタンを押し、「ainol艾诺」ロゴがでたところで、ボリュームupボタンを離すと、アップデートが開始されるようだ。
この手法はAndroidスマートフォンでよくあるアップデート手法。
もしかすると、boot loader関連が改良されているのかもしれない。
(それとも、ronzi A3でも実はできるのか?)

従来通りのUSBBoottoolによるアップデートもできるようです。
こちらの場合は、ボリュームDOWNボタンを押すようです。

ただ、単体で実行できる方は「Novo7Basic_android2.2_20111029.7z」という穏当な名前ですが、USBBoottool版が「Android3.2_Novo7_Basic_1029.rar」などという謎のファイル名に・・・

ダウンロード速度が非常に遅いので中身の確認は、明日ですかねぇ・・・

— 2011/11/01 追記 —
update.zipは、android一般的な形式のupdate.zipではありますが、イメージファイルを直接書き込む感じの形式でした。
書き込むのはmbr-xboot.bin, boot.img,system.imgだけで、それ以外はない、というのがちょっと驚きです。

ui_print("Setup your device...");

ui_print("update xboot....");
package_extract_file("mbr-xboot.bin", "/tmp/mbr-xboot.bin");
inand_write_raw("/tmp/mbr-xboot.bin","xboot");

ui_print("update boot.img....");
set_progress("2");
show_progress("0.1", 1);
package_extract_file("boot.img", "/tmp/boot.img");
inand_write_raw("/tmp/boot.img","boot");
show_progress("0.1", 1);

#package_extract_file("userdata.img", "/tmp/userdata.img");
#inand_write_raw("/tmp/userdata.img","data");

ui_print("update system.img....");
set_progress("9");
set_progress("9");
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
package_extract_file("system.img", "/sdcard/system.img");
inand_write_raw("/sdcard/system.img","system");
show_progress("0.1", 1);

#ui_print("update userdata.img....");
show_progress("0.1", 1);
show_progress("0.1", 1);
show_progress("0.1", 1);
show_progress("0.1", 1);
#package_extract_file("userdata.img", "/tmp/userdata.img");
#inand_write_raw("/tmp/userdata.img","data");

show_progress("0.1", 1);
ui_print("Done.");
set_progress("10");
show_progress("0.1", 1);

system.imgの中には、boot.img,recovery.cpio.imgとuserdata.imgが含まれていますが、おそらく、使われてはいないでしょう。
Android一般的の話であればupdate.zip適用時は/data領域(つまりuserdata.img)は初期化されないことになっているので、そういう作りになっているのかな?と思います。

で、今回の注目点は、パッケージを作り間違えたのか、x-bootというディレクトリの中に、x-bootのソースファイルっぽいものが含まれているというところです。

マザーボードの種類を示しているx-boot/boot/board/というディレクトリを見ると

# ls -l x-boot/boot/board/
合計 64
-rw-r--r-- 1 root root 1462  7月 30 12:21 Makefile
drwxr-xr-x 3 root root 4096 11月  1 09:48 altair
drwxr-xr-x 3 root root 4096 11月  1 09:48 crater
drwxr-xr-x 3 root root 4096 11月  1 09:48 lepus
-rw-r--r-- 1 root root 2810  7月 30 12:21 lib_board.a
drwxr-xr-x 3 root root 4096 11月  1 09:48 lynx
drwxr-xr-x 3 root root 4096 11月  1 09:48 maple
drwxr-xr-x 3 root root 4096 11月  1 09:48 npm701
drwxr-xr-x 3 root root 4096 11月  1 09:48 pisces
drwxr-xr-x 3 root root 4096 11月  1 09:48 pt701_8
drwxr-xr-x 3 root root 4096 11月  1 09:48 px7_2r
drwxr-xr-x 3 root root 4096 11月  1 09:48 pyxis
drwxr-xr-x 3 root root 4096 11月  1 09:48 tablet_8II
drwxr-xr-x 3 root root 4096 11月  1 09:48 tablet_p2
drwxr-xr-x 3 root root 4096 11月  1 09:48 z800
drwxr-xr-x 3 root root 4096 11月  1 09:48 zorroo
#

また、それらのボードに関する設定はinclude/configsディレクトリで行われているようです。

#ls -l x-boot/include/configs
合計 276
-rw-r--r-- 1 root root 12074  7月 30 12:21 altair.h
-rw-r--r-- 1 root root  5909  7月 30 12:21 apus.h
-rw-r--r-- 1 root root  5778  7月 30 12:21 aquila.h
-rw-r--r-- 1 root root 13296  7月 30 12:21 crater.h
-rw-r--r-- 1 root root  2168  7月 30 12:21 jz4760_common.h
-rw-r--r-- 1 root root  3384  7月 30 12:21 jz4770_common.h
-rw-r--r-- 1 root root 17047  7月 30 12:21 lepus.h
-rw-r--r-- 1 root root 16895  7月 30 12:21 lynx.h
-rw-r--r-- 1 root root 19281  7月 30 12:21 maple.h
-rw-r--r-- 1 root root 19100  7月 30 12:21 npm701.h
-rw-r--r-- 1 root root 16051  7月 30 12:21 pisces.h
-rw-r--r-- 1 root root 11442  7月 30 12:21 pt701.h
-rw-r--r-- 1 root root 15187  7月 30 12:21 pt701_8.h
-rw-r--r-- 1 root root 16185  7月 30 12:21 px7_2r.h
-rw-r--r-- 1 root root 15829  7月 30 12:21 pyxis.h
-rw-r--r-- 1 root root 15187  7月 30 12:21 tablet_8II.h
-rw-r--r-- 1 root root 15658  7月 30 12:21 tablet_p2.h
-rw-r--r-- 1 root root 13367  7月 30 12:21 z800.h
-rw-r--r-- 1 root root 18260  7月 30 12:21 zorroo.h
#

と、まだ見ぬ機種がいろいろいるようです。
現状判明しているのは、以下の3種類です。
lynx=ronzi A3系
z800=怪しい中華Android携帯
tablet_p2=Cruz Tablet T301
xam5001=IQQ M1なんだけど、リストにない・・・
npm701=NOVO7 Basic
Ramos V65Proは、「ro.product.device=V65PRO」と設定されているが「ro.build.fingerprint」ではlynxとなっているので、lynxの類型である可能性が大きい。
build.propの違いについては、Jz4760系Androidのbuild.propの違いに追加しました。

起動時に使用されるロゴ画像は以下のディレクトリにあります。

# ls -l x-boot/boot/logo/
合計 292
-rw-r--r-- 1 root root 51812  7月 30 12:21 AMT_800x480.rle
-rw-r--r-- 1 root root 36468  7月 30 12:21 jz_1024_768.rle
-rw-r--r-- 1 root root 36468  7月 30 12:21 jz_800_480.rle
-rw-r--r-- 1 root root 93200  7月 30 12:21 novo7_1.rle
-rw-r--r-- 1 root root 14260  7月 30 12:21 pt701_8.rle
-rw-r--r-- 1 root root 14260  7月 30 12:21 tablet_8II.rle
-rw-r--r-- 1 root root 36580  7月 30 12:21 tablet_p2.rle
#

なんと、Jz47x0だけではなく、CPUがAMTのものについてのロゴも含まれています。
ただ、他のディレクトリにはAMTに直接関係しそうなファイル名のは見当たりません。

電源off時に表示される充電ロゴ、というのは、おそらく、x-boot/include/charge_logo.hで定義されているものなんでしょう。

Jz4760はdual core?

検索ワードを見ていたら「Jz4760 デュアルコア」なんてのがちらほらと・・・

実質としてはJz4760はシングルCPUですよ!

正確には「Xburst」というコアが2つ積まれています。
そのうちの1つをCPU用に、もう1つをVPU(video processing unit)用に使用している、というところです。
なので、「Xburst dual core」という表記も、間違いではありませんが、「CPUがdual core」ではありません。
また、Xburstコア自体は600MHzで動作していますが、Xburstコアが2つあるので600MHz+600MHzで「1.2GHz」だ!とか無茶を言ってるスペック表もあったりするので、注意してください。

ちなみに、後継のJz4770では、VPU用のXburstは完全にVPUに特化してしまったようで、XburstコアはCPUの1つないような感じに変わっているようです。

Xperia X10 mini proのカスタムROM事情 2011/10/27版

この記事は「Xperia X10 mini proのカスタムROM事情 2012/04/23版」で置き換えられています。
———————————–
最近のXperia X10 mini proのカスタムROM事情

Android 2.3ベースのカスタムROMが主流となっています。
また、kernel部分については、標準kernelもしくはZombie Panic Kernelという2択です。
Zombie Panic Kernelの導入方法についてはXperia X10 mini proのkernelを書き換えるを参照してください。

Android 2.3ベースのカスタムROMは、おもに4種類、とその亜種2つ、という感じです。
・Ginger DX Pro
・Flame.E
・GinTonic SE
・MiniCM7 pro
この4種類のどれかを使っておけば、無難といったところでしょう。

なお、ドコモユーザは現状リリースされているカスタムROMを使う際は十分に注意が必要です。
ドコモSIMが入っていると、APNとしてmopera.netを問答無用で選択した状態で、なおかつ、データ通信が有効になっているため、初回起動時に「FOMAパケット通信料[一般]」扱いのパケット通信が発生してしまいます。最短で手順を進めたとしても30円程度の料金がかかりますので注意してください。
回避するには、初回起動時はSIMを抜き、「データ通信を有効にする」のチェックをはずした状態で電源を切り、SIMを指し、設定を行ってください。

GingerDX pro
Eyama氏がdoixanh氏のGinder DXをX10 mini proに移植したもの。
Zombie Panic kernelを使用すること前提のパッケージ内容。
標準kernel(stock kernel)を使用するには同時配布のモジュール集も追加でインストールする必要がある。

Flame.E
Eyama氏がいままで他のカスタムROMに携わった経験を活かして組み上げたもの。
Zombie Panic kernelを使用すること前提のパッケージ内容。
標準kernel(stock kernel)を使用するには同時配布のモジュール集も追加でインストールする必要がある。

GinTonic.SE
slade87氏がdoixanh氏のGinderDXをベースにX10 mini proに移植したもの。
Eyama氏のGingerDXより後発ではあるが、カスタムkernel作者が作っているということもあり、期待が大きいもの。
ただ、癖は強いかもしれない。
Zombie Panic kernelを使用すること前提のパッケージ内容。
標準kernel(stock kernel)を使用するには同時配布のモジュール集も追加でインストールする必要がある。
また、X10 mini proのfirmwareで、2.1.1.A.0.6と2.1.1.C.0.0とで無線部分の動作の違いが発見されたため、2.1.1.C.0.0ユーザ向けに追加モジュールもでている。
なお、この変更の話は、他のカスタムROMに派生する可能性があるので、今後の動向に注意。

MiniCM7 Pro
paul-xxx氏がnobodyAtall氏のMiniCM7をX10 mini proに移植したもの。
元のMiniCM7はFreeXperiaProjectの一部になり、CyanogenMod7をカスタマイズしたもの、という位置づけになっている。
MiniCM7 proは、標準kernel(stock kernel)向け、しかも2.1.1.A.0.6向けとして作成されている。
2.1.1.C.0.0には対応していないので注意。
最近、開発停止宣言を出しているので、今後の動向が注目されるところ。

以下の2つは亜種、という感じのものです。

MiniCM7 SonyStyle
paul-xxx氏のMiniCM7 proをソニエリ純正のような感じで使えるようにカスタマイズしたもの。
4コーナーランチャーなど搭載。
純正の雰囲気が好きな人にお勧め。
MiniCM7 proと同様に、標準kernel(stock kernel)向け、しかも2.1.1.A.0.6向けとして作成されている。

ArcMini
Pranav110089氏がGingerDX ProをベースにXperia Arcっぽい雰囲気に改造しているもの。
機能的にはGingerDX Proと同じなので、カスタムkernel向け。

番外
CM7.1.0 – FreeXperia Project
FreeXperiaProject作の、ほぼオフィシャルのCM7.1。
なんだけど、2011/10/27時点で最新のFXP043aでも実用に耐えない。
しかも、開発中止的は話をしている。

Xperia2011年モデル bootloader unlock無しでのroot取得に成功

ついXperia 2011年モデル、つまりXperia Play,Arc,Arc S,Acro,Mini,Mini Pro,Active,Pro,Neo,Neo Vでbootloader unlockをしなくても、root取得ができるようになったようです。

Revolutionary – zergRush local root 2.2/2.3にて公開された「zergRush」という技を使い、XperiaもしくはSumsung端末のAndroid 2.2/2.3でrootを取得する方法です。
(Android 3.0では使用できません。)
2010年のXperia X10でも使用できるようです。

上記のURLで公開されているものは、ほんとにzergRushのみで、その他にいろいろ必要なapkとかがあります。
それらを含めて手順化したのが、 [HOW-TO] Root Xperia PLAY (& many more phones) v2.2+ (zergRush Method)です。

といっても、やっぱりめんどうなのは変わらず、zergRushとsu、SuperUser.apkを持ってきて以下の手順で転送&実行する、というものです。

> adb shell mkdir /data/local/tmp
> adb push zergRush /data/local/tmp
> adb chmod 755 /data/local/tmp/zergRush
> adb shell
$ cd /data/local/tmp/
$ ./zergRush
>adb remount
>adb push su /system/bin
> adb push su /system/xbin
# chmod 4755 /system/bin/su
# chmod 4755 /system/xbin/su
# exit
> adb install Superuser.apk

で、もっと簡略化されたもの、ということで、[ROOTING] Xperia 2011 Easy Rooting Toolkit [v1.0](zergRush Exploit)という手順が出てきました。

上記の手順を全てバッチで処理してくれる、というものです。

DooMLoRD_v1_ROOT-zergRush-busybox-su.zipをダウンロードして、中にある「runme.bat」を実行するだけ!

というところまで手順が簡略化されています。

この手順では、Busyboxもインストールされ、いろんなコマンドを実行しやすい環境をさらに整えています。

このzergRushがいつ対策されるかわかりませんが、それまでは簡単にroot取得できそうですね。

既存のOpenVZテンプレートのファイルをアップデートする

OpenVZで作成されたテンプレートを更新する。

参考: OpenVZ wiki: Updating Debian template

1. OpenVZの仮想ホストを作成

# vzctl create VID番号 --ostemplate テンプレート名

上記のテンプレート名は/var/lib/vz/template/cache/ にあるtar.gzファイルの名前を使用する。

実行例

# vzctl create 555 --ostemplate scientific-6-standard_6.0_i386
Creating container private area (scientific-6-standard_6.0_i386)
Performing postcreate actions
Saved parameters for CT 555
Container private area was created
#

2014/11/27 追記

/etc/vz/vz.confの設定によっては下記の様に、パラメータが足らないというエラーがでます。

# vzctl create 555 --ostemplate centos-6-standard_6.0-20121116_i386
Creating container private area (centos-6-standard_6.0-20121116_i386)
Initializing quota ...
Error: Not enough parameters, diskspace quota not set
Creation of container private area failed
#

/etc/vz/vz.confに下記のようにDISKSPACE設定とDISKINODES設定を追加することで、回避できます。

DISKSPACE="20G:22G"
DISKINODES="4000000:4400000"

(バージョンによってはvzctl createオプションでdiskspaceは指定できても、diskinodesが指定できない

2014/11/27 追記終


2. 仮想ホストにIPアドレスとDNSサーバを指定する

# vzctl set VID番号 --ipadd IPアドレス --nameserver DNSサーバIP --save

実行例

# vzctl set 555 --ipadd 192.168.x.x --nameserver 192.168.x.x --save
Saved parameters for CT 555
#

3. 仮想マシンを稼働させる

# vzctl start 555
Starting container ...
Container is mounted
Adding IP address(es): 192.168.35.240
Setting CPU units: 1000
File resolv.conf was modified
Container start in progress...
#

2014/11/27 追記

バージョンによっては、以下のようなエラーとなる場合がある。

# vzctl start 555
Error: required UB parameter kmemsize not set
Error: required UB parameter lockedpages not set
Error: required UB parameter privvmpages not set
Error: required UB parameter shmpages not set
Error: required UB parameter numproc not set
Error: required UB parameter physpages not set
Error: required UB parameter vmguarpages not set
Error: required UB parameter oomguarpages not set
Error: required UB parameter numtcpsock not set
Error: required UB parameter numflock not set
Error: required UB parameter numpty not set
Error: required UB parameter numsiginfo not set
Error: required UB parameter tcpsndbuf not set
Error: required UB parameter tcprcvbuf not set
Error: required UB parameter othersockbuf not set
Error: required UB parameter dgramrcvbuf not set
Error: required UB parameter numothersock not set
Error: required UB parameter numfile not set
Error: required UB parameter dcachesize not set
Error: required UB parameter numiptent not set
#

この場合は、/etc/vz/conf/に作成されている該当CIDの.confファイルに下記のエントリーを追記しておくといい。

PHYSPAGES="0:1024M"
SWAPPAGES="0:512M"
KMEMSIZE="465M:512M"
DCACHESIZE="232M:256M"
LOCKEDPAGES="512M"
PRIVVMPAGES="unlimited"
SHMPAGES="unlimited"
NUMPROC="unlimited"
VMGUARPAGES="0:unlimited"
OOMGUARPAGES="0:unlimited"
NUMTCPSOCK="unlimited"
NUMFLOCK="unlimited"
NUMPTY="unlimited"
NUMSIGINFO="unlimited"
TCPSNDBUF="unlimited"
TCPRCVBUF="unlimited"
OTHERSOCKBUF="unlimited"
DGRAMRCVBUF="unlimited"
NUMOTHERSOCK="unlimited"
NUMFILE="unlimited"
NUMIPTENT="unlimited"

2014/11/27 追記終


4. 仮想マシンにログインする

# vzctl enter 555
entered into CT 555
[root@ホスト名 /]#

5. yum updateを実施

# yum update
sl                                                       | 3.2 kB     00:00
sl/primary_db                                            | 3.1 MB     00:12
sl-security                                              | 1.9 kB     00:00
sl-security/primary_db                                   | 5.8 MB     00:12
Setting up Update Process
Resolving Dependencies
<略>
Transaction Summary
================================================================================
Install       0 Package(s)
Upgrade      32 Package(s)

Total download size: 46 M
Is this ok [y/N]: y
Downloading Packages:
<略>
  tzdata.noarch 0:2011h-3.el6

Complete!
[root@ns5 /]#

6. 追加したい設定があったらやっとく
・phpをインストール
・/etc/php.iniに「date.timezone = Asia/Tokyo」の設定を追加
・「ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime」
・/etc/sysconfig/i18nに「LANG=”ja_JP.UTF-8″」を追加

7. 掃除

# yum clean all
Cleaning up Everything
# echo > /etc/resolv.conf
#

8. 仮想ホストの停止

# vzctl stop 555
Stopping container ...
Container was stopped
Container is unmounted
#

9. 仮想ホストからIPアドレス設定を削除

# vzctl set 555 --ipdel all --save
Saved parameters for CT 555
#

10. 仮想ホストのファイルが展開されている場所に移動

# cd /var/lib/vz/private/555
#

11. テンプレートとしてtar.gzファイルを作成

#  tar --numeric-owner -czf /var/lib/vz/template/cache/scientific-6-standard_6.0-20111026_i386.tar.gz .
#

なお、ファイル名は重要。

「ディストリビューション名」-「ディストリビューションのバージョン」-「カスタマイズ説明」_「カスタマイズのバージョン」_「アーキテクチャ」.tar.gz

という書式で指定する。
そうしないと、Proxmoxでは、テンプレートとして指定できない。

12. 使用した仮想マシンの削除

# vzctl destroy 555
Destroying container private area: /var/lib/vz/private/555
Container private area was destroyed
#

13. /etc/vz/conf/に残る仮想マシンの設定ファイルを削除

# rm /etc/vz/conf/555.conf.destroyed
#