首先,要把 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 算好。
沒有留言:
張貼留言