Ящик для игрушек - Toybox

Ящик для игрушек
Оригинальный автор (ы)Роберт Лэндли
Разработчики)Роберт Лэндли и другие
изначальный выпуск2006; 14 лет назад (2006)
Стабильный выпуск
0.8.4 / 24 октября 2020 г.; 34 дней назад (2020-10-24)
Репозиторий Отредактируйте это в Викиданных
Написано вC
Операционная системаUnix-подобный
Размер814 КБ (в архиве)
ТипНезависимая реализация SUSp XCU
Лицензия0BSD лицензия[1] (разрешительная лицензия / Эквивалентная лицензия общественного достояния )
Интернет сайтwww.landley.сеть/Ящик для игрушек

Ящик для игрушек это бесплатное программное обеспечение с открытым исходным кодом реализация более 200 Unix утилиты командной строки, такие как ls, cp, и мв. Проект Toybox стартовал в 2006 году,[2] и стал Под лицензией BSD BusyBox альтернатива.[3][4] Ящик для игрушек входит в комплект Android 6.0 Marshmallow[5] и все более поздние версии Android (то есть во всех поддерживаемых в настоящее время версиях Android), а также используются для сборки Android в Linux и macOS. Все инструменты протестированы в Linux, и многие из них также работают в BSD и macOS.

Функциональность и цель

Toybox стремится обеспечить Лицензия BSD замена для GPL лицензированный BusyBox.[6]Основные цели технического дизайна Toybox - простота, компактность, скорость и стандартное соответствие.[7] Ящик для игрушек POSIX -2008 и Младший бит 4.1 совместимый,[2] и не сосредотачивается на том, чтобы найти все варианты GNU аналоги.

Toybox лицензируется с использованием снисходительный Лицензия BSD, где BusyBox использует авторское лево Стандартная общественная лицензия GNU, что приводит к разным доменам использования. Busybox в основном используется в авторском леве FOSS домен, в то время как Toybox используется в основном с разрешительный лицензированный проектами и коммерческими компаниями, например Google Android,[8] который является явной целью Toybox.[9] По функциям Toybox не достиг паритета с Busybox.

История

Toybox был основан в начале 2006 года Робом Лэндли.[2][4] после того, как он прекратил сопровождение BusyBox из-за спора с Брюс Перенс, оригинальный создатель BusyBox.[10] В 2008 году проект приостановился.[3]В конце 2011 г. Sony Сотрудник Тим Берд предложил создать разрешительно лицензированную альтернативу BusyBox.[6] Роб Лэндли согласился с этой целью и возобновил работу над Toybox, начиная с перелицензирование от Стандартная общественная лицензия GNU к 2-му предложению Лицензия BSD[11][12]. В марте 2013 года проект был переведен на еще более разрешительный 0-пункт. Лицензия BSD.[13]

В конце 2014 года Toybox был интегрирован в Android 6.0.x «Зефир» ветки разработки для использования на устройствах.[5][8][14] В 2018 году в AOSP был добавлен сборочный узел Toybox, чтобы сделать сборку Android более герметичной.[15]

Полемика

В январе 2012 года предложение о создании лицензии BSD, альтернативной проекту BusyBox с лицензией GPL, вызвало резкую критику со стороны Мэтью Гарретт за то, чтобы убрать единственный подходящий инструмент для защита авторских прав из Сохранение свободы программного обеспечения группа.[16] Роб Лэндли, который инициировал судебные процессы на основе BusyBox, ответил, что это было намеренно, объяснив, что судебные процессы не пошли на пользу проекту, но что они привели к корпоративному уклонению, выразив желание прекратить судебные процессы. "любым способом, который я считаю нужным".[17][18][19]

Прогресс проекта

Официальная документация Toybox содержит обзор доступных, частично доступных и отсутствующих команд.[20] Версия 0.8.4 достигает примерно 80% целей проекта, поставленных для 1.0.[21]

