要编译 BusyBox 中完整的 script
命令(包括可选功能),需确保相关配置宏已启用,并正确执行编译流程。以下是详细步骤:
1. 获取 BusyBox 源码
git clone https://git.busybox.net/busybox/
cd busybox
或下载稳定版本:
wget https://busybox.net/downloads/busybox-<version>.tar.bz2
tar -xjf busybox-<version>.tar.bz2
cd busybox-<version>
2. 配置编译选项
运行交互式配置菜单:
make menuconfig
按以下路径启用 script
及相关功能:
Shell Utilities →
[*] script (记录终端会话)
[*] Enable flush (-f) (实时刷新日志,对应CONFIG_FEATURE_SCRIPT_FLUSH
)
[*] Enable quiet mode (-q) (静默模式,对应CONFIG_FEATURE_SCRIPT_QUIET
)
[*] Record timing information (时间戳,对应CONFIG_FEATURE_SCRIPT_TIMES
)
若需回放功能,还需启用:
[*] scriptreplay (会话回放工具)
3. 直接修改 .config
文件(可选)
若熟悉配置宏,可直接编辑 .config
文件:
CONFIG_SCRIPT=y
CONFIG_FEATURE_SCRIPT_FLUSH=y
CONFIG_FEATURE_SCRIPT_QUIET=y
CONFIG_FEATURE_SCRIPT_TIMES=y
CONFIG_SCRIPTREPLAY=y
4. 编译与安装
make -j$(nproc) # 多线程编译
make install # 默认安装到 ./_install/bin/
生成的二进制文件为 ./busybox
,或通过 make install
安装到系统目录。
5. 验证功能
检查是否支持完整功能:
./busybox script --help
# 测试常用参数:
./busybox script -f -t session.log 2>timing.log # -f:实时刷新;-t:记录时间信息
./busybox scriptreplay timing.log session.log # 回放会话
6.常见问题解决
(1) script
命令未生效?
- 确保编译时未遗漏依赖项(如
libc
)。 - Android环境下可能需要静态链接:
make LDFLAGS=-static CONFIG_STATIC=y
(2)日志文件权限问题?
使用 sudo
或在目标设备上赋予写入权限。
(3)裁剪版系统无相关依赖?
通过交叉编译时指定目标环境工具链:
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm
7.扩展:自定义功能开发
如需修改 script
行为(如增加加密日志),可编辑源码文件:
shell/script.c
include/applets.h.in
(注册新命令)
修改后重新执行编译流程即可。
如果有其他需求(如移植到嵌入式系统),请进一步说明场景!
内容由零声教学AI助手提供,问题来源于学员提问