임베디드디바이스개발시커널로리눅스를많이사용하는데, 그때그커널과함께리눅스명령어도필요하게된다. 모든명령어를지원하기위해서는다수의개별적인패키지들이필요하다. 한프로젝트에서그많은명령어를한번에지원해준다면자원제약적인임베디드환경에서공간효율성이극대화될것이다. 상대적으로경량화된리눅스명령어세

Similar documents
Microsoft PowerPoint - chap01-C언어개요.pptx

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

¿ÀǼҽº°¡À̵å1 -new

강연자소개 대외활동 동호회설립및운영자 (2004 년 12 월설립 ) 운영진 고현철, 김재훈, 유형목, 와함께국내에몇개남지않은임베디드리눅스를전문으로하는 community. 현재가입자수약만 4 천여명

작성자 : 기술지원부 김 삼 수

PowerPoint 프레젠테이션

모바일 안드로이드 아키텍처

Adobe Flash 취약점 분석 (CVE )

SBR-100S User Manual

슬라이드 1

슬라이드 1

PowerPoint 프레젠테이션

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

<4D F736F F D20B1B9B0A1BAB020BEC6C0CCC7C720C2F7B4DC20B0A1C0CCB5E5>

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

JDK이클립스

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

PA for SWE2007

SW

1 SW

망고100 보드로 놀아보자-4

Microsoft PowerPoint - 03-Development-Environment-2.ppt

Microsoft PowerPoint - 김창수 v2.pptx

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint 프레젠테이션

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

리눅스 프로세스 관리

메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

Mango220 Android How to compile and Transfer image to Target

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

PowerPoint 프레젠테이션

DBMS & SQL Server Installation Database Laboratory

Tizen

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결

벤처연구사업(전동휠체어) 평가

슬라이드 1

untitled

소프트웨어 검증 및 설계

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

<3032B0AD202D20B8AEB4AABDBA20BCB3C4A12D556E6978C0CEC5CDB3DDBAB8C3E6C7D0BDC02E687770>

Microsoft PowerPoint UNIX Shell.pptx

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

Chap 5 루트파일시스템 (Root F/S)

Windows 10 General Announcement v1.0-KO

PowerPoint 프레젠테이션

Slide 1

USB 케이블만을이용한리눅스 NFS 개발환경 (VirtualBox) 최초작성 : 2010 년 10 월 21 일 작성자 : 김정현 수정내용 최초작성 by 김정현 스크립트추가, 설명보충 by 유형목 1. VritualBox

Chapter. 5 Embedded System I Bootloader, Kernel, Ramdisk Professor. Jaeheung, Lee

임베디드시스템의개발환경구축사례

Apache Ivy

ADP-2480

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Secure Programming Lecture1 : Introduction

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

PowerPoint 프레젠테이션

Microsoft Word ARM_ver2_0a.docx

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

/chroot/lib/ /chroot/etc/

작성자 : saint Overview BackTrack 는 LILO 를부트로더로사용한다. BactTrack 을기본환경설정그대로설치하면부팅할수없는경우가있는데, 이것은실린더크기가 1024 보다큰하드디스크에설치하면 LILO 가 OS 를정상적으로읽어올수없기때문이다. 요즘나오는

슬라이드 1

Code Generation in Rapid

2. 기능요약 Parallel 빌드지원등빌드자동화기능을지원하며다양한도구 ( 형상관리도구, Issue Tracker, Test 도구, IDE) 와의연동을지원함. 주요기능 Parallel 빌드지원 ( 다수프로젝트동시빌드 ) 분산빌드웹기반관리 알림형상관리도구지원

