ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年9月16日 星期五

root only , enable shell

想要建立一個最小 root , 但是要有 shell 跟 busybox。
所以...
但是 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 :
  1. http://r40eubuntu.blogspot.com/2012/01/root-fs-copy-to-file-attribute.html



製作 static build 的 e2fs tool:

e2fs 相關的 tool 在 /external/e2fsprogs 目錄。
其中... misc.. e2fsck.. 兩個 folder 包涵 tool program。

static build 的方法,就跟上面的一樣,修改 Android.mk:
  1. 增加 LOCAL_FORCE_STATIC_EXECUTABLE := true
  2. 把 LOCAL_SYSTEM_SHARED_LIBRARIES 改為 LOCAL_STATIC_LIBRARIES,並且加入 libc
但是這個 project 還用了很多自己的 library,這些library 都要改成 static: 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:
  1. 把 BUILD_SHARED_LIBRARY 改成 BUILD_STATIC_LIBRARY

沒有留言:

標籤

網誌存檔