토이박스

Toybox
토이박스
원저작자로버트 랜들리
개발자로버트 랜들리 외
초기 릴리즈2006년, 16년 전(2006년)
안정된 릴리스
0.8.7 / 2022년 5월 6일, 3개월 전(2022-05-06)
저장소
기입처C
운영 체제Unix와 같은
크기3.30 MB (아카이브)
유형독립 SUSP XCU 구현
면허증.0BSD[1][2]
웹 사이트www.landley.net/toybox

Toybox는 ls, cp mv와 같은 200개가 넘는 Unix 명령줄 유틸리티의 무료 오픈 소스 소프트웨어 구현입니다.Toybox 프로젝트는 [3]2006년에 시작되어 0BSD 라이선스를 취득한 BusyBox의 [4][5]대안이 되었습니다.Toybox는 현재 지원되는 모든 Android 버전에서 대부분의 Android 명령줄 도구에 사용되며 Linux 및 MacOS에서 Android를 구축하는 데에도 사용됩니다.모든 툴은 Linux에서 테스트되며, BSD 및 MacOS에서도 동작합니다.

기능과 목적

Toybox는 GPL 라이선스가 부여된 BusyBox에 [6]BSD 라이선스가 부여된 대체품을 제공하는 것을 목표로 하고 있습니다.Toybox의 주요 기술 설계 목표는 단순성, 소형성,[7] 속도 및 표준 컴플라이언스입니다.Toybox는 대부분 POSIX-2008과 LSB 4.1 호환성을 목표로 하고 있으며, GNU에 [3]있는 모든 옵션을 갖추는 데 중점을 두고 있지 않다.

Toybox는 허용 0BSD 라이센스를 사용하여 라이센스가 부여되며, BusyBox는 카피레프트 GNU General Public License를 사용하므로 사용 도메인이 다릅니다.BusyBox는 주로 카피레프트 FOSS 도메인에서 사용되며, Toybox는 [9]Toybox의 명시적인 타깃인 Google의 [8]Android와 같은 상업적인 회사 및 허가된 프로젝트에 주로 사용됩니다.기능면에서 Toybox는 BusyBox와 동등하지 않습니다.

역사

토이박스는 2006년 초 롭 랜들리가[3][5] BusyBox의 [10]창시자인 Bruce Perens와의 분쟁으로 BusyBox 유지보수를 그만둔 후 시작되었다.2008년에 그 프로젝트는 [4]휴면 상태가 되었다.2011년 말 소니 직원 Tim Bird는 Busy [6]Box에 대한 허가된 대체 라이선스를 만들 것을 제안했습니다.Rob Landley는 이 목표에 동의하고 GPL-2.0 전용 라이선스에서 BSD-2-Clause [11][12]라이선스로 리센스하는 것을 시작으로 Toybox 작업을 재개했다.2013년 3월에 이 프로젝트는 훨씬 더 허용도가 높은 0BSD [13]라이선스로 유증되었습니다.

2014년 말,[14][8][15] Toybox는 기기에서 사용하기 위해 Android 6.0.x "Marshmallow" 개발 지사에 통합되었습니다.2018년, 사전 구축된 호스트 Toybox가 AOSP에 추가되어 Android의 자체 구축이 더욱 [16]정교해졌습니다.

논란

2012년 1월 GPL 라이선스를 취득한 BusyBox 프로젝트 대신 BSD 라이선스를 만들자는 제안은 Matthew Garrett으로부터 소프트웨어 프리덤 보수 그룹[17]저작권 집행에 관련된 유일한 도구를 빼앗았다는 혹독한 비판을 받았습니다.BusyBox에 기반을 둔 소송을 시작한 Rob Landley는 이 소송이 프로젝트에 도움이 되지 않았지만 기업 회피를 초래했다고 설명하면서 "내가 보기에 어떤 방식으로든 소송을 중단하고 싶다"[18][19][20]고 말했다.

프로젝트 진행 상황

공식 Toybox 설명서에는 사용 가능한 명령,[21] 부분적으로 사용 가능한 명령 및 누락된 명령의 개요가 나열되어 있습니다.2021년 11월 현재 버전 0.8.6은 1.0을 [22]목표로 하는 프로젝트 구현 목표의 약 80%를 달성하고 있습니다.

