所以...
但是 android 的 system/core/sh 不是 static executable,有用到 share library。
所以要改一下 Android.mk。
加上:
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_STATIC_LIBRARIES := liblinenoise libc
這樣build 出來的 sh 會變大 (很多)另外我們自己寫的小程式 oxstub,如果也要放進 root,也要改寫一下 Android.mk.
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_STATIC_LIBRARIES := libcutils libc
附上 使用的 init.rc:
on early-init
start ueventd
on init
sysclktz 0
loglevel 7
# setup the global environment
export PATH /sbin:/bin
on boot
class_start default
start console
start mcustub
## Daemon processes to be run by init.
##
service ueventd /sbin/ueventd
service mcustub /sbin/xostub
service console /sbin/sh
console
root :
lrwxrwxrwx 1 charles-chang charles-chang 4 Sep 16 15:45 bin -> sbin
drwxr-xr-x 2 charles-chang charles-chang 4096 Sep 16 15:45 data
-rw-r--r-- 1 charles-chang charles-chang 118 Sep 16 15:45 default.prop
drwxr-xr-x 2 charles-chang charles-chang 4096 Sep 16 15:45 dev
-rwxr-xr-x 1 charles-chang charles-chang 90132 Sep 16 15:45 init
-rwxr-xr-x 1 charles-chang charles-chang 5 Sep 16 15:45 init.freescale.rc
-rwxr-xr-x 1 charles-chang charles-chang 363 Sep 16 15:45 init.rc
drwxr-xr-x 2 charles-chang charles-chang 4096 Sep 16 15:45 proc
drwxr-xr-x 2 charles-chang charles-chang 4096 Sep 16 15:47 sbin
drwxr-xr-x 2 charles-chang charles-chang 4096 Sep 16 15:45 sys
drwxr-xr-x 2 charles-chang charles-chang 4096 Sep 16 15:45 system
-rw-r--r-- 1 charles-chang charles-chang 2089 Sep 16 15:45 ueventd.freescale.rc
-rw-r--r-- 1 charles-chang charles-chang 0 Sep 16 15:45 ueventd.goldfish.rc
-rw-r--r-- 1 charles-chang charles-chang 3764 Sep 16 15:45 ueventd.rc
root tree:
myroot2/
|-- bin -> sbin
|-- data
|-- default.prop
|-- dev
|-- init
|-- init.freescale.rc
|-- init.rc
|-- proc
|-- sbin
| |-- adbd
| |-- busybox
| |-- mcustub
| |-- sh
| `-- ueventd -> ../init
|-- sys
|-- system
|-- ueventd.freescale.rc
|-- ueventd.goldfish.rc
`-- ueventd.rc
附上 手動 make root image 的 command:
mkbootfs myroot2 | minigzip > myramdisk.img
然後 imx51 的 uboot 需要在做:
mkimage -A arm -O linux -T ramdisk -C none -a 0x90308000 -n "Android Root Filesystem" -d myramdisk2.img myuramdisk2.img
填入 64 bytes 的 uboot info如果要加自己寫的 script,在 boot 的時候 run,要注意,rootfs 的 make system 會修改 file attrib,所以要:
ref :
製作 static build 的 e2fs tool:
e2fs 相關的 tool 在 /external/e2fsprogs 目錄。
其中... misc.. e2fsck.. 兩個 folder 包涵 tool program。
static build 的方法,就跟上面的一樣,修改 Android.mk:
- 增加 LOCAL_FORCE_STATIC_EXECUTABLE := true
- 把 LOCAL_SYSTEM_SHARED_LIBRARIES 改為 LOCAL_STATIC_LIBRARIES,並且加入 libc
e2fsck/Android.mk | 6 ++++--
lib/blkid/Android.mk | 2 +-
lib/e2p/Android.mk | 2 +-
lib/et/Android.mk | 2 +-
lib/ext2fs/Android.mk | 2 +-
lib/uuid/Android.mk | 2 +-
misc/Android.mk | 13 ++++++++++---
其中 lib 的部份都是 build library:
- 把 BUILD_SHARED_LIBRARY 改成 BUILD_STATIC_LIBRARY
沒有留言:
張貼留言