Список команд Toybox
  • acpi - Показать состояние источников питания и тепловых устройств.
  • арка - Вывести имя машины (оборудования), такое же, как uname -m.
  • ascii - Отображение набора символов ascii.
  • base64 - Кодировать или декодировать в base64.
  • базовое имя - Возвращает не относящуюся к каталогу часть суффикса удаления имени пути.
  • blkdiscard - Отбросить сектора устройства.
  • Blkid - Тип печати, метка и UUID файловой системы на блочном устройстве или изображении.
  • Blockdev - Вызовите ioctl (s) на каждом блочном устройстве в списке.
  • bunzip2 - Распаковать файлы bzip2.
  • bzcat - Распаковать файлы bzip2 в стандартный вывод.
  • кал - Распечатать календарь.
  • Кот - Скопируйте (объедините) файлы в стандартный вывод.
  • catv - Отображать непечатаемые символы как escape-последовательности.
  • болтать - Изменение атрибутов файлов в файловой системе Linux.
  • chgrp - Изменить группу из одного или нескольких файлов.
  • chmod - Изменить режим перечисленных файлов.
  • Chown - Сменить владельца одного или нескольких файлов.
  • chroot - Запустить команду в новом корневом каталоге.
  • chrt - Получить / установить политику планирования и приоритет процесса в реальном времени.
  • chvt - Измените номер виртуального терминала N.
  • cksum - Для каждого файла выведите значение контрольной суммы crc32, длину и имя файла.
  • Чисто - Очистить экран.
  • cmp - Сравните содержимое двух файлов.
  • комм - Выберите или отклоните строки, общие для двух файлов.
  • считать - Скопируйте stdin в stdout, отображая простой индикатор прогресса в stderr.
  • cp - Копировать файлы.
  • cpio - Копирование файлов в архив cpio формата "newc" и из него.
  • crc32 - Вывод контрольной суммы crc32 для каждого файла.
  • резать - Распечатать выбранные части строк из каждого ФАЙЛА в стандартный вывод.
  • Дата - Установить / получить текущую дату / время.
  • devmem - Чтение / запись физического адреса через / dev / mem.
  • df - Показывает общее / используемое / доступное дисковое пространство для каждой файловой системы, указанной в командной строке, или всех смонтированных файловых систем.
  • dirname - Показать часть пути каталога.
  • dmesg - Распечатать или управлять кольцевым буфером ядра.
  • dnsdomainname - Показать домен, к которому принадлежит эта система (то же, что и имя хоста -d).
  • dos2unix - Преобразование формата новой строки из dos "" в unix "".
  • ду - Показать использование диска, пространство, занимаемое файлами и каталогами.
  • эхо - Записывайте каждый аргумент в стандартный вывод, разделяя их одним пробелом, за которым следует новая строка.
  • egrep - Показывать строки, соответствующие расширенным регулярным выражениям.
  • выбросить - Извлечь УСТРОЙСТВО или по умолчанию / dev / cdrom.
  • env - Установите среду для вызова команд или перечислите переменные среды.
  • расширять - Расширить табуляции до пробелов в соответствии с табуляторами.
  • фактор - Фактор целых чисел.
  • сбиваться - Сообщите файловой системе о выделении места для файла.
  • ложный - Вернуть ненулевое значение.
  • fgrep - Показывать строки, соответствующие регулярным выражениям.
  • файл - Изучите данные файлы и опишите их типы содержимого.
  • найти - Искать в каталогах совпадающие файлы.
  • стадо - Управление блокировками рекомендательных файлов.
  • fmt - Переформатировать ввод для переноса слов при заданной длине строки, сохраняя существующий уровень отступа, записывая в стандартный вывод.
  • свободный - Отображение общего, свободного и используемого объема физической памяти и пространства подкачки.
  • Freeramdisk - Освободить всю память, выделенную для указанного RAM-диска.
  • fsfreeze - Заморозить или разморозить файловую систему.
  • fstype - Тип печати файловой системы на блочном устройстве или изображении.
  • fsync - Синхронизация состояния файла в ядре с устройством хранения.
  • ftpget - Используйте протокол передачи файлов (FTP), чтобы получить файл с FTP-сервера.
  • ftpput - Используйте протокол передачи файлов (FTP), чтобы поместить файл на FTP-сервер.
  • getconf - Получить значения конфигурации системы.
  • grep - Показывать строки, соответствующие регулярным выражениям.
  • группы - Распечатать группы, в которых находится пользователь.
  • распаковать - Распаковать файлы gz.
  • остановка - Перезагрузите, остановите или выключите систему.
  • голова - Скопируйте первые строки из файлов в стандартный вывод.
  • Помогите - Показать информацию об использовании для команд toybox.
  • заклинаниеправить - Редактор шестнадцатеричных файлов.
  • имя хоста - Получить / установить текущее имя хоста.
  • часы - Получить / установить аппаратные часы.
  • i2cdetect - Обнаружение устройств i2c.
  • i2cdump - Дамп регистров i2c.
  • i2cget - Прочтите регистр i2c.
  • i2cset - Напишите регистр i2c.
  • iconv - Преобразование кодировки символов файлов.
  • мне бы - Распечатать идентификатор пользователя и группы.
  • ifconfig - Отображение или настройка сетевого интерфейса.
  • inotifyd - Запустить программу при возникновении события файловой системы.
  • insmod - Загрузите модуль с именем MODULE, передав параметры, если они указаны.
  • установить - Копировать файлы и устанавливать атрибуты.
  • ionice - Изменение приоритета планирования ввода-вывода процесса.
  • Йоренице - Отображение или изменение приоритета ввода / вывода существующего процесса.
  • iotop - Ранжируйте процессы по вводу / выводу.
  • убийство - Отправить сигнал процессу (ам).
  • убить всех - Отправить сигнал (по умолчанию: TERM) всем процессам с заданными именами.
  • killall5 - Отправить сигнал всем процессам вне текущего сеанса.
  • ссылка на сайт - Создать жесткую ссылку на файл.
  • пер - Создайте связь между FROM и TO.
  • регистратор - Записывать сообщение (или стандартный ввод) в системный журнал.
  • авторизоваться - Войдите в систему как пользователь, при необходимости запрашивая имя пользователя и пароль.
  • логин - Распечатать текущее имя пользователя.
  • проигрыш - Свяжите устройство обратной связи с файлом или покажите текущий файл (если есть), связанный с устройством петли.
  • ls - Список файлов.
  • lsattr - Список атрибутов файлов в файловой системе Linux.
  • lsmod - Отображение загруженных в данный момент модулей, их размеров и зависимостей.
  • lspci - Список устройств PCI.
  • lsusb - Список USB-хостов / устройств.
  • makedevs - Создайте ряд специальных файлов, как указано в таблице устройств.
  • Макуки - Сгенерируйте 128-битное сильное случайное число.
  • md5sum - Вычислить хэш md5 для каждого входного файла, если его нет, считывая из стандартного ввода.
  • микроком - Простая последовательная консоль.
  • смешивание - Список звуковых каналов OSS (модуль snd-mixer-oss) или установка громкости (ов).
  • mkdir - Создайте один или несколько каталогов.
  • mkfifo - Создайте FIFO (именованные каналы).
  • mknod - Создать специальный файл ИМЯ заданного типа.
  • mkpasswd - Crypt PASSWORD используя crypt (3).
  • mkswap - Настройте область подкачки Linux на устройстве или файле.
  • mktemp - Безопасно создайте новый файл «DIR / TEMPLATE» и распечатайте его имя.
  • modinfo - Отображать поля модуля для модулей, указанных по имени или пути .ko.
  • монтировать - Смонтируйте новую файловую систему (ы) в каталогах.
  • точка крепления - Проверьте, является ли каталог или устройство точкой монтирования.
  • мв - Переместить файлы.
  • nbd-клиент - Подключитесь к серверу NBD.
  • NC /netcat - Перенаправить stdin / stdout в файл или сетевое соединение.
  • netstat - Отображение сетевой информации.
  • хороший - Запустите командную строку с повышенным или пониженным приоритетом планирования.
  • нл - Количество строк ввода.
  • нету - Запустите команду, которая сохраняется до конца своего терминала.
  • nproc - Распечатать количество процессоров.
  • нсентер - Запустите КОМАНДУ в существующем (наборе) пространств имен.
  • od - Дамп данных в восьмеричном / шестнадцатеричном формате.
  • Oneit - Простая программа инициализации, которая запускает единственную предоставленную командную строку
  • Partprobe - Сообщать ядру об изменениях таблицы разделов.
  • пароль - Обновите токены аутентификации пользователя.
  • вставить - Объедините соответствующие строки из каждого входного файла.
  • патч - Применить унифицированное сравнение к одному или нескольким файлам.
  • pgrep - Поиск процесса (ов).
  • пидоф - Распечатать PID всех процессов с заданными именами.
  • пинг - Проверьте подключение к сети, отправив пакеты на хост и сообщив о его ответе.
  • pivot_root - Поменять местами СТАРУЮ и НОВУЮ файловые системы (как при одновременном монтировании --move) и переместить все процессы с chdir или chroot из OLD в NEW (включая потоки ядра), чтобы OLD можно было размонтировать.
  • pkill - искать или сигнализировать о процессах на основе имени и других
  • pmap - Сообщите карту памяти процесса или процессов.
  • выключение - Перезагрузите, остановите или выключите систему.
  • printenv - Печатать переменные среды.
  • printf - Отформатируйте и распечатайте АРГУМЕНТ (ы) в соответствии с ФОРМАТОМ, используя синтаксис C printf.
  • прлимит - Распечатать или установить ограничения ресурсов для PID номера процесса.
  • пс - Список процессов.
  • pwd - Распечатать рабочий (текущий) каталог.
  • pwdx - Распечатать рабочий каталог процессов, перечисленных в командной строке.
  • читать вперед - Предварительно загружать файлы в кеш диска.
  • ссылка для чтения - Показать, на что указывает символическая ссылка.
  • реальный путь - Отображение канонического абсолютного пути
  • перезагружать - Перезагрузите, остановите или выключите систему.
  • Ренис - установить хорошие значения запущенных процессов
  • сброс настроек - Сбросить терминал.
  • rev - Выводить каждую строку в обратном порядке, когда файлы не заданы, используется стандартный ввод.
  • rfkill - Включение / отключение беспроводных устройств.
  • rm - Удалите каждый аргумент из файловой системы.
  • rmdir - Удалить один или несколько каталогов.
  • rmmod - Выгрузите модуль с именем MODULE из ядра Linux.
  • rtcwake - Войдите в заданное состояние сна до заданного времени.
  • sed - Редактор потоков.
  • seq - Считайте от первого до последнего, с приращением.
  • setfattr - Записывать расширенные атрибуты POSIX.
  • SetSid - Запустить процесс в новом сеансе.
  • sha1sum - Вычислить ша-хэш для каждого входного файла, если его нет, чтение из стандартного ввода.
  • крошить - Надежно удалите файл, заменив его содержимое случайными данными.
  • спать - Подождите перед выходом.
  • СНТП - Простой клиент протокола сетевого времени.
  • Сортировать - Сортировать все строки текста из входных файлов (или стандартного ввода) в стандартный вывод.
  • Трещина - Скопируйте данные INPUT (или stdin) в серию файлов OUTPUT (или "x") с алфавитно увеличивающимся суффиксом (aa, ab, ac ... az, ba, bb ...).
  • стат - Отображение статуса файлов или файловых систем.
  • струны - Отображение печатаемых строк в двоичном файле
  • вс - Переключить пользователя, запрашивая пароль нового пользователя, если он не запущен как root.
  • обмен - Отключить свопинг в данном регионе подкачки.
  • обменять - Разрешить подкачку на данном устройстве / файле.
  • switch_root - Используйте PID 1 в initramfs, чтобы освободить initramfs, chroot в NEW_ROOT и exec NEW_INIT.
  • синхронизировать - Записывать ожидающие кэшированные данные на диск (синхронизировать), блокировка до завершения.
  • sysctl - Чтение / запись данных управления системой (в / proc / sys).
  • tac - Вывести строки в обратном порядке.
  • хвостик - Скопируйте последние строки из файлов в stdout.
  • деготь - Создавать, извлекать или перечислять файлы в файле .tar (или сжатом t? Z).
  • набор задач - Запустить новую задачу, которая может выполняться только на определенных процессорах, или изменить привязку к процессору существующего PID.
  • тройник - Скопируйте стандартный ввод в каждый указанный файл, а также в стандартный вывод.
  • тестовое задание - Вернуть истину или ложь, выполнив тесты.
  • время - Запустите командную строку и сообщите в секундах реальное, пользовательское и системное время.
  • тайм-аут - Запустить командную строку как дочерний процесс, посылая дочернему процессу сигнал, если команда не завершится достаточно быстро.
  • верх - Показать активность процесса в реальном времени.
  • прикоснуться - Обновите время доступа и изменения каждого ФАЙЛА до текущего времени.
  • правда - Вернуть ноль.
  • обрезать - Установите длину файла (ов), при необходимости увеличивая его немного.
  • tty - Показать имя файла терминала, подключенного к stdin.
  • tunctl - Создание и удаление устройств tun / tap виртуальных сетей Ethernet.
  • ulimit - Распечатать или установить ограничения ресурсов для PID номера процесса.
  • размонтировать - Размонтируйте перечисленные файловые системы.
  • безымянный - Распечатать системную информацию.
  • uniq - Сообщить или отфильтровать повторяющиеся строки в файле
  • unix2dos - Преобразование формата новой строки из unix "" в dos "".
  • разорвать связь - Удалить один файл.
  • не делиться - Создайте новое пространство имен контейнеров для этого процесса и его дочерних процессов, чтобы некоторые атрибуты не использовались совместно с родительским процессом.
  • время безотказной работы - Сообщите текущее время, как долго система работает, количество пользователей и среднюю загрузку системы за последние 1, 5 и 15 минут.
  • ты спишь - Пауза на микросекунды MICROSECONDS.
  • uudecode - Расшифровать файл в кодировке uuencoded.
  • uuencode - Кодировать двоичный файл.
  • uuidgen - Создайте и распечатайте новый случайный UUID RFC4122.
  • vconfig - Создавать и удалять виртуальные устройства Ethernet.
  • vmstat - Распечатать статистику виртуальной памяти.
  • ш - Показать, кто вошел в систему и как долго они вошли в систему.
  • часы - Запускать PROG каждые -n секунд, показывая результат.
  • Туалет - Считайте строки, слова и символы во вводе.
  • который - Искать в $ PATH исполняемые файлы, соответствующие имени (именам).
  • кто - Распечатать информацию о вошедших в систему пользователях.
  • кто я - Распечатать текущее имя пользователя.
  • xargs - Запустите командную строку один или несколько раз, добавляя аргументы из стандартного ввода.
  • xxd - Hexdump файл на стандартный вывод.
  • да - Неоднократно выводить строку, пока не убита.
  • zcat - Распаковать файлы gz в стандартный вывод.

