很早写过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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