2011年1月27日 星期四

Android recovery 重點整理

Platform: Omap 4430
Android version: 2.2
因為工作的需求著手研究了一下recovery 但才看到一半,就被交代這要給別人搞。
所以寫一下自己看得重點。

1.原版從Ti 的網站抓 Android 2.2的code,但recovery 的部份只有對Nand Flash erase,但現在工作的是用Sandisk 的emmc ,就是把emmc當一般的file system, ex: ext4 ext3 fat32...
所幸發現google release Android 2.3 的recovery 有支援ext4。

Original sourece code
git clone git://android.git.kernel.org/platform/bootable/recovery.git
copy to mydroid/bootable

2.需要的library
git clone git://android.git.kernel.org/platform/system/extras.git
copy extras/ext4_utils to mydroid/system/extras
NOTE:如果沒有打算partition成ext4,則需要移除recovery source code format ext4部份,並實做ext3 format

3. Build recovery
source env.sh
cd mydroid
make recovery
build 完之後 recovery 再 out/target/product/blaze/system/bin/recovery
NOTE:
3.1 各Platfotm有不一樣的build 不一定相同。
3.2make recoveryimage 可以build 所需要的recovery partition,但目前build會有問題。

4.recovery 所需要的partition 目前已知的
misc <-- save recovery bootloader message,以fwrite/fread 方式 r/w,無partition type,所需要size待研究
cache <-- 存放 recovery command, log intent
sdcard <-- 讀取 updata.zip
data

5.建議規劃partition 方式

normal mode:
boot -> kernel -> mount root -> mount system
ex:
/dev/block/mmcblk1p4 / ext3
/dev/block/mmcblk1p3 system ext3
/dev/block/mmcblk1p8 data ext3
recovery mode:
ex:
boot -> kernel -> mount recovery -> mount system
/dev/block/mmcblk1p5 / ext3
/dev/block/mmcblk1p3 system ext3
/dev/block/mmcblk1p8 data ext3
/dev/block/mmcblk1p6 cache ext3

6. recovery partition 所需要檔案
6.1. copy mydroid/out/target/product/blaze/root
6.2. copy mydroid/bootable/recovery/etc/init.rc
6.3. copy mydroid/bootable/recovery/res
6.4. copy mydroid/out/target/product/blaze/system/bin/recovery /sbin
6.5. 自己產生recovery.fstab in /system/etc
ex:
NOTE:
make recoveryimage若可以build過,應該可以省略自己copy。

