Sangat mudah untuk menerima perintah Linux begitu saja. Mereka datang dibundel dengan sistem ketika Anda menginstal Linux, dan kita sering tidak mempertanyakan mengapa mereka ada di sana. Beberapa perintah dasar, seperti cd
, kill
, dan echo
tidak selalu aplikasi independen tetapi sebenarnya dibangun ke dalam shell Anda. Lainnya, seperti ls
, mv
, dan cat
adalah bagian dari paket utilitas inti (seringkali GNU coreutils
secara khusus). Tapi selalu ada alternatif di dunia open source, dan salah satu yang paling menarik adalah BusyBox.
Apa itu BusyBox di Linux?
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
BusyBox adalah proyek open source (GPL) yang menyediakan implementasi sederhana dari hampir 400 perintah umum, termasuk ls
, mv
, ln
, mkdir
, more
, ps
, gzip
, bzip2
, tar
, dan grep
. Ini juga berisi versi bahasa pemrograman awk
, editor aliran sed
, pemeriksa sistem file fsck
, rpm
dan dpkg
manajer paket, dan tentu saja, shell (sh
) yang menyediakan akses mudah ke semua perintah ini. Singkatnya, ini berisi semua perintah penting yang diperlukan untuk sistem POSIX untuk melakukan tugas pemeliharaan sistem umum serta banyak tugas pengguna dan administratif.
Bahkan, itu bahkan berisi init
perintah yang dapat diluncurkan sebagai PID 1 untuk berfungsi sebagai proses induk untuk semua layanan sistem lainnya. Dengan kata lain, BusyBox dapat digunakan sebagai alternatif daemon systemd, OpenRC, sinit, init, dan peluncuran lainnya.
BusyBox sangat kecil. Sebagai executable, ukurannya di bawah 1 MB, sehingga telah mendapatkan banyak popularitas di ruang tertanam, Edge, dan IoT, di mana ruang drive sangat mahal. Di dunia container dan komputasi awan, ini juga populer sebagai dasar untuk image container Linux minimal.
Minimalisme
Bagian dari daya tarik BusyBox adalah minimalisnya. Semua perintahnya dikompilasi menjadi satu biner (busybox
), dan halaman manualnya hanya 81 halaman (menurut perhitungan saya perpipaan man
untuk pr
) tetapi mencakup hampir 400 perintah.
Sebagai contoh perbandingan, berikut adalah output dari shadow
versi useradd --help
:
-b, --base-dir BASE_DIR base directory for home
-c, --comment COMMENT GECOS field of the new account
-d, --home-dir HOME_DIR home directory of the new account
-D, --defaults print or change the default config
-e, --expiredate EXPIRE_DATE expiration date of the new account
-f, --inactive INACTIVE password inactivity
-g, --gid GROUP name or ID of the primary group
-G, --groups GROUPS list of supplementary groups
-h, --help display this help message and exit
-k, --skel SKEL_DIR alternative skeleton dir
-K, --key KEY=VALUE override /etc/login.defs
-l, --no-log-init do not add the user to the lastlog
-m, --create-home create the user's home directory
-M, --no-create-home do not create the user's home directory
-N, --no-user-group do not create a group with the user's name
-o, --non-unique allow users with non-unique UIDs
-p, --password PASSWORD encrypted password of the new account
-r, --system create a system account
-R, --root CHROOT_DIR directory to chroot into
-s, --shell SHELL login shell of the new account
-u, --uid UID user ID of the new account
-U, --user-group create a group with the same name as a user
Dan inilah versi BusyBox dari perintah yang sama:
-h DIR Home directory
-g GECOS GECOS field
-s SHELL Login shell
-G GRP Group
-S Create a system user
-D Don't assign a password
-H Don't create home directory
-u UID User id
-k SKEL Skeleton directory (/etc/skel)
Apakah perbedaan ini merupakan fitur atau batasan tergantung pada apakah Anda lebih suka memiliki 20 opsi atau sepuluh opsi dalam perintah Anda. Untuk beberapa pengguna dan kasus penggunaan, minimalis BusyBox menyediakan cukup untuk apa yang perlu dilakukan. Bagi yang lain, ini adalah lingkungan minimal yang baik untuk dimiliki sebagai cadangan atau sebagai dasar untuk menginstal alat yang lebih kuat seperti Bash, Zsh, GNU Awk, dan sebagainya.
Memasang BusyBox
Di Linux, Anda dapat menginstal BusyBox menggunakan manajer paket Anda. Misalnya, di Fedora dan sejenisnya:
$ sudo dnf install busybox
Di Debian dan turunannya:
$ sudo apt install busybox
Di macOS, gunakan MacPorts atau Homebrew. Di Windows, gunakan Chocolatey.
Anda dapat mengatur BusyBox sebagai shell Anda menggunakan chsh --shell
perintah, diikuti dengan path ke BusyBox sh
aplikasi. Saya menyimpan BusyBox di /lib64
, tetapi lokasinya tergantung di mana distribusi Anda menginstalnya.
$ which busybox
/lib64/busybox/busybox
$ chsh --shell /lib64/busybox/sh
Mengganti semua perintah umum secara grosir dengan BusyBox sedikit lebih rumit, karena sebagian besar distribusi "terprogram" untuk melihat ke paket tertentu untuk perintah tertentu. Dengan kata lain, meskipun secara teknis memungkinkan untuk mengganti init
dengan init
dari BusyBox , manajer paket Anda dapat menolak untuk mengizinkan Anda menghapus paket yang berisi init
karena takut Anda menyebabkan sistem Anda menjadi tidak dapat di-boot. Ada beberapa distribusi yang dibangun di atas BusyBox, jadi memulai yang baru mungkin merupakan cara termudah untuk merasakan sistem yang dibangun di sekitar BusyBox.
Coba BusyBox
Anda tidak perlu mengubah shell Anda menjadi BusyBox secara permanen hanya untuk mencobanya. Anda dapat meluncurkan shell BusyBox dari shell Anda saat ini:
$ busybox sh
~ $
Sistem Anda masih memiliki versi perintah non-BusyBox yang diinstal, jadi untuk menggunakan alat BusyBox, Anda harus mengeluarkan perintah sebagai argumen ke busybox
dapat dieksekusi:
~ $ busybox echo $0
sh
~ $ busybox ls --help
BusyBox vX.YY.Z (2021-08-25 07:31:48 NZST) multi-call binary.
Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE]...
List directory contents
-1 One column output
-a Include entries that start with .
-A Like -a, but exclude . and ..
-x List by lines
[...]
Untuk pengalaman BusyBox "penuh", Anda dapat membuat symlink ke busybox
untuk setiap perintah. Ini lebih mudah daripada kedengarannya, selama Anda menggunakan for-loop:
$ mkdir bbx
$ for i in $(bbx --list); do \
ln -s /path/to/busybox bbx/$i \
done
Tambahkan direktori symlink Anda di start jalur Anda, dan luncurkan BusyBox:
$ PATH=$(pwd)/bbx:$PATH bbx/sh
Sibuk
BusyBox adalah proyek yang menyenangkan dan contoh betapa minimal komputasi dapat. Baik Anda menggunakan BusyBox sebagai lingkungan yang ringan untuk komputer kuno yang telah Anda selamatkan, sebagai tempat pengguna untuk perangkat yang disematkan, untuk mencoba sistem init baru, atau hanya sebagai rasa ingin tahu, mengenal kembali diri Anda dengan familiar lama bisa menyenangkan, namun entah bagaimana baru, perintah.