Toybox 명령어 목록
  • acpi : 전원 및 서멀디바이스의 상태를 표시합니다.
  • adduser, addgroup : 사용자 또는 그룹을 시스템에 추가합니다.
  • ar : 아카이브에서 작성, 변경 및 추출합니다.
  • arch : uname -m 와 같은 인쇄 머신(하드웨어) 이름.
  • arp : Address Resolution Protocol(ARP)
  • arping : ARP REQUEST를 네이버호스트에 송신합니다.
  • ascii : ASCII 문자 세트를 표시합니다.
  • at : 나중에 명령을 실행합니다.
  • awk : 패턴 스캔 및 처리 언어.
  • base32 : base32로 인코딩 또는 디코딩합니다.
  • base64 : base64로 인코딩 또는 디코딩합니다.
  • basename : 패스명을 삭제하고 있는 디렉토리 이외의 부분을 반환합니다.
  • bc : 임의의 정밀도 연산 언어.
  • blkdiscard : 디바이스 섹터를 폐기합니다.
  • blkid : 블록디바이스 또는 이미지상의 파일시스템의 유형, 라벨 및 UUID 를 인쇄합니다.
  • blockdev : 리스트 되어 있는 각 블록디바이스상의 ioctls 를 호출합니다.
  • bunzip2 : bzip2 파일을 압축 해제합니다.
  • bzcat : bzip2 파일을 stdout으로 압축 해제합니다.
  • cal : 캘린더를 인쇄합니다.
  • cat : 파일을 stdout에 복사(연결)합니다.
  • catv : 출력되지 않은 문자를 이스케이프 시퀀스로 표시합니다.
  • cd : 작업 디렉토리를 변경합니다.
  • chattr : Linux 파일시스템상의 파일 속성을 변경합니다.
  • chgrp : 1개 또는 여러 파일의 그룹을 변경합니다.
  • chmod : 표시된 파일의 모드를 변경합니다.
  • chown : 1개 또는 여러 파일의 소유자를 변경합니다.
  • chroot : 새 루트 디렉토리 내에서 명령을 실행합니다.
  • chrt - 프로세스의 실시간 스케줄링 정책과 우선순위를 가져오거나 설정합니다.
  • chsh : 로그인 셸을 변경합니다.
  • chvt : 가상 단말 번호N으로 변경합니다.
  • cksum : 각 파일에 대해 crc32 체크섬 값, 길이 및 파일 이름을 출력합니다.
  • clear : 화면을 클리어합니다.
  • cmp : 2개의 파일의 내용을 비교합니다.
  • comm : 2개의 파일에 공통되는 행을 선택하거나 거부합니다.
  • count : stdin을 stdout에 복사하고 stderr에 간단한 진행률 표시기를 표시합니다.
  • cp : 파일을 복사합니다.
  • cpio - "newc" 형식의 cpio 아카이브에 파일을 복사하거나 파일을 복사합니다.
  • crc32 : 각 파일의 crc32 체크섬을 출력합니다.
  • cut : 각 FILE에서 선택한 행 부분을 표준 출력으로 출력합니다.
  • dd : 파일을 변환 및 복사합니다.
  • date : 현재 날짜/시간을 설정/취득합니다.
  • devmem : /dev/mem을 통한 물리 주소 읽기/쓰기.
  • df : 명령줄에 나열된 각 파일 시스템 또는 현재 마운트된 모든 파일 시스템의 총 디스크 용량/사용 가능 디스크 용량을 표시합니다.
  • diff - 두 파일을 비교합니다.
  • dirname : 경로의 디렉토리 부분을 표시합니다.
  • dmesg : 커널링 버퍼를 인쇄 또는 제어합니다.
  • dnsdomainname : 이 시스템이 속한 도메인을 표시합니다(호스트명 -d 와 동일).
  • dos2unix : 줄바꿈 형식을 dos "\r\n"에서 unix "\n"로 변환합니다.
  • du : 디스크 사용률, 파일 및 디렉토리에서 사용된 공간을 표시합니다.
  • echo : 각 인수를 stdout에 1개의 공백으로 쓰고 그 뒤에 새 행을 입력합니다.
  • egrep : 확장 정규 표현과 일치하는 행을 표시합니다.
  • eject : DEVICE 또는 기본 /dev/cdrom을 꺼냅니다.
  • env : 명령어 호출 환경을 설정하거나 환경 변수를 나열합니다.
  • expand : 탭스톱에 따라 탭을 공백으로 펼칩니다.
  • factor : 계수 정수.
  • fallocate : 파일시스템에 파일 공간을 할당하도록 지시합니다.
  • false : 0이 아닌 값을 반환합니다.
  • fdisk : 디스크 파티션테이블을 조작합니다.
  • fgrep : 정규 표현과 일치하는 행을 표시합니다.
  • file : 지정된 파일을 조사하고 해당 콘텐츠유형을 설명합니다.
  • find : 디렉토리에서 일치하는 파일을 검색합니다.
  • flock : 어드바이저리 파일 잠금을 관리합니다.
  • fold : 폴딩 라인의 필터.
  • fmt : 지정된 행 길이로 입력을 워드랩으로 다시 포맷하여 기존 들여쓰기 수준을 유지하고 stdout에 씁니다.
  • free : 물리 메모리와 스왑 영역의 총 용량, 빈 용량 및 사용된 용량을 표시합니다.
  • freeramdisk : 지정된 ramdisk에 할당된 모든 메모리를 해방합니다.
  • fsfreeze :파일 시스템을 프리즈 또는 프리즈 해제합니다.
  • fstype : 블록 디바이스 또는 이미지상의 파일시스템 인쇄 타입.
  • fsync - 파일의 코어 내 상태를 스토리지 디바이스와 동기화합니다.
  • ftpget : FTP 서버에서 파일을 가져오려면 File Transfer Protocol(FTP)을 사용합니다.
  • ftpput :FTP 를 사용하여 파일을 FTP 서버에 저장합니다.
  • getconf : 시스템 설정 값을 가져옵니다.
  • grep : 정규 표현과 일치하는 행을 표시합니다.
  • groups : 사용자가 속한 그룹을 인쇄합니다.
  • gunzip : gz 파일을 압축 해제합니다.
  • halt : 시스템을 재시작, 정지 또는 전원 절단합니다.
  • head : 파일에서 stdout으로 첫 행을 복사합니다.
  • help : toybox 명령어 사용방법 정보를 보여줍니다.
  • hexedit : 16진수 파일 에디터
  • hostname : 현재 호스트 이름을 가져오거나 설정합니다.
  • hwclock : 하드웨어 클럭을 가져오거나 설정합니다.
  • i2cdetect : i2c 디바이스를 검출합니다.
  • i2cdump : i2c 레지스터를 덤프합니다.
  • i2cget : i2c 레지스터를 읽습니다.
  • i2cset : i2c 레지스터를 씁니다.
  • iconv : 파일의 문자 인코딩을 변환합니다.
  • id : 사용자 및 그룹 ID 를 인쇄합니다.
  • ifconfig : 네트워크인터페이스를 표시 또는 설정합니다.
  • inotifyd : 파일시스템이벤트가 발생했을 때 프로그램을 실행합니다.
  • insmod : 지정된 경우 모듈 패싱 옵션을 로드합니다.
  • install : 파일을 복사하여 속성을 설정합니다.
  • ionice : 프로세스의 I/O 스케줄링 우선순위를 변경합니다.
  • iorenice - 기존 프로세스의 I/O 우선순위를 표시하거나 변경합니다.
  • iotop : I/O별로 프로세스의 순위를 매깁니다.
  • kill : 처리할 신호를 보냅니다.
  • killall : 지정된 이름의 모든 프로세스에 신호(기본값: TERM)를 보냅니다.
  • killall5 : 현재 세션 이외의 모든 프로세스에 신호를 보냅니다.
  • less - more와 반대
  • link : 파일에 대한 하드링크를 만듭니다.
  • ln : FROM과 TO 사이의 링크를 만듭니다.
  • logger : syslog에 메시지(또는 stdin)를 기록합니다.
  • login : 사용자로 로그인하고 필요에 따라 사용자 이름과 비밀번호를 입력하도록 요구합니다.
  • logname : 현재 사용자 이름을 인쇄합니다.
  • losetup : 루프백디바이스와 파일을 관련짓거나 루프디바이스와 관련된 현재 파일(있는 경우)을 표시합니다.
  • ls : 파일을 나열합니다.
  • lsattr : Linux 파일시스템상의 파일아트리뷰트를 일람표시합니다.
  • lsmod : 현재 로드된 모듈, 모듈 크기 및 의존관계를 표시합니다.
  • lspci : PCI 디바이스를 나열합니다.
  • lsusb : USB 호스트 또는 디바이스를 나열합니다.
  • makedevs : 디바이스 테이블에서 지정된 특정 파일 범위를 만듭니다.
  • mcookie : 128비트의 강력한 난수를 생성합니다.
  • md5sum : 각 입력 파일에 대해 md5 해시를 계산합니다.없을 경우 stdin에서 읽습니다.
  • microcom : 심플한 시리얼콘솔
  • mix : OSS 사운드채널(module snd-mixer-oss) 또는 볼륨을 설정합니다.
  • mkdir : 1개 이상의 디렉토리를 만듭니다.
  • mkfifo : FIFO(네임드 파이프)를 만듭니다.
  • mknod : 특정 유형의 특수 파일 NAME을 만듭니다.
  • mkpasswd : crypt(3)를 사용하여 암호 해독.
  • mkswap : 디바이스 또는 파일에 Linux 스왑 영역을 설정합니다.
  • mktemp : 새 파일 "DIR/TEMPLATE"를 안전하게 만들고 이름을 인쇄합니다.
  • modinfo : 이름 또는 .ko 경로로 지정된 모듈의 모듈필드를 표시합니다.
  • mount : 디렉토리에 새 파일시스템을 마운트합니다.
  • mountpoint : 디렉토리 또는 디바이스가 마운트포인트인지 확인합니다.
  • mv : 파일을 이동합니다.
  • nbd-client : NBD 서버에 접속합니다.
  • nc/netcat : stdin/stdout을 파일 또는 네트워크 연결로 전송합니다.
  • netstat : 네트워킹 정보를 표시합니다.
  • nice : 스케줄링 priority를 높이거나 낮춘 상태에서 명령줄을 실행합니다.
  • nl : 입력 행 수.
  • nohup : 단말기에서 살아남는 명령어를 실행합니다.
  • nproc : 프로세서의 수를 인쇄합니다.
  • nsenter : 기존(세트) 네임스페이스에서 COMMAND를 실행합니다.
  • od : 데이터를 8진수/16진수로 덤프합니다.
  • oneit : 1개의 명령줄을 실행하는 단순한 init 프로그램
  • partprobe : 파티션테이블 변경에 대해 커널에 알립니다.
  • passwd : 사용자의 인증 토큰을 업데이트합니다.
  • paste : 각 입력 파일에서 대응하는 행을 Marge합니다.
  • patch : 하나 이상의 파일에 통합 diff를 적용합니다.
  • pgrep : 프로세스를 검색합니다.
  • pidof : 지정된 이름의 모든 프로세스의 PID를 인쇄합니다.
  • ping : 호스트에 패킷을 전송하고 응답을 보고하여 네트워크 연결을 확인합니다.
  • 피벗 루트: OLD 파일 시스템과 NEW 파일 시스템을 (동시 마운트하듯이) 스왑하여 OLD 아래에 chdir 또는 chroot가 있는 모든 프로세스를 (커널 스레드 포함) NEW로 이동합니다.
  • pkill : 이름 및 기타 프로세스에 기반한 검색 또는 시그널링 프로세스
  • pmap : 프로세스의 메모리 맵을 보고합니다.
  • power off : 시스템을 재시작, 정지 또는 전원 절단합니다.
  • printenv : 인쇄 환경 변수.
  • printf : C printf 구문을 사용하여 FORMAT에 따라 인수를 포맷 및 인쇄합니다.
  • prlimit : 프로세스 번호 PID 자원 제한을 인쇄 또는 설정합니다.
  • ps : 프로세스를 나열합니다.
  • pwd : 작업(현재) 디렉토리를 인쇄합니다.
  • pwdx : 명령줄에 나열된 프로세스의 작업 디렉토리를 인쇄합니다.
  • readahead : 디스크캐시에 파일을 프리로드 합니다.
  • readlink : 심볼링크가 가리키는 대상을 표시합니다.
  • realpath : 표준 절대 경로 이름을 표시합니다.
  • reboot : 시스템을 재시작, 정지 또는 전원 절단합니다.
  • renice : 실행 중인 프로세스의 적절한 값을 설정합니다.
  • reset : 단말기를 리셋합니다.
  • rev : stdin 파일이 지정되지 않은 경우 각 행을 반대로 출력합니다.
  • rfkill : 무선 디바이스를 활성화/비활성화합니다.
  • rm : 각 인수를 파일시스템에서 삭제합니다.
  • rmdir : 1개 이상의 디렉토리를 삭제합니다.
  • rmmod : Linux 커널에서 모듈이라는 이름의 모듈을 언로드합니다.
  • rtcwake : 지정된 시간까지 지정된 sleep 상태로 들어갑니다.
  • sed : 스트림에디터
  • seq : 첫 번째부터 마지막까지 증분 단위로 카운트합니다.
  • setfattr : POSIX 확장 애트리뷰트를 씁니다.
  • setsid : 새 세션에서 프로세스를 실행합니다.
  • sha1sum : 입력 파일별로 sha 해시를 계산합니다.입력 파일이 없는 경우 stdin에서 읽습니다.
  • shred : 파일의 내용을 랜덤 데이터로 덮어쓰기하여 파일을 안전하게 삭제합니다.
  • sleep : 종료할 때까지 기다립니다.
  • sntp : Simple Network Time Protocol 클라이언트.
  • sort : 입력 파일(또는 stdin)에서 stdout까지의 모든 텍스트 행을 정렬합니다.
  • split : 입력(또는 stdin) 데이터를 알파벳 순으로 증가된 서픽스(aa, ab, ac... az, ba, bb...)를 사용하여 일련의 OUTPUT(또는 "x") 파일에 복사합니다.
  • stat : 파일 또는 파일시스템의 상태를 표시합니다.
  • strings : 바이너리 파일의 인쇄 가능한 문자열을 표시합니다.
  • su : root로 실행되지 않은 경우 새 사용자의 비밀번호를 입력하도록 사용자를 전환합니다.
  • swapoff : 특정 스왑 지역에서의 스와핑을 디세블로 합니다.
  • swapon : 특정 디바이스 또는 파일에서 스와핑을 이노블로 합니다.
  • switch root :initramfs 아래의 PID 1부터 사용하여 initramfs를 해방하고 chroot를 NEW_ROOT로 하여 NEW_INIT를 실행합니다.
  • sync : 보류 중인 캐시 데이터를 디스크에 쓰기(동기화)하여 완료될 때까지 차단합니다.
  • sysctl : 시스템 제어 데이터 읽기/쓰기(/proc/sys 아래).
  • tac : 출력 행이 역순으로 표시됩니다.
  • tail : 파일에서 stdout으로 마지막 행을 복사합니다.
  • tar : .tar(또는 압축 t?z) 파일로 파일을 작성, 추출 또는 나열합니다.
  • taskset : 특정 프로세서에서만 실행할 수 있는 새로운 작업을 시작하거나 기존 PID의 프로세서어피니티를 변경합니다.
  • tee : stdin을 목록된 각 파일 및 stdout에 복사합니다.
  • test : 테스트를 수행하여 true 또는 false를 반환합니다.
  • time : 명령줄을 실행하여 실제, 사용자 및 시스템 경과시간을 초단위로 보고합니다.
  • timeout : 명령줄을 자녀 프로세스로 실행하여 명령어가 즉시 종료되지 않으면 자녀에게 신호를 보냅니다.
  • top : 프로세스 액티비티를 실시간으로 표시합니다.
  • touch : 각 파일의 접근 및 변경 시간을 현재 시간으로 업데이트합니다.
  • true : 0을 반환합니다.
  • truncate : 파일 길이를 설정합니다.필요에 따라서, 드문드문 확장합니다.
  • tty : stdin에 연결된 단말기의 파일 이름을 표시합니다.
  • tunctl : tun/tap 가상 이더넷디바이스를 작성 및 삭제합니다.
  • ulimit : 프로세스 번호 PID 자원 제한을 인쇄 또는 설정합니다.
  • umount : 표시된 파일시스템을 마운트 해제합니다.
  • uname : 시스템 정보를 인쇄합니다.
  • unicode : 유니버설문자 세트
  • uniq : 파일에서 반복되는 행을 보고 또는 필터링합니다.
  • unix2dos : 줄바꿈 형식을 unix "\n"에서 dos "\r\n"로 변환합니다.
  • unlink : 1개의 파일을 삭제합니다.
  • unshare : 이 프로세스와 그 하위 프로세스에 대해 새로운 컨테이너 이름 공간을 만듭니다.이것에 의해, 일부의 어트리뷰트가 부모 프로세스와 공유되지 않게 됩니다.
  • uptime : 과거 1, 5, 15분 동안의 현재 시간, 시스템 가동 시간, 사용자 수 및 시스템 부하 평균을 나타냅니다.
  • usleep : MICROSEConds 마이크로초 동안 일시정지합니다.
  • uudecode :uuuencoded 파일을 디코딩합니다.
  • uuencode : 바이너리 파일을 인코딩합니다.
  • uuidgen : 새로운 RFC4122 랜덤 UUID를 생성하여 인쇄합니다.
  • vconfig : 가상 이더넷디바이스를 작성 및 삭제합니다.
  • vmstat : 가상 메모리 통계 정보를 출력합니다.
  • w : 로그인 사용자 및 로그인 시간을 표시합니다.
  • watch : -n초마다 PROG를 실행하여 출력을 표시합니다.
  • wc : 입력되는 행, 단어 및 문자를 카운트합니다.
  • which : $PATH에서 파일 이름과 일치하는 실행 파일을 검색합니다.
  • watchdog : 소프트웨어 워치독데몬
  • who : 로그인한 사용자에 대한 정보를 출력합니다.
  • woami : 현재 사용자 이름을 인쇄합니다.
  • xargs : 명령줄을 1회 이상 실행하여 stdin 인수를 추가합니다.
  • xxd : stdout에 파일을 16진수 덤프합니다.
  • yes : 종료될 때까지 반복적으로 출력됩니다.
  • zcat : gz 파일을 stdout으로 압축 해제합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Toybox는 Rob Landley에 의해 다음과 같은 "제로 조항" BSD 라이선스로 출시됩니다.
  2. ^ "Simplify license text, as mentioned on the mailing list". 2013-03-14. Retrieved 2021-06-29.
  3. ^ a b c Landley, Robert. "What is ToyBox?". Toybox project website. Retrieved 13 July 2012.
  4. ^ a b Dj Walker-Morgan. "Inside the ToyBox: An interview with Rob Landley". Retrieved 13 July 2012.
  5. ^ a b Varghese, Sam (2012-02-01). "BusyBox replacement project fuels animated verbal spat". IT Wire. Retrieved 2013-05-12.
  6. ^ a b "Busybox replacement project". 2012-01-11. Retrieved 2014-03-04.
  7. ^ Landley, Robert. "Design Docs". Toybox project website. Retrieved 18 February 2015. Toybox combines the most common Linux command line utilities together into a single BSD-licensed executable. It's simple, small, fast, and reasonably standards-compliant (POSIX-2008 and LSB 4.1).
  8. ^ a b android.googlesource.com의 장난감 상자(2014-12-28)
  9. ^ celf-2015.txt by Rob Landley (2015)
  10. ^ Landley, Robert (2006-09-30). "I'm going out now. I may be some time". busybox (Mailing list).
  11. ^ Toybox는 toybox.landley.narkive.com에서 재출시(2011-11-20)
  12. ^ 2절 BSD 라이선스로 전환합니다(스크립트 디렉토리에 관한 주의사항 포함). 2011년 11월 15일 랜들리 기준 0.2.0
  13. ^ 메일링 리스트에 기재되어 있는 라이센스 텍스트의 심플화.by Landley (2013년 3월 14일)
  14. ^ Androidlwn.net에서 Jake Edge의 장난감 상자를 입수(2015년 1월 14일)
  15. ^ 76861호: Dos2unix, unix2dos, sort, uniq 및 ussleep을 포함한 Toybox의 일부를 Android로 Import합니다.
  16. ^ "Start using the toybox prebuilt".
  17. ^ "Garrett: The ongoing fight against GPL enforcement". LWN.net. 2012-01-31. Retrieved 2014-03-04. The real problem here is that the [Software Freedom Conservancy's] reliance on Busybox means that they're only able to target infringers who use that Busybox code. No significant kernel copyright holders have so far offered to allow the SFC to enforce their copyrights, with the result that enforcement action will grind to a halt as vendors move over to this Busybox replacement.
  18. ^ "Garrett: The ongoing fight against GPL enforcement". LWN.net. 2012-01-31. Retrieved 2014-03-04. >As the ex-maintainer of busybox who STARTED those lawsuits in the first place and now HUGELY REGRETS ever having done so, I think I'm entitled to stop the lawsuits in whatever way I see fit. They never resulted in a single line of code added to the busybox repository. They HAVE resulted in more than one company exiting Linux development entirely and switching to non-Linux operating systems for their embedded products, and they're a big part of the reason behind Android's "No GPL in userspace" policy.
  19. ^ Proffitt, Brian (2012-02-02). "GPL enforcement sparks community flames - Throwing the GPL baby out with the enforcement bath water?". ITworld. Retrieved 2015-03-04.
  20. ^ Landley, Rob. "Embedded Linux Conference 2013 - Toybox: Writing a New Command Line" (video). The Linux Foundation. Archived from the original on 2021-12-21. Retrieved 2016-06-24.
  21. ^ 장난감 상자 상태
  22. ^ 0.8.7 프로젝트 진행 상황

외부 링크