![如何让 BusyBox 在我的后端操作系统可以是 xyz 的地方运行?](https://linux22.com/image/1312476/%E5%A6%82%E4%BD%95%E8%AE%A9%20BusyBox%20%E5%9C%A8%E6%88%91%E7%9A%84%E5%90%8E%E7%AB%AF%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%AF%E4%BB%A5%E6%98%AF%20xyz%20%E7%9A%84%E5%9C%B0%E6%96%B9%E8%BF%90%E8%A1%8C%EF%BC%9F.png)
我正在尝试在 ArchLinux、Fedora 或 Ubuntu 上设置 BusyBox。这样当我使用 telnet 时,我可以获得类似以下内容:
但是我该如何开始呢?只需在我现有的发行版上安装 Busybox 即可?这会包含我所有的外部第三方库吗?
$ telnet 192.168.0.198 23
Trying 192.168.0.198...
Connected to 192.168.0.198.
Escape character is '^]'.
(none) login: root
Password:
BusyBox v1.1.2 (2008.07.18-08:25+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Welcome to HiLinux.
-sh: nfsroot: not found
~ $ help
Built-in commands:
-------------------
. : alias bg break cd chdir command continue echo eval exec exit
export false fg getopts hash help jobs kill let local pwd read
readonly return set shift times trap true type ulimit umask unalias
unset wait
~ $ man alias
-sh: man: not found
跟进:
为了进行实验,我尝试在已完全安装的设备上进行操作:
0)后端操作系统是 Arch、Ubuntu、Fedora、CentOS
1) 在所有
2)运行 busybox
$ busybox
BusyBox v1.17.1 (Ubuntu 1:1.17.1-10ubuntu1) multi-call binary.
Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.
Usage: busybox [function] [arguments]...
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, adjtimex, arping, ash, awk, basename, blockdev, brctl, bunzip2, bzcat,
bzip2, cal, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cpio, cut,
date, dc, dd, deallocvt, df, dirname, dmesg, dnsdomainname, dos2unix, du,
dumpkmap, dumpleases, echo, egrep, env, expr, false, fgrep, find, fold, free,
ftpget, ftpput, getopt, grep, gunzip, gzip, head, hexdump, hostid, hostname,
httpd, id, ifconfig, ionice, ip, ipcalc, kill, killall, klogd, last, length,
ln, loadfont, loadkmap, logger, logname, logread, losetup, ls, lzcat, lzma,
md5sum, mdev, mkdir, mkfifo, mknod, mktemp, more, mount, mt, mv, nameif, nc,
netstat, nslookup, od, openvt, patch, pidof, ping, ping6, printf, ps, pwd,
rdate, readlink, realpath, renice, reset, rev, rm, rmdir, route, rpm, rpm2cpio,
run-parts, sed, setkeycodes, sh, sha1sum, sha256sum, sha512sum, sleep, sort,
start-stop-daemon, static-sh, strings, stty, swapoff, swapon, sync, sysctl,
syslogd, tac, tail, tar, tee, telnet, test, tftp, time, top, touch, tr,
traceroute, traceroute6, true, tty, udhcpc, udhcpd, umount, uname, uncompress,
uniq, unix2dos, unlzma, unxz, unzip, uptime, usleep, uudecode, uuencode, vi,
watch, watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat, yes, zcat
答案1
“BusyBox 是一个多调用二进制文件,它将许多常见的 Unix 实用程序组合成一个可执行文件。”
正如您在标题中问到的那样,BusyBox 本身无法“运行”。BusyBox 不是像 MythTV 或 XBMC 这样的用户界面。不确定您所说的“安装在已安装的发行版之上”是什么意思,因为 BusyBox 可执行文件可以与所有其他实用程序一起安装在文件系统中。只有当您开始用指向 BusyBox 版本的符号链接替换标准实用程序时,您才会破坏安装。
这样当我通过 telnet 连接时我就可以得到如下信息:
如果你想使用 BusyBox 版本的远程登录而不是发行版的远程登录,那么你必须编辑运行级别脚本(或inetd配置)使用 BusyBox telnet 守护进程,远程控制,而不是发行版的远程控制。
为了进行快速实验,检查是否有远程登录或者互联网通过列出所有进程来查看系统中正在运行的守护进程:
$ ps -A | grep net
如果有 telnetd 或 inetd 守护进程,则必须停止服务或终止守护进程。如果没有 telnetd 或 inetd 守护进程,则应该能够使用以下命令手动启动 BusyBox telnetd 守护进程(可能必须以 sudo 开头):
$ busybox telnetd
当然,在您通过 telnet 连接到 PC 后,shell 仍可能根据 PATH 而不是 BusyBox 版本调用发行版的实用程序。您必须安装符号链接或明确使用
$ busybox [function] [arguments]...