Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
13/05/2022 22:05 # 1
buiducduong
Cấp độ: 22 - Kỹ năng: 1

Kinh nghiệm: 7/220 (3%)
Kĩ năng: 0/10 (0%)
Ngày gia nhập: 25/09/2020
Bài gởi: 2317
Được cảm ơn: 0
Cách sử dụng BusyBox trên Linux


BusyBox trong Linux là gì?

BusyBox là một dự án mã nguồn mở (GPL) cung cấp cách triển khai đơn giản của gần 400 lệnh phổ biến, bao gồm ls, mv, ln, mkdir, more, ps, gzip, bzip2, tar và grep. Nó cũng chứa một phiên bản của ngôn ngữ lập trình awk, trình soạn thảo sed, trình kiểm tra hệ thống tệp fsck, trình quản lý gói rpm và dpkg, và tất nhiên, một shell (sh) cung cấp khả năng truy cập dễ dàng vào tất cả các lệnh này. Nói tóm lại, nó chứa tất cả các lệnh cần thiết cho một hệ thống POSIX để thực hiện các tác vụ bảo trì hệ thống chung cũng như nhiều tác vụ quản trị và người dùng.

Trên thực tế, BusyBox thậm chí còn chứa một lệnh init có thể được khởi chạy dưới dạng PID 1 để phục vụ như là quy trình mẹ cho tất cả các dịch vụ hệ thống khác. Nói cách khác, BusyBox có thể được sử dụng như một giải pháp thay thế cho systemd, OpenRC, sinit, init và các daemon khởi chạy khác.

BusyBox rất nhẹ, chỉ dưới 1 MB, vì vậy nó đã trở nên phổ biến trong thiết bị nhúng, Edge và IoT. Trong thế giới containers và điện toán đám mây, BusyBox cũng phổ biến như một nền tảng cho các container images Linux.

Tối giản

Một phần sự hấp dẫn của BusyBox là sự tối giản của nó. Tất cả các lệnh được biên dịch thành một tệp nhị phân duy nhất (busybox) và chỉ có vỏn vẹn 81 trang nhưng lại bao gồm gần 400 lệnh.

Ví dụ so sánh, đây là đầu ra của phiên bản shadow của 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

Và đây là phiên bản BusyBox cùng một lệnh:

-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)

Sự khác biệt này là một tính năng hay một giới hạn, còn phụ thuộc vào việc bạn muốn có 20 tùy chọn hay mười tùy chọn trong các lệnh của mình. Đối với một số người dùng và trường hợp sử dụng, sự tối giản của BusyBox cung cấp vừa đủ cho những gì người dùng muốn. Đối với những người khác, đâylà một môi trường tối thiểu để dự phòng hoặc làm nền tảng để cài đặt các công cụ mạnh mẽ hơn như Bash, Zsh, GNU Awk,…

Cách cài đặt BusyBox

Trên Linux, bạn có thể cài đặt BusyBox bằng trình quản lý gói của mình. Ví dụ như trên Fedora:

sudo dnf install busybox

Trên Debian:

sudo apt install busybox

Trên macOS, sử dụng MacPorts hoặc Homebrew. Trên Windows, sử dụng Chocolatey.

Bạn có thể đặt BusyBox làm shell bằng lệnh chsh --shell, theo sau là đường dẫn đến ứng dụng BusyBox sh. Mình lưu BusyBox trong / lib64, nhưng vị trí của nó phụ thuộc vào nơi phân phối bạn đã cài đặt.

$ which busybox
/lib64/busybox/busybox
$ chsh --shell /lib64/busybox/sh

Thay thế tất cả các lệnh phổ biến bằng BusyBox phức tạp hơn một chút, bởi vì hầu hết các bản phân phối đều “mặc định” để tìm kiếm các gói cụ thể cho các lệnh cụ thể. Nói cách khác, trong khi về mặt kỹ thuật, có thể thay thế init bằng init của BusyBox, trình quản lý gói của bạn có thể từ chối cho phép bạn xóa gói chứa init vì sợ bạn khiến hệ thống không khởi động được. Có một số bản phân phối được xây dựng dựa trên BusyBox, vì vậy đây có lẽ là cách dễ nhất để trải nghiệm hệ thống được xây dựng xung quanh BusyBox.

Dùng thử BusyBox

Bạn không cần phải thay đổi shell của mình thành BusyBox vĩnh viễn chỉ để thử nó. Bạn có thể khởi chạy shell BusyBox từ shell hiện tại của mình:

$ busybox sh
~ $

Tuy nhiên, hệ thống của bạn vẫn có các phiên bản lệnh không phải BusyBox cài đặt, vì vậy để trải nghiệm các công cụ của BusyBox, bạn phải nhập các lệnh dưới dạng đối số cho tệp thực thi busybox:

~ $ 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
[...]

Để có trải nghiệm BusyBox “đầy đủ”, bạn có thể tạo các liên kết tượng trưng đến busybox cho mỗi lệnh. Điều này dễ hơn tưởng tượng, miễn là bạn sử dụng vòng lặp for:

$ mkdir bbx
$ for i in $(bbx --list); do \
ln -s /path/to/busybox bbx/$i \
done

Thêm thư mục liên kết vào đầu đường dẫn của bạn và khởi chạy BusyBox:

$ PATH=$(pwd)/bbx:$PATH bbx/sh

BusyBox là một dự án thú vị và là một ví dụ về mức độ tối thiểu của máy tính. Cho dù bạn sử dụng BusyBox như một môi trường nhẹ cho một chiếc máy tính cổ, hay sử dụng cho một thiết bị nhúng, để dùng thử một hệ thống init mới, hay chỉ là tò mò, thì bạn đều có thể dùng thử BusyBox.




 
Copyright© Đại học Duy Tân 2010 - 2024