Busybox linux là gì

Làm thế nào để công nghệ 395 Views

Busybox linux là gì

Busybox linux là gì
fatmawati achmad zaenuri / Shutterstock.com

BusyBox là một tập hợp các chương trình Unix cốt lõi được đóng gói dưới dạng một tệp nhị phân duy nhất. Điều này làm cho nó trở nên lý tưởng cho các môi trường hạn chế tài nguyên, chẳng hạn như các thiết bị nhúng. Bản phân phối đầy đủ chứa gần 400 lệnh phổ biến nhất.

BusyBox là mã nguồn mở và được cấp phép theo GPL. Nó được tạo ra vào năm 1995 với mục đích làm cho một hệ thống có thể khởi động nằm gọn trên một đĩa mềm. Việc gộp các lệnh vào một tệp nhị phân giúp giảm chi phí và cho phép chia sẻ mã giữa các ứng dụng dường như độc lập.

BusyBox là gì?

BusyBox cung cấp các lệnh tiện lợi thông thường mà thường có cảm giác như chúng là một phần của trình bao của bạn. Mặc dù các công cụ userland như lscat có mặt ở khắp mọi nơi, trên thực tế chúng được chứa trong một gói tiện ích riêng biệt độc lập với trình bao của bạn. Nhiều bản phân phối Linux cung cấp các lệnh này thông qua GNUs coreutils nhưng những người khác gửi BusyBox thay thế.

Dự án hoạt động bằng cách ký hiệu các tên lệnh đã biết trong /usr/bin sang tệp nhị phân BusyBox. Sau đó, tệp thực thi này sẽ gọi hàm tương ứng với tên được truyền làm đối số đầu tiên.

  • Với BusyBox mệnh lệnh mkdir đi dạo /usr/bin/busybox mkdir
  • Với GNU Coreutils – mệnh lệnh mkdir đi dạo /usr/bin/mkdir.

Bạn có thể sử dụng các lệnh như trong suốt mkdir, passwd, ps, tar, và wget sau khi BusyBox được cài đặt. Các lệnh được triển khai dưới dạng “applet” được kết hợp thành một bản phân phối BusyBox đang hoạt động. Bộ đầy đủ nặng khoảng 1 MB. Applet có thể tháo rời để kích thước nhị phân có thể được giảm hơn nữa. Bạn có thể kiểm tra những gì có sẵn trong cài đặt của mình bằng cách chạy busybox mà không cần đối số.

Kể từ khi BusyBox được tạo ra để cung cấp năng lượng cho các hệ thống có khả năng khởi động nhỏ, nó bao gồm mọi thứ cần thiết trong vùng đất của người dùng để khởi động và quản lý hệ thống POSIX. Điều đó kéo dài đến mức tối thiểu init triển khai có thể được chạy dưới dạng ID quy trình 1 và các dịch vụ hệ thống hỗ trợ. Bạn có thể sử dụng BusyBox như một giải pháp thay thế gọn nhẹ cho thông thường init hoặc là systemd con quỷ.

Bởi vì BusyBox được tối giản một cách có chủ ý, không phải lệnh nào cũng thực hiện tất cả các chức năng của đối tác GNU của nó. Bạn có thể tìm thấy một số cờ bị thiếu hoặc sự khác biệt về hành vi trong các tình huống bất thường. Đây là một trong những hạn chế của bản chất tinh gọn BusyBox.

BusyBox được sử dụng ở đâu?

BusyBox có thể được tìm thấy ở bất kỳ nơi nào có vấn đề về việc sử dụng đĩa. Nó được sử dụng bởi các hệ điều hành tối thiểu như Alpine, cũng như các kịch bản chuyên biệt như thiết bị nhúng và trình bao di động.

Rất có thể, một thiết bị có nguồn gốc Unix không chạy hệ điều hành phân phối thông thường sẽ sử dụng BusyBox. Bạn sẽ tìm thấy nó trên bộ định tuyến mạng, TV thông minh, ô tô hiện đại và các thiết bị IoT. Mỗi cài đặt này được đặc trưng bởi sự cần thiết phải chạy các công cụ vùng người dùng quan trọng trong một môi trường hạn chế về tài nguyên.

