VMware ESXi 8 xài Almquist shell và BusyBox để làm gì?

Cơm chay với rau, củ, quả.

VMware ESXi 8 là hệ điều hành Linux được hãng VMware tối ưu để chuyên chạy cho ảo hóa máy chủ nên có gọi tên khác là VMware vSphere Hypervisor.

VMware ESXi 8 không phải là 1 máy chủ Linux server thông thường đa năng mà chỉ chuyên cho ảo hóa nên cần loại bỏ những thành phần dư thừa không cần thiết.

Almquist shell là 1 Unix shell nhỏ nhẹ hơn Bash shell nên VMware ESXi 8 thích xài là chuyện dễ hiểu.

Almquist shell được bỏ vào trong Busybox với lệnh sh và lệnh ash là liên kết mềm tới lệnh busybox.

vmware -vl
VMware ESXi 8.0.2 build-22380479
VMware ESXi 8.0 Update 2

uname -a
VMkernel DevSecOps-Edu-VN.localdomain 8.0.2 #1 SMP Release build-22380479 Sep  4 2023 15:00:49 x86_64 x86_64 x86_64 ESXi

cat /etc/shells
/bin/ash
/bin/sh

ls -l /bin/ash /bin/sh
lrwxrwxrwx    1 root     root            35 Sep  4 22:01 /bin/ash -> /usr/lib/vmware/busybox/bin/busybox
lrwxrwxrwx    1 root     root            35 Sep  4 22:01 /bin/sh -> /usr/lib/vmware/busybox/bin/busybox

ash --help
BusyBox v1.29.3 (2022-12-06 08:51:38 PST) multi-call binary.

Usage: ash [-/+OPTIONS] [-/+o OPT]... [-c 'SCRIPT' [ARG0 [ARGS]] / FILE [ARGS] / -s [ARGS]]

Unix shell interpreter

BusyBox chuyên chạy trên các hệ thống nhúng vì có thể chỉnh sửa lại tập lệnh Linux sao cho chỉ vừa đủ lệnh để xài.

VMware tận dụng công cụ này nên để BusyBox làm tiến trình init 1 thay vì xài systemd với nhiều chức năng hay nhưng to nặng cồng kềnh.

Busybox chạy trên VMware ESXi 8 chỉ có 1 số lệnh cụ thể sau:

/usr/lib/vmware/busybox/bin/busybox --help
BusyBox v1.29.3 (2022-12-06 08:51:38 PST) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.
Licensed under GPLv2. See source distribution for detailed
copyright notices.

Usage: busybox [function [arguments]...]
   or: busybox --list
   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:
        addgroup, adduser, arch, ash, awk, basename, bunzip2, bzcat, bzip2, cat, chgrp, chmod, chown, chvt, cksum, clear, cp, crond,
        cut, date, dd, delgroup, deluser, diff, dirname, dnsdomainname, du, echo, egrep, eject, env, expr, false, fdisk, fgrep, find,
        fstrim, getty, grep, groups, gunzip, gzip, halt, head, hexdump, hostname, inetd, init, kill, ln, logger, login, ls, lzop,
        lzopcat, md5sum, mkdir, mkfifo, mknod, mktemp, more, mv, nohup, nslookup, od, passwd, poweroff, printf, readlink, reboot,
        reset, resize, rm, rmdir, sed, seq, setsid, sh, sha1sum, sha256sum, sha3sum, sha512sum, sleep, sort, ssl_client, stat, stty,
        sum, sync, tail, tar, taskset, tee, test, time, timeout, touch, true, uname, uniq, unlink, unlzop, unzip, usleep, vi, watch,
        wc, wget, which, who, xargs, zcat