ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年4月27日 星期三

write program launched by init.rc

要在 init.rc 中加入一個 program,不是 service,是用 exec 執行的程式。

首先,要把 init.rc 的 loglevel 改為 6,這樣才會印出有沒有去 run 這個程式。
但是這樣 程式的 printf 還是不會輸出..

修改 system/core/init.rc

iff --git a/init/init.c b/init/init.c index f5adb5b..48d60e6 100755 --- a/init/init.c +++ b/init/init.c @@ -180,7 +180,7 @@ int wait_for_service(char *filename) { sprintf(tmp, "%d,%d", dup(fd), sz); add_environment("ANDROID_PROPERTY_WORKSPACE", tmp); /* redirect stdio to null */ - zap_stdio(); + open_console(); setpgid(0, getpid()); /* execute */
如果是用 service 啟動的program,只要加上 console 這個 attribute 就可以了
這樣那個 program 的 printf 輸出也可以顯示出來了..

如果是修改 init.rc, (device/xxx/init.rc)
之後 make 就可以產生新的 ramdisk (uramdisk.img)

copy 到 sd 的第一個partition 後,可以在 system console 中 live update
-- 因為 ramdisk 和 kernel 都是由 bootloader load 到 ram 執行,所以可以 live update..
mount -t vfat /dev/block/mmcblk1p1 /mnt/extsd dd if=/mnt/extsd/uramdisk.img of=/dev/block/mmcblk0 bs=1048576 seek=6 因為 android 的 dd 不認識 M, k 等單位符號,所以要先把 M 算好。

沒有留言:

標籤

網誌存檔