Смотрите также

использованная литература

  1. ^ Toybox выпускается под следующей лицензией BSD с "нулевым условием" Роб Лэндли
  2. ^ а б c Лэндли, Роберт. "Что такое ToyBox?". Сайт проекта Toybox. Получено 13 июля 2012.
  3. ^ а б Dj Walker-Morgan. «Внутри ToyBox: интервью с Робом Лэндли». Получено 13 июля 2012.
  4. ^ а б Варгезе, Сэм (2012-02-01). «Проект замены BusyBox вызывает оживленную словесную ссору». IT провод. Получено 2013-05-12.
  5. ^ а б Android получает коробку с игрушками на lwn.net от Джейк Эдж (14 января 2015 г.)
  6. ^ а б «Проект замены Busybox». 2012-01-11. Получено 2014-03-04.
  7. ^ Лэндли, Роберт. «Дизайн-документы». Сайт проекта Toybox. Получено 18 февраля 2015. Toybox объединяет наиболее распространенные утилиты командной строки Linux в единый исполняемый файл с лицензией BSD. Это простой, компактный, быстрый и достаточно совместимый со стандартами (POSIX-2008 и LSB 4.1).
  8. ^ а б Ящик для игрушек на android.googlesource.com (28 декабря 2014 г.)
  9. ^ celf-2015.txt Роб Лэндли (2015)
  10. ^ Лэндли, Роберт (30 сентября 2006 г.). «Я ухожу сейчас. Может быть, когда-нибудь». занятая коробка (Список рассылки).
  11. ^ Перезапуск Toybox на toybox.landley.narkive.com (2011-11-20)
  12. ^ Переключитесь на лицензию BSD с двумя пунктами (с оговоркой о директории скриптов). 0.2.0 от landley от 15 ноя 2011
  13. ^ Упростите текст лицензии, как указано в списке рассылки. Автор: Лэндли (14 марта 2013 г.)
  14. ^ Ошибка 76861: импорт частей Toybox в Android, включая dos2unix, unix2dos, sort, uniq и usleep.
  15. ^ "Начни использовать готовый ящик для игрушек".
  16. ^ «Гарретт: Непрекращающаяся борьба с принудительным применением GPL». LWN.net. 2012-01-31. Получено 2014-03-04. Настоящая проблема здесь в том, что зависимость [Software Freedom Conservancy] от Busybox означает, что они могут атаковать только нарушителей, которые используют этот код Busybox. До сих пор ни один из значительных правообладателей ядра не предлагал разрешить SFC обеспечивать соблюдение их авторских прав, в результате чего принудительные меры будут прекращены, когда поставщики переходят на замену Busybox.
  17. ^ «Гарретт: Непрекращающаяся борьба с принудительным применением GPL». LWN.net. 2012-01-31. Получено 2014-03-04. > Как бывший сопровождающий Busybox, который первым начал эти судебные процессы, а теперь ОЧЕНЬ Сожалеет об этом, я думаю, что имею право прекратить судебные процессы любым способом, который я считаю нужным. Они так и не привели к добавлению ни одной строчки кода в репозиторий busybox. Они БЫЛИ привели к тому, что более чем одна компания полностью прекратила разработку Linux и перешла на операционные системы, отличные от Linux, для своих встроенных продуктов, и они являются важной частью политики Android «Нет GPL в пространстве пользователя».
  18. ^ Проффитт, Брайан (02.02.2012). «Применение GPL разжигает общественное пламя - выбросить ребенка GPL с водой из ванны принудительного исполнения?». ITworld. Получено 2015-03-04.
  19. ^ Лэндли, Роб. «Конференция по Embedded Linux 2013 - Toybox: написание новой командной строки» (видео). Фонд Linux. Получено 2016-06-24.
  20. ^ Статус коробки с игрушками
  21. ^ Прогресс проекта 0.8.3

внешние ссылки