- Một công cụ binary multicall nhẹ hợp nhất bộ lệnh Linux vào một tệp thực thi duy nhất, được phát triển như một giải pháp thay thế mã nguồn mở cho BusyBox
- Chỉ cần tải xuống và chạy một tệp thực thi duy nhất (
toybox-x86_64), là có thể dùng các lệnh cơ bản như echo, cp, mv, cat trong cùng một binary
- Tuân thủ các tiêu chuẩn POSIX-2008 và LSB 4.1, nhấn mạnh tốc độ thực thi nhanh, cấu trúc gọn gàng và khả năng tuân thủ tiêu chuẩn
- Mục tiêu cốt lõi ban đầu của dự án là biến Android thành một môi trường self-hosting hoàn chỉnh, được thiết kế để có thể build AOSP ngay trên chính Android
- Google công nhận triết lý này và từ năm 2015 đã tích hợp Toybox vào AOSP từ Android Marshmallow như thành phần mặc định
- BusyBox dùng giấy phép GPLv2 nên không tương thích với Android, còn ToyBox được viết lại với giấy phép BSD tương thích với Android
- Hướng tới việc loại bỏ phụ thuộc vào công cụ GNU và cung cấp môi trường build minh bạch và có thể tái tạo tốt hơn
- Toybox hướng tới mục tiêu “một hệ thống có thể tự build chỉ với tối thiểu bốn thành phần”
- Bộ lệnh POSIX, trình biên dịch, thư viện chuẩn C và kernel
- Với cấu hình này có thể tạo ra hệ thống nền tảng có thể tái tạo, sau đó mở rộng thành môi trường dùng thực tế bằng cách thêm editor (vi), công cụ giám sát (top), lịch sử shell, v.v.
- Có thể gọi các lệnh con thông qua lệnh
toybox hoặc tạo symbolic link theo tên từng lệnh để dùng như lệnh thông thường
- Tuân theo cấu trúc build giống Linux kernel (
make menuconfig; make; make install), và có thể chọn tính năng cần đưa vào dựa trên tệp .config
- Hỗ trợ đầy đủ môi trường cross-compilation, có thể build binary tĩnh cho các mục tiêu không phải x86 như ARM
- Có thể dùng
scripts/mkroot.sh để build một hệ thống Linux tối giản dựa trên Toybox
- Tạo root filesystem bằng
make root rồi chạy chroot
- Nếu dùng cùng
qemu và cross-compiler thì có thể dựng một môi trường Linux mini tự khởi động được
- Tích hợp sẵn hệ thống trợ giúp: dùng
toybox help <command> để xem mô tả của từng lệnh
1 bình luận
Ai đã dùng thử rồi, có hữu ích không?