當然,target 要能選擇從另一個 sd 開機。
大概就是 pc 做的一樣:
- partition
- format
- dd
- fdisk -- busybox
- mke2fs -- e2fsprog
- dd -- busybox (android 付的 dd 不認識 K, M, G 等 size argument)
然後寫成 shell script,放到 init.rc 裡。
init.rc 可以參考 recovery 和 diskinstaller 裡的 init.rc 來作。
大概就是 甚麽都不用了,只要記得 mount partition 跟 class_start default
-----> 因為要 class_start default,接下來的一堆 service command h才會啟動。
上述動作都寫在同一個 shell script,然後由 service 叫起來:
service installall /sdcard/installall.sh
console
oneshot
因為 partition, format,dd 有相依,一個做完才能換另一個,所以要寫在同一個 script,如果用分別的 service 寫,在 sleep的時候,下一個service就會啟動了。
shell script 要注意, sh 在 /system/bin/sh
貼一下 diskinstall 的 init.rc:
on init
export PATH /sbin:/system/sbin:/system/bin
export ANDROID_ROOT /system
export ANDROID_DATA /data
symlink /system/etc /etc
mkdir /data
mkdir /cache
mount /tmp /tmp tmpfs
# mount the installer needed partitions
# mount ext2 /dev/block/sdb2 /data ro
on boot
ifup lo
hostname localhost
domainname localdomain
class_start default
service installer /system/bin/installer -p /dev/block/sdb2
console
oneshot
service logcat /system/bin/logcat
console
service console /system/bin/sh
console
沒有留言:
張貼留言