7.進入recovery方法,再 u-boot時 按下:
Home key(sw1) + Volume Up(sw2) -> recovery mode (更改開機參數)
Home key(sw1) + Volume Down(sw4) -> fastboot mode(執行fastboot)
NOTE:
7.1.u-boot讀取keypad完成,更改其他keypad可以到u-boot/include/configs/omap4430sdp.h
更改兩個define
#define MIX_KEY_RECOVERY (KEYPAD_SW1 | KEYPAD_SW2)
#define MIX_KEY_FASTBOOT (KEYPAD_SW1 | KEYPAD_SW4)
7.2.因目前partition規劃未確定&Svn未建置好,上述方式還不可使用。
u-boot/common/main.c -> main_loop 內有一段
#if (CONFIG_4430SDP_KEYPAD & CONFIG_RECOVERY)
if (bootmode == 1)
{
printf ("recovery\n");
run_command ("setenv bootargs console=ttyO2,115200n8 root=/dev/
mmcblk1p3 ....", 0); <===待填入正確partition
run_command("boot",0)
}
else
{
printf ("fastboot\n");
run_command ("fastboot", 0);
}
# endif

8.recovery 的 function
8.1.reboot system now
reboot command 可以reboot,但reboot之後無法開機,待TI解決。
8.2.apply update from sdcard
會抓取/sdcard/update.zip 並核對 /res/keys (make recoveryimage時會產生)
8.3.wipe data/factory reset
8.4.wipe cache partition
第三&四項可以成功format ext4
NOTE:
上述是開機到reocvery時會出現的UI供人選擇,有些功能像開機時可以自動update package或者再Android時設定參數再
reboot進入recovery mode都有待驗證。

2011年1月24日 星期一

BRITA Aluna XL

去年至今轉換公司已有四個月,期間最讓人受不了的就是飲水問題,雖然待的地方有三台飲水機,但是總是喝起來怪怪的...
今天去家樂福剛好看到特價 $999就抱回一台

箱子外觀
有多送一個濾芯
濾水器本身 I
濾水器本身 II 有3.5L喔
上蓋,有記錄器時間為2個月
reset時按住長達6秒
打開上蓋
放置濾芯那層可拆
濾芯本身
放上濾芯 I
放上濾芯 II
購買時剛好廠商業務也在,問了廠商這能裝熱水嗎?
廠商回建議不要高於40,因為會影響濾芯過濾品質,且任何一家都樣。

2011年1月18日 星期二

あそびにいくヨ! - 玩伴貓耳娘




Wiki:

某天主角(嘉和 騎央)遇到一個自稱是外星人說來到這裡玩~~~

人物介紹
主角,高中生與一般高中生沒什麼不同。

女主角,外星人
種族:キャーティア
キャーティア陸上調查員

女主角之二
CIA的實習生,後來成為キャーティア的守衛
喜歡:槍

女主角之三
美帝傭兵,後來成為キャーティア的守衛
喜歡:電影
艦長
種族:キャーティア

副艦長
種族:キャーティア
キャーティア陸上班長
種族:キャーティア

モルフェノス財團創始人的孫女
錢多到只要負責花掉就好

モルフェノス財團傭兵一

モルフェノス財團傭兵二
種族:ドギーシュア
通稱「犬の人」
與キャーティア對立(自古貓與狗當然對立....)


故事剛開始時

エリス剛登入地球的慘況

エリス睡在騎央的床上(令人羨慕....)

騎央害羞的樣子 

エリス下樓後,其他人看到後

 外國貨

舶來品

進口商品

兵器

ドギーシュア的小幫手機器人



ドギーシュア的反物質
除了被打到後除了生命之外任何無機物接消失

這部動畫坦白說蠻賣肉的,但故事算不錯,沒有煩重得故事劇情
適合發呆~~~

不過故事有些發人深省的故事,
像ドギーシュア與人衝突的最高原則再不傷害對方的方式,讓對方無反擊能力,當然科技要發達到神的境界...

另外為什麼小幫手機器人長這麼的cute,再故事後期出現了初代小幫手機器人

ラウリィ
故事中說初期機器人也是跟一般人一樣,有感情可以說話,可以跟一般人做一樣的事。

久而久之有人開始有錯覺他們是人,有人開始畏懼他們因為他們可以取代,之後有人開始厭惡機器人,這有點像機械公敵。

之後ドギーシュア設計小幫手機器人成cute,並不讓他說話。好讓人還是知道他是機器人。


2011年1月17日 星期一

FAT partition最小限制

幾個月前再規劃project 的emmc partition 一直碰到無法割出一個很小的partition
那時規劃如下:

Boot loader:5MB (Fat 32)
Kernel:10MB (Fat 32)
File system:250MB (ext3)

過程中怎麼切都無法讀到partition,今天終於知道為什麼了....

參考:NTFS 與 FAT 及 FAT32 的比較

可以得知 FAT32 最小size 從33MB~2TB

不過還是有解決的辦法:

mkfs.vfat -F 16 ....

這樣Format不就是Fat32了

今天的關鍵時刻

今天的關鍵時刻討論到了天氣

其中談到日本731部隊再中國的冰凍實驗

並引用了電影「黑太陽731」的片段

內容是讓一個女子雙手沾滿水並在室外冰凍

日本官兵澆水

確認雙手結冰

回到室內解凍

解凍玩得樣子

接下來有點慘忍

旁邊的實驗人員活生生把女生的手拔下來剩下骨頭


雖然這實驗很慘忍,但後來醫學上有衍生出一個治療方式。

譬如人身上長出一些不該出現的息肉可以用液態氮讓那些肉壞死,自然脫落。

2011年1月5日 星期三

更改adb login 權限

adb login 自己的產品發現是 root 權限
找了文章一開始以為只要修改init.rc server adbd 的權限就好
service adbd /sbin/adbd

user adb

group shell log adb

實際上跑得時候發現 adbd 碰沒有跑起來
改用別的身份login console跑 adbd 出現
cannot bind 'tcp:5037'
這時才知道原來adbd本身需要跑再root的權限上。
trace adbd 的 source code 看看
再system/core/adb/adb.c
int adb_main(int is_daemon)
{
....
/* run adbd in secure mode if ro.secure is set and
** we are not in the emulator
*/
property_get("ro.kernel.qemu", value, "");
if (strcmp(value, "1") != 0) {
property_get("ro.secure", value, "");

if (strcmp(value, "1") == 0) {
// don't run as root if ro.secure is set...
secure = 1;

// ... except we allow running as root in userdebug builds if the
// service.adb.root property has been set by the "adb root" command
property_get("ro.debuggable", value, "");

if (strcmp(value, "1") == 0) {

property_get("service.adb.root", value, "");

if (strcmp(value, "1") == 0) {
  secure = 0;
}
}
}
}

/* don't listen on port 5037 if we are running in secure mode */
/* don't run as root if we are running in secure mode */
if (secure) {
struct __user_cap_header_struct header;
struct __user_cap_data_struct cap;

if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
exit(1);
}
...
}
由 get property service.adb.root 可得知 login root 時會將secure設成0 轉而往上 trace 發現 source = 1 的情況如下:

ro.kernel.qemu = 0

ro.secure = 1

service.adb.root = 0

這時可以設定的方式有三種:
  1. 修改code(廢話...),要麼就是讓source 永遠等於0,不然就是再特定地方加上property_set的function。不過這會改到android的code所以不鼓勵。
  2. 根據網路上其他文章可以發現system起來的時候,會去Load幾個property的檔案。
  3. /default.prop

    /system/build.prop

    /system/default.prop

    /data/local.prop

    我的系統只有/default.prop & /system/build.prop 這兩個檔案,選定一個加入。
  4. 修改init.rc 加入
  5. setprop ro.kernel.qemu 0

    setprop ro.secure 1

    setprop service.adb.root 0

2011年1月4日 星期二

ASUS Eee Keyboard + Mouse Set

外觀

內物:滑鼠、鍵盤、接收器、電池 x 4、說明說、CD

鍵盤

滑鼠

滑鼠 - 近拍

鍵盤 - 近拍 1

鍵盤 - 近拍 2


這組鍵盤+滑鼠採用的是2.4G wireless ,簡單來說USB插上去就可以用了。

之前同事買過藍牙鍵盤,需要登入系統連結藍牙才可以使用,相對於這組方便多了。

另外巧克力鍵盤的回饋還不錯打起來也很順手,可能是NB用習慣了甚至比我的NB好用。

缺點:
1.真的要說的話,就是那令人又愛又恨的鏡面,外觀好看卻又怕刮到。
2.每次開機第一次使用時 U I O P J K L M 會被當成數字鍵,需要按Fn+Num LK才會好。

2011年1月2日 星期日

Android browser設定desktop mode

自從買了I9000之後上網是件很平常的事
但常常碰到一些網站有專為mobile設設計的網頁如Yahoo


雖然不能說不好,但有時跟PC的使用習慣不一樣,有些網站甚至連到完全不一樣的地方去
這時browser可以切換成PC的瀏覽方式
方法是只要在網址列打上about:useragent
就會出現對話框可以選擇


這樣browser瀏覽Yahoo就正常了