很早寫過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