본문 바로가기

IT/Toybox

Toybox 오픈소스 프로젝트 소개

/* 
written by kaspy (kaspyx@gmail.com)
*/ 


toybox 공식 홈페이지 : http://www.landley.net/toybox/

프로그래머라면 누구나 한번쯤 관심가져볼만한(?)것이 바로 오픈소스 프로젝트에 참여하는거 아닐까요??ㅎㅎ
개발이 그리 많이되지않았고, 아직 그렇게 많이 알려지지않은 오픈소스 프로젝트가 있는데 하나 소개할까 합니다.

toybox는 리눅스 명령어를 모아둔 유틸리티로써 무료로 배포되는 오픈소스 프로젝트입니다. 2006년부터 개발이 시작되었고 Robert Landley(이하 Rob)에 의해서 유지보수 되고 있습니다. 비슷한 프로젝트로는 busybox나 toolbox 등이 있겠네요.


참고로 

Rob은 busybox 프로젝트 참여 멤버로서 있다가 따로 나와서 toybox 오픈소스를 만들었다고 하네요~


* toybox와 busybox의 다른점


 둘다 리눅스 명령어를 탑재한 유틸리티 오픈소스 프로젝트라는 것과 목적은 같지만 toybox는 BSD 라이선스를 사용하고 있지만 busybox는 GPL2 라이선스를 사용하고 있다는 점에서 조금 다릅니다.(그리고 busybox가 구현된 명령어가 훨씬 많습니다.)

라이선스 때문에 무슨 차이가 발생할수 있냐면 일반적으로 busybox나 toybox는 리눅스 운영체제를 탑재한 임베디드 환경에서 작동을 하는데(예를들어 스마트폰, TV, 냉장고 등등) 만약 busybox와같은 GPL2 라이선스를 사용하여 임베디드 환경에서 개발을 하게되면 busybox의 소스코드를 참고하여 만든 산출물은 모두 GPL2로 묶이게 된다는거죠. 그래서 제품을 출시할때에도 제품 가이드 문서등에 이 제품은 busybox 유틸을 사용하였다는 고지문과 함께 관련 소스코드도 반드시 공개를 해야한다는 원칙을 가지게 됩니다.

그러나 toybox는 조금 다른 BSD 라이선스를 사용하고 있는데, 이 라이선스는 소스코드를 사용하게되도 그냥 toybox 소스코드를 썻다는 고지문 하나만 제품 가이드 문서에 고지하면 되는것입니다.

만약 오픈소스 라이선스에 대한 준수사항을 지키지 않으면 위반에 해당되어 법적으로 소송을 받을수도 있습니다.


* toybox 특징

- 디자인 및 목적

 toybox는 심플함과 경량화 그리고 빠른 속도 그리고 모든 명령어 지원을 추구합니다.

 명령어 구현 및 속도 그리고 사이즈의 경량화의 추진의 최적화를 목표로 개발 중입니다.

 명령어 구현 roadmap은 여기를 클릭해주세요

 

- 이식성 문제

리눅스 운영체제 계열에서 작동함

32bit/64bit 지원

Unsigned char 기본 문자

문자열 처리는 UTF8로 하는것이 최종목표


바이너리 다운로드 

http://www.landley.net/toybox/bin/


나는 리눅스용 x86/64bit 바이너리를 다운받았습니다.


현재 toybox에서 지원하는 명령어는 아래와 같습니다.


acpi base64 basename blkid blockdev bzcat cal cat catv chattr chgrp

chmod chown chroot chvt cksum clear cmp comm count cp cpio cut date

df dirname dmesg dos2unix du echo egrep eject env expand factor false

fgrep find free freeramdisk fsfreeze fstype grep groups halt head

help hexedit hostname hwclock id ifconfig inotifyd insmod install

ionice iorenice kill killall killall5 link ln login logname losetup

ls lsattr lsmod lspci lsusb makedevs md5sum mix mkdir mkfifo mknod

mkpasswd mkswap mktemp modinfo mount mountpoint mv nbd-client nc netcat

nice nl nohup nproc nsenter od oneit partprobe passwd paste patch

pidof pivot_root pmap poweroff printenv printf pwd pwdx readahead

readlink realpath reboot renice reset rev rfkill rm rmdir rmmod sed

seq setsid sha1sum shred sleep sort split stat strings su swapoff

swapon switch_root sync sysctl tac tail taskset tee time timeout touch

true truncate tty umount uname uniq unix2dos unlink unshare uptime

usleep uudecode uuencode vconfig vmstat w wc which who whoami xargs

xxd yes


분명 busybox의 명령어에 비해 없거나 부족한 기능이 많을수 있겠지만 라이선스도 자유롭고 busybox만의 무거움을 탈출하고 싶다면 toybox를 사용해도 좋을것이라고 생각합니다.ㅋ



'IT > Toybox' 카테고리의 다른 글

Toybox - strings contribution  (0) 2017.04.01
Toybox 오픈소스 프로젝트 참여하기 -2  (0) 2015.11.27
Toybox 오픈소스 프로젝트 참여하기 -1  (0) 2015.10.22