Gửi một tệp nhị phân tất cả trong một hiệu quả hơn. Nó làm giảm sự dư thừa bằng cách cho phép tất cả các lệnh chia sẻ mã chung mà không cần lưu trữ các thư viện độc lập trên đĩa. Bởi vì BusyBox cung cấp khả năng tương thích tốt với các triển khai khác và được cấp phép theo GPL, nó thường là lựa chọn tốt nhất cho các môi trường yêu cầu một bộ công cụ nhẹ.

Các nhà cung cấp thiết bị nhúng cũng được hưởng lợi từ bản chất mô-đun của BusyBox. Một sản phẩm IoT có thể chỉ cần một số công cụ thiết yếu để cung cấp chức năng của nó. Việc phân phối tệp nhị phân BusyBox đã sửa đổi sẽ giải phóng thêm vài KB dung lượng đĩa, đây có thể là một khoản tiết kiệm đáng kể.

Cách dùng thử BusyBox

Bạn có thể cài đặt BusyBox mà không cần thay thế các tiện ích hiện tại của mình. Sử dụng trình quản lý gói của bạn để thêm busyboxvà sau đó thêm lệnh đã chọn của bạn vào busybox nhị phân để chạy một applet:

busybox mkdir test

Điều này đảm bảo rằng phiên bản BusyBox của lệnh được sử dụng thay vì phiên bản trong đường dẫn mặc định của trình bao của bạn.

Một cách khác để thử BusyBox là thông qua hình ảnh Docker chính thức:

docker run -it --rm busybox

Nếu bạn đã cài đặt Docker, bạn sẽ kết thúc việc triển khai trình bao của BusyBox. Bạn có thể chạy một lệnh cụ thể bằng cách thêm nó vào sau tên hình ảnh:

docker run -it --rm busybox mkdir demo

BusyBox cũng có trình giả lập JavaScript cho phép bạn dùng thử các công cụ trong trình duyệt web của mình.

Trên hầu hết các bản phân phối Linux, bạn không thể thay thế hoàn toàn coreutils với BusyBox. Các lệnh và gói dành riêng cho phân vùng thường được kết nối với coreutils các tiện ích có sẵn. Bản phân phối của bạn thường sẽ từ chối gỡ cài đặt gói này, vì nó có thể khiến hệ thống không sử dụng được nếu: init bị xóa.

Nếu bạn muốn dựa vào BusyBox, tốt nhất nên bắt đầu với một bản phân phối sử dụng nó và sau đó đặt phần mềm khác của bạn lên trên nó. Thêm BusyBox bên cạnh nó coreutils như được hiển thị ở trên hoạt động tốt khi bạn cần kiểm tra cách một applet sẽ phản ứng trong một tình huống cụ thể.

Sự kết luận

BusyBox là một triển khai nhẹ của các tiện ích UNIX vùng người dùng đi kèm dưới dạng một tệp nhị phân duy nhất. Bạn có thể kết hợp nó với nhân Linux để tạo ra một hệ thống làm việc mà không cần bất kỳ phụ thuộc nào khác.

BusyBox được tối ưu hóa cho các môi trường hạn chế về không gian. Điều này làm cho nó trở nên lý tưởng cho các sản phẩm nhúng như thiết bị IoT. Bạn cũng có thể thấy BusyBox được cài đặt trên các bản phân phối Linux tối thiểu nhưng phổ biến như Alpine Linux.

Cho dù bạn đang sử dụng BusyBox hay GNU Coreutils, các lệnh quen thuộc của bạn nói chung sẽ “chỉ hoạt động” với một trong hai cách triển khai. Mọi vấn đề phát sinh thường là do BusyBox không triển khai tùy chọn cấu hình hoặc cờ hiếm gặp cụ thể.

Source link