BusyBox semakin populer akhir-akhir ini, khususnya di kalangan pengguna Docker. Banyak gambar Docker menggunakan BusyBox untuk memberi Anda gambar minimal.
Dan ini bisa membuat banyak pengguna bingung khususnya jika Anda menerima perintah Linux begitu saja. Anda pikir ls, mv, dan perintah lain semacam itu adalah bagian dari Linux, padahal sebenarnya perintah ini adalah bagian dari paket GNU Coreutils dan sebagian besar distribusi Linux telah menginstalnya sebelumnya.
GNU Coreutils hampir merupakan penyedia de facto dari berbagai perintah UNIX/Linux. Hampir karena selalu ada alternatif dan BusyBox adalah salah satu alternatif untuk GNU Coreutils.
Apa itu BusyBox?
BusyBox adalah proyek open source yang menyediakan implementasi sederhana dari sekitar 400 perintah umum UNIX/Linux. Dilucuti? Ya. Implementasi BusyBox menghapus opsi perintah yang jarang digunakan. Semuanya muat di bawah 1 MB dan gambar minimal ini adalah alasan mengapa ia mendapatkan popularitas di antara sistem tertanam dan domain IoT serta di dunia komputasi awan.
Jangan pergi dengan ukurannya. BusyBox memiliki ruang lingkup untuk sed dan awk seperti editor klasik (versi dipreteli lagi) dan berisi shell sendiri juga. Bahkan berisi perintah init yang dapat diluncurkan sebagai PID 1. Ini berarti BusyBox dapat dikonfigurasi sebagai alternatif untuk Systemd, OpenRC dll.
BusyBox adalah alternatif yang luar biasa untuk GNU Coreutils khususnya dalam kasus di mana ukuran kecil dari sistem operasi penting.
️BusyBox memberi Anda perintah Linux populer seperti mv, mkdir, ls dll tetapi hanya berisi opsi yang umum digunakan dari perintah ini. Minimalisme ini adalah USP dari BusyBox.Apakah itu masalah karena Anda tidak mendapatkan perintah Linux lengkap pilihan dengan BusyBox?
Itu tergantung pada kebutuhan Anda, sungguh. Kebanyakan orang tidak akan pernah membutuhkan semua opsi dari suatu perintah. Beberapa perintah Linux memiliki lebih dari 50 opsi dan saya yakin Anda tidak pernah menggunakan semua opsi bahkan dari satu perintah Linux.
BusyBox mengurangi opsi yang jarang digunakan. Misalnya, perintah ls memiliki opsi G yang menghapus nama grup dari output daftar panjang (ls -l).

Sekarang, saya pikir Anda tidak pernah membutuhkan opsi ini. Inilah sebabnya mengapa tidak ada dalam implementasi ls dari BusyBox. Jika Anda benar-benar membutuhkan keluaran di mana nama grup tidak disertakan, yang harus Anda lakukan adalah menggunakan perintah cut atau awk untuk tujuan itu.
Ambil contoh lain. Ini adalah halaman bantuan dari perintah mv dari GNU Coreutils:
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-f, --force do not prompt before overwriting
-i, --interactive prompt before overwrite
-n, --no-clobber do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.
--strip-trailing-slashes remove any trailing slashes from each SOURCE
argument
-S, --suffix=SUFFIX override the usual backup suffix
-t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY
-T, --no-target-directory treat DEST as a normal file
-u, --update move only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-Z, --context set SELinux security context of destination
file to default type
--help display this help and exit
--version output version information and exit
Sekarang, ini adalah halaman bantuan perintah mv dari BusyBox:
Usage: mv [-fin] SOURCE DEST
or: mv [-fin] SOURCE... DIRECTORY
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY
-f Don't prompt before overwriting
-i Interactive, prompt before overwrite
-n Don't overwrite an existing file
Lihat perbedaannya?
Bagaimana cara mendapatkan BusyBox?
Ada berbagai cara untuk mendapatkan BusyBox.
Jika Anda hanya ingin merasakan BusyBox pada distribusi Linux Anda saat ini, Anda dapat menginstalnya menggunakan manajer paket distribusi Anda seperti Apt atau DNF atau Yum.
Di Ubuntu, Anda dapat menggunakan perintah ini untuk menginstal BusyBox:
sudo apt install busybox
Setelah itu, jika Anda ingin menjalankan versi BusyBox dari suatu perintah, Anda harus menambahkan busybox sebelumnya.
busybox cat sample.txt
Jika sebuah perintah tidak diimplementasikan oleh BusyBox, ia akan memunculkan kesalahan bahwa 'applet tidak ditemukan'.
[email protected]:~$ busybox xyz
xyz: applet not found
Alternatifnya , Anda dapat mengunduh image Docker dari BusyBox dan mengalaminya dalam container yang sedang berjalan.
Pastikan Anda telah menginstal Docker. Tarik gambar buruh pelabuhan resmi:
docker pull busybox
Jalankan wadah dari gambar dan masukkan shell BusyBox:
docker run -it --rm busybox
Setiap perintah Linux yang Anda jalankan di sini berasal dari BusyBox. Anda tidak perlu menentukannya secara eksplisit.

Secara keseluruhan, Anda tidak memerlukan BusyBox pada sistem Linux biasa. Anda sudah memiliki versi lengkap dari perintah Linux dari GNU Coreutils di sana. Tidak perlu menginstal versi yang dipreteli.
Tetapi BusyBox memiliki penggunaannya di area khusus seperti ketika Anda mengonfigurasi OS Linux minimal untuk perangkat yang disematkan atau IoT. Hal yang sama berlaku ketika Anda ingin menjaga ukuran gambar Docker Anda tetap kecil.
Saya harap Anda memiliki pemahaman yang lebih baik tentang BusyBox. Jika Anda memerlukan klarifikasi atau memiliki saran, beri tahu saya di komentar.