Unix & Linux 개요 Company 서울대학교통계학과 2010년 2학기컴퓨터의개념및실습 ( Thanks to: cancho & facewhite from SPARC/KAIST, Bruce La Plante fro

Microsoft PowerPoint - comp_prac_081223_2.pptx

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

170918_hjk_datayanolja_v1.0.1.

슬라이드 1

슬라이드 1

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft Word _기술동향분석_우분투_유정목[1]

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

PowerPoint 프레젠테이션

PowerBuilder 2017 New Features 1. Updated software requirements OS Windows XP, Vista 더이상지원하지않음 Windows or 64-bit with SP1 Windows 8.1 Windows Se

슬라이드 1

문서의 제목 나눔고딕B, 54pt

PowerPoint Presentation

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

52 l /08

Microsoft PowerPoint - LN_10_rootFS.ppt [호환 모드]

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

Agenda 오픈소스 트렌드 전망 Red Hat Enterprise Virtualization Red Hat Enterprise Linux OpenStack Platform Open Hybrid Cloud

git CLI 로간단하게조작하기! by 윤선지

PowerPoint 프레젠테이션

C 언어와 프로그래밍 개요

Transcription:

리눅스및안드로이드에서사용되는명령어집합체 Toybox 공개 SW 개발자 Lab 오픈소스프론티어 3 기이창환

임베디드디바이스개발시커널로리눅스를많이사용하는데, 그때그커널과함께리눅스명령어도필요하게된다. 모든명령어를지원하기위해서는다수의개별적인패키지들이필요하다. 한프로젝트에서그많은명령어를한번에지원해준다면자원제약적인임베디드환경에서공간효율성이극대화될것이다. 상대적으로경량화된리눅스명령어세트로 busybox(gpl) 가유명하고, 임베디드업계에서많이사용되고있다. 기능은그보다조금적지만, 좀더자유로운 BSD라이센스를사용하는 Toybox에대해알아보고자한다. [ 목차 ] 1 개요 2 타프로젝트에서도입 3 국내기여자 4 실행해보기 5 저장소 6 사용언어 7 소스코드다운로드및빌드방법 8 패치전달하기 9 외부의존성 10 커뮤니티토론방식 1 개요리눅스배포판에는많은리눅스명령어들이기본으로탑재되어있으며, 대부분의명령어는 GPL 라이센스를따른다. 아주기본이되는명령어들은 GNU 코어유틸리티 (GNU coreutils) 프로젝트에있는명령어 (ls, cp, mkdir 등 ) 들이사용되며, 그외의명령어들의경우각각별도의프로젝트들이진행되고있다. 그러나의존성과바이너리크기등의문제로임베디드환경에서는상대적으로무겁고같이포팅 (porting) 되어야하는이런프로젝트들이많은경우부담스러운것이사실이다. 그래서이런대부분의명령을가볍고간단하게지원하고싶은요구때문에 busybox라는프로젝트가생겨났고유명해졌다. 하지만이프로젝트또한 GPL 라이센스를사용하고있으므로배포시엄격하게소스코드가공개되어야하는의무를지고있다. 그래서비교적최근에시작하는프로젝트의경우도입검토시피하게되는요소이기도했다. 그래서 GPL보다가벼운 BSD라이센스여서소스코드공개가자유로운임베디드용리눅스명령어집합체프로젝트가생기게되었는데, 이것이바로 Toybox프로젝트 (https://landley.net/toybox) 이다.

[ 그림 1] Toybox 프로젝트로고 [ 그림 1] 은프로젝트로고로실제로벽에다콜라캔을 Rob Landley 본인이직접쌓아서찍은것이 다. 코카콜라제로 (0) 와펩시원 (1) 을이진표기로사용하여프로젝트이름인 toybox 의각알파벳을 8bit ASCII 코드로나타냈으며맨아래제로만있는줄은 NULL(0) 처리로표시되었다. 2 타프로젝트에서도입 2006년부터시작한이프로젝트는비교적최근에유명한프로젝트에도입되고있는데, 그대표적인프로젝트가 Android Open Source Project( 이하 AOSP) 와 Tizen이다. 프로젝트에대한통제권을강화하기위해될수있으면 GPL을피하는프로젝트에서많이채택되는추세인데, 구글의경우 Android 프로젝트메이저버전업을할때진행중인모든사항을미리공개하지않고정식릴리즈가된이후에코드를공유한다. 이경우 GPL을사용하는경우라면진행중인경우라도베타버전바이너리를배포할때에도코드가공개되어야하나 GPL을사용하지않는것은공개의무가없으므로소스공개에대해통제를할수있는장점이있어코드공개에대한시기를통제할수있다. 3 국내기여자국내에는이프로젝트에삼성전자엔지니어들이일부참여하고있는데, 그이유는삼성전자가참여하고있는 Tizen 프로젝트가 Toybox를리눅스명령어로채택하고있어국내삼성전자엔지니어들이 Toybox 코드에기여하고있다.

4 실행해보기 안드로이드 6.0 마시멜로버전이후부터이프로젝트가도입되어사용되고있으며, 해당이상버전 의안드로이드단말을가지고있으면이프로젝트명령어를사용해볼수있다. [ 그림 2] AOSP 의 Toybox 저장소페이지 (https://android.googlesource.com/platform/external/toybox) 현재안드로이드 7.0 Nougat 버전에서지원되는 toybox 명령어는 [ 그림 3] 과같다. [ 그림 3] Nexus 9 Android 7.0 Nougat 버전의 ADB shell 에서 toybox 실행결과 Android SDK를설치하면 ADB가설치되는데, ADB shell에서위의명령어를입력하면확인할수있다. 현재만들어진모든명령어가안드로이드에서사용되지않으면, 구글엔지니어인 Elliot Hughes 가하나씩추가해넣고있으며, 안드로이드용개발로드맵도별도로존재한다. Tizen을 OS로사용하는단말인삼성전자의기어시리즈에서도 Android ADB와유사한 SDB를통해해당프로젝트가사용되고있는것을확인할수있다. 일반리눅스머신에서사용해보기위해아래와같이이미빌드된실행파일을가져와서실행해볼

수있다. $ wget https://landley.net/toybox/bin/toybox-x86_64 $ chmod +x toybox-x86_64 $./toybox-x86_64 5 저장소메인테이너인롭랜들리의개인저장소에서 Mercurial로코드가관리되고있다가 Github로저장소를옮기면서현재 git으로코드관리를하고있으며, 그저장소의위치는 https://github.com/landley/toybox.git 이다. 그리고약 1주에서 2주간격으로이저장소에서소스코드를가져와서 AOSP 저장소 (https://android.googlesource.com/platform/external/toybox/) 에구글엔지니어가반영하고있다. 그래서안드로이드에서발견된 Toybox버그패치의경우원저장소에반영해야안드로이드에도같이자연스럽게반영이된다. 6 사용언어 역사와전통을자랑하며 Linux Kernel 의개발언어인 C 프로그래밍언어로만들어져있다. 7 소스코드다운로드및빌드방법 $ git clone https://github.com/landley/toybox.git $ make defconfig $ make $./toybox

[ 그림 4] 디폴트빌드시지원되는 Toybox 명령어 [ 그림 4] 의결과는 defconfig 옵션으로디폴트빌드를할경우빌드된바이너리가지원하는명령어셋인데, 현재안드로이드 7.0 Nougat 버전과조금다름을알수있다. 디폴트빌드를할경우 toys/pending에있는명령어들은빌드가되지않는데, 이것은외부에서전달되고메인테이너가좀더수정이필요하다고판단되는것들을관리하는디렉토리여서디폴트빌드에포함되지않는다. 그래서빌드에러나발생하거나경고가많이나오는것을볼수있다. 빌드에러가발생할경우적절하게빌드오류를수정하여패치도할수있다. $ make allyesconfig 이옵션으로빌드를할경우디폴트빌드와달리 toys/pending에있는명령어까지모두포함해서빌드가가능하다. 만약새로운명령어를넣어서빌드를할경우이 pending 디렉토리에넣고빌드해서소스코드를넘기고나중에메인테이너가완성도가높다고판단되면적절한디렉토리로옮겨서관리된다. [ 그림 5] 는위의디폴트빌드에포함된명령어뿐만아니라 toys/example, toys/pending에포함된명령어까지빌드된결과이다.

[ 그림 5] 전체빌드시지원되는 Toybox 명령어 $ make distclean 빌드로인해생긴오브젝트파일들을없애주는옵션이다. 이전빌드시생성된파일들이다음빌드 에영향을주는경우가많이발생하니빌드전에항상클린후에빌드하는것이좋다. 8 패치전달하기만약에러가발견되거나문서작업등으로인해수정내역을보내기위해서는 Github의 Pull Request를보내어반영을요청하여반영될수도있으나, 공식적으로는패치파일을메일로보내는것으로명시하고있다. 패치파일을만드는방법은아래와같다. $ git format-patch -1 $HASH 위 -1은커밋수를지정하는것인데만약 2개이상의커밋을보내야할경우라면각각의파일로패치파일을만들어보내는것을권장한다. 그리고 $HASH는커밋해쉬값을넣어주면된다. 9 외부의존성 이프로젝트는다른프로젝트의의존성을완전히없애고자노력을하고있지만, 일반적인기능지원 을위해외부라이브러리를쓰는경우가발생하고있다. md5sum 명령이나 wget 의 HTTPS 기능을

지원하기위해암호화기능과관련해서 openssl 을가져다쓰고있는데, 이것을직접프로젝트내에 서구현하여사용하려면많은시간과노력이들기때문에직접구현하지않고사용하고있다. 10 커뮤니티토론방식 [ 그림 6] 메일저장소 아주구시대적이기는하나메일링리스트와 IRC를통해의견교환과커뮤니티소통을하고있다. 사실 Github가이런기능들을아주손쉽게제공해주고있으나메인테이너가잘활용하지않아사용되지않는다. [ 그림 6] Github 이슈에글을작성할경우메인테이터가메일링리스트로공유하고답변도메일링리스트와 Github를통해응답한다.