现在,将最新稳定版本的Busybox(1.31.1)集成到我们的Openwrt项目中时,我面临一个问题。
openwrt中的busybox旧版本是1.23.2,当我将其升级到1.31.1时,我做了以下事情:
修改Openwrt busybox pkg生成文件:/ package / utils / busybox / Makefile
cd / package / utils / busybox / config,
../ convert_menuconfig.pl ../../../../ build_dir / target-xxx / busybox-1.31.1
cd ..
./ convert_default.pl <../../../ build_dir / target-xxx / busybox-1.31.1 / .config> Config-defaults.in
运行构建映像时,我可以看到busybox安装在/ bin /下,但是某些功能不起作用,例如ash / sh,请参见以下错误:
/#ls -l bin lrwxrwxrwx 1 root root 11 Nov 14 22:49灰-> busybox
-rwxr-xr-x 1根根5293568 Nov 14 22:49 busybox
lrwxrwxrwx 1 root root 11 Nov 14 22:49 cat-> busybox
...
lrwxrwxrwx 1 root root 11 Nov 14 22:49 ls-> busybox
...
lrwxrwxrwx 1 root root 11 Nov 14 22:49 sh-> busybox
...
“ cat”命令正常:
/#cat / etc / preinit
#!/bin/sh
# Copyright (C) 2006-2016 OpenWrt.org
# Copyright (C) 2010 Vertical Communications
[ -z "$PREINIT" ] && exec /sbin/init
export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
. /lib/functions.sh
. /lib/functions/preinit.sh
. /lib/functions/system.sh
boot_hook_init preinit_essential
boot_hook_init preinit_main
boot_hook_init failsafe
boot_hook_init initramfs
boot_hook_init preinit_mount_root
for pi_source_file in /lib/preinit/*; do
. $pi_source_file
done
boot_run_hook preinit_essential
pi_mount_skip_next=false
pi_jffs2_mount_success=false
pi_failsafe_net_message=false
boot_run_hook preinit_main
但是“ sh”不正确:
/#sh / etc / preinit
/etc/preinit: line 5: [: not found
/etc/preinit: /lib/functions.sh: line 57: syntax error: support for $((arith)) is disabled