很早写过Busybox的移植, 觉得方式比较繁琐
新的移植方式, 简单高效
Busybox 移植
目标: 把 busybox 编译到 /sbin 的目录下
这部分比较特殊, 五花八门。
推荐一个省时省力的方式: 把busybox当作bin直接编译到recovery中。
diff --git a/alps/build/core/Makefile b/alps/build/core/Makefile
index f812ea8..0e734a6 100644
--- a/alps/build/core/Makefile
+++ b/alps/build/core/Makefile
@@ -836,6 +836,8 @@ recovery_binary := $(call intermediates-dir-for,EXECUTABLES,recovery)/recovery
recovery_resources_common := $(call include-path-for, recovery)/res
recovery_ramdisk_bthdr := $(PRODUCT_OUT)/ramdisk-recovery-bthdr.img
+recovery_busybox := $(TOPDIR)device/lcsh/lcsh6580_weg_sh_l/recovery_busybox.sh
+
# Set recovery_density to the density bucket of the device.
recovery_density := unknown
ifneq (,$(PRODUCT_AAPT_PREF_CONFIG))
@@ -972,6 +974,8 @@ endif
$(hide) cp -R $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT)
@echo Modifying ramdisk contents...
$(hide) rm -f $(TARGET_RECOVERY_ROOT_OUT)/init*.rc
+ @echo ---Busybox---
+ $(recovery_busybox) $(PRODUCT_OUT)
ifeq ($(TARGET_USERIMAGES_USE_UBIFS),true)
$(hide) cp -f $(recovery_ubiformat) $(TARGET_RECOVERY_ROOT_OUT)/sbin/ubiformat
endif
recovery_busybox.sh
#!/bin/bash
PRODUCT_OUT=$1
cp -f device/lcsh/lcsh6580_weg_sh_l/busybox $PRODUCT_OUT/recovery/root/sbin/
修改 Init.rc
目标: 可以使用 adb 命令。
$ adb shell
原理:生成一个软连接 /system/bin/sh
在Init.rc 添加
# Begin Busybox
# 1:
mkdir /system
mkdir /system/bin #不一定生效
# 2:
symlink /sbin/busybox /system/bin/sh
# 3:
symlink /sbin/busybox /sbin/cat
symlink /sbin/busybox /sbin/ls
symlink /sbin/busybox /sbin/echo
symlink /sbin/busybox /sbin/pwd
# End
加入这几行命令之后就可以了。
1: 建立目录, 以便后面创建软连接使用
mkdir /system/bin
可能创建目录不成功, 这里需要想别的办法创建这个目录,否则后面的软连接不能生成出来。
2: 创建软连接, 为了 adb shell 做准备
3: (可选项) 建立一些常用的命令的软连接
如果没有 步骤3的话, 使用命令:
$ busybox ls