CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·방탄소년당 ·일본산당 ·자전거당 ·개발한당 ·이륜차당 ·AI당 ·안드로메당 ·소시당 ·콘솔한당 ·골프당 ·소셜게임한당 ·걸그룹당 ·나스당 ·키보드당 ·퐁당퐁당 ·노젓는당 ·곰돌이당 ·갖고다닌당 ·육아당 ·위스키당 ·디아블로당 ·클다방 ·바다건너당 ·라즈베리파이당 ·찰칵찍당 ·PC튜닝한당 ·IoT당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·물고기당 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·가상화폐당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

사용기

서비스/SW Yocto Linux 사용기 38

12
2020-08-04 20:09:50 125.♡.199.131
NeverEnd

시간이 좀 오래 지나긴 했지만, 간간히 yocto 관련글이 있어서, 다른 분들에게 조금이나 도움이 될까봐 사용기를 남깁니다.


우선 yocto를 사용하게된 계기는 예전 회사에서 임베디드 디바이스 제품을 개발하는데, os를 리눅스를 올리는 것으로 결정을 하게 되었는데,  반대는 했지만 어른들의 사정으로 yocto개발을 진행하게 되었습니다.


우선 저희가 yocto를 반대 했던 이유는 방대한 레시피 파일과 자유로운 커스터마이징이 가장 마음에 걸렸고, 방대한 레시피에 의해서, 부차적으로 발생 할 수 밖에 없는 학습시간은 도저히 견적이 불가능 할 정도 였습니다.


어쨌든 업무는 진행을 해야 했고, 상황은 이상하게 돌아갔지만, 개발은 했습니다.


처음 yocto를 접했을때 느낀게 몇가지가 있는데, 그중에 첫번째가 거대하다 입니다.

현존하는 모든 opensource 프로젝트는 모두 포팅되어있다 라고 느낄정도로, 제가 알고 있는 거의 대부분의 opensource는 레시피로 만들어져 있습니다. 이게 장점이기도 하고, 단점이기도 한데, 장점은 buildroot나 ltib에서 처럼 뭐 하나 포팅하는데 삽질하는게 별로 없습니다. 그냥 레시피 딴거 참조해서 넣으면 됩니다. 단점은 이 모든 package들을 누군가는 다 파악해야 됩니다.


두번째는 빌드 시간이 무지막지 합니다. 엄밀히 말하면, 빌드 시간보다는 source package를 다운 받는 시간이 더 걸리기는 했지만, yocto 프로젝트는 linux 이미지를 빌드 하기위한 레시피를 제공하는 것이 아니므로, 각각의 개별 package를 각각의 repository에서 다운받는 구조로 되어 있어서, 이 시간이 재수 없으면 하루 넘게 걸릴 수도 있고, 미러에서도 못 받는 경우도 생겨, 빌드가 불 가능한 상황을 맞이 하는 경우도 있습니다.


세번째는 BSP 또는 테크리더의 역할이 매우 중요합니다. 다를 개발도 마찬가지 겠지만, yocto 개발에서 BSP의 역할이 매우 중요했습니다. 즉, 커널을 포팅하고 보드의 눈을 띄우는 작업 뿐만이 아니라, 전체 빌드 프로세스는 어떻게 잡을 것인지, SDK를 어떻게 배포 할 것인지, 배포된 SDK를 이용하여 application 담당자들은 어떤 방식으로 개발하고 디버깅 해야 하는지 가이드를 해줘야 합니다.


여러가지 고민도 하고, 삽질도 하면서, 개발 방법을 세우고, 개발을 진행 했습니다.

우선 CI서버와 연동시키는 상황에서, build os의 버전 특성을 타고 있어서, 빌드 환경은 docker에 밀어넣고 build host가 바뀌더라도 영향을 받지 않도록 하고, CI 서버에서 매일 새벽에 daily build를 진행 했습니다. sdk를 얼마나 자주 배포 할 것인가의 고민도 잠깐 있었지만, 어차피 application 별로 의존성이 거의 없어서, 자주 배포를 하진 않았습니다. 개발자들이 소스를 push 하는 순간 커밋 빌드도 돌릴까 했지만, 서버의 로드가 너무 많이 걸려 이건 적용하지 않았습니다.


opensource package source는 다운로드에 문제가 언제든지 발생 할 수 있습니다. 즉 어제는 잘 됐는데, 오늘은 암 것도 안했는데, 빌드가 깨진다거나 그 반대의 경우도 얼마든지 발생 합니다. 따라서, 다운로드 실패에 의한 빌드 실패를 방지 하기 위해서, 내무 mirror와 download cache를 이용해서, 다운로드 시간 절약과, 실패를 방지 했습니다.


yocto 이미지 커스터마이징은 처음에는 poky나 벤더에서 제공된 레시피를 수정하거나, source를 수정하는 형태로 진행 했는데, 익숙해 지고 나니 전혀 그럴 필요가 없었습니다. 오히려 원본은 원본대로 수정은 따로 meta-packag를 분리해서 개발 하는 것이 더 효율적이라는 것을 확인 했습니다. 처음에응 이해가 잘 안되는데 gentoo의 portage 시스템을 통해서 이해를 했습니다. 원본이 존재 하고, overlay로 레시피에 append/prepend 로 덮어쓰면, yocto 시스템의 변경사항을 받아 오면서도, 개발하고 있는 시스템에 문제를 최소화 시킬 수 있습니다.


application 개발은 각 개발자들이 배포 받은 SDK를 이용하여, 개발을 진행하고, 개발툴은 qtcreator를 이용하여 개발 했는데, 지금이야 CLion도 있고, vscode도 있지만, 몇 년전 까지도 딴 툴은 없기도 하고, 결정적으로 IDE의 역할을 해줄 수 있는 툴은 qtcreator가 유일했습니다. vim이나 sourceinsight를 이야기 하는 사람도 있는데, 코딩/배포/디버깅 까지 단한번의 클릭으로 할 수 있는 건 무료 툴에선 이게 유일합니다. 일례로 cmake crosstoolchainfile이나, qmake mkspec만 잘 만들면 wince 개발 할 때 처럼 개발이 가능 해집니다.


네트워크는 target 시스템의 usb-otg를 이용해서 개발하는데, linux에서 usb gadget 디바이스를 제공해줘서, usb to usb를 usb over network로 사용이 가능 합니다. 단점은 target이 리셋 될때 마다, 윈도우즈 에서 디바이스를 새로 잡는데, 잡을 때마다, ip를 새로 지정해줘야 하는데, 이부분은 target dhcp 서버로 동작하게 해서, 별도의 입력이 없어도 동작이 가능 하도록 했습니다. (사무실의 네트워크 공사를 새로 할 수도 없고, 네트워크를 어떻게 해야 하나 고민하고 있었는데, beaglebone black 보드에서 힌트를 얻었습니다.)


yocto로 개발하면서 우여곡절이 많기도 했지만, 극한의 커스터마이징도 가능해서, 매우 만족할 만한 결과물을 만들어 낼 수 있었습니다. scratch나 buildroot/ltib면 꽤나 고생했을 껀데, 쉽게 해결이 가능한 부분도 많았습니다.


지금은 리눅스 쪽 개발일이 없어서 손을 놓은지 좀 됐는데, 가끔씩 yocto 어떠냐고 물어 보면, 내가 개발하면 yocto로 개발 하겠지만, 남들에겐 추천은 못하겠다. 라고 합니다. yocto 시스템을 이해 하려면, 기본적으로 gentoo를 stage1 부터 설치해보고, 개인적으로 몇년씩 사용하면서 기본적인 트러블 슈팅은 할 줄 알고, 현재 사용하고 있는 시스템의 백그라운드 프로세스의 이름과 역할을 다 알아야 합니다.

가끔씩 yocto 관련 글이 올라올때 마다, 삽질의 끝판왕이라 그러는데, 진짜 그말에 백번 동감합니다.


근데, 이번에 제품 만들껀데 os 뭐 쓸까요? 라고 물어 본다면, 저는 yocto 라고 대답할 정도로, 잘 정돈되고, 제품화 하기 위한 커스터마이징이 자유로운 플랫폼이기도 합니다.


이상 yocto 리눅스 사용기(?) 였습니다.

NeverEnd 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [38]
SPACEBALLS
IP 211.♡.163.50
08-04 2020-08-04 20:19:08
·
잘 읽었습니다. 근데 BSP 가 어떤직책(?)인가요?
NeverEnd
IP 110.♡.176.20
08-04 2020-08-04 20:24:30
·
TQQQ님// board supported package 의 약자로 보통 하드웨어의 부트로더 커널 os지원을 패키지를 의미하는데. 보통은 이런 일을 담당하는 담당자를 의미하기도 합니다.
seragraph
IP 106.♡.35.53
08-04 2020-08-04 20:27:56
·
@TQQQ님 Board Support Package 입니다. Driver 등을 개발하거나 프로젝트에서 사용하는 보드에 맞게 커스터마이징하는 작업입니다.
윤신영
IP 168.♡.60.114
08-04 2020-08-04 22:05:33
·
Linux 세계는 정말 넓네요. Linux 조금은 안다고 생각하는데도 처음 들어보네요.
감히 도전할 생각이 들지는 않지만 소개글 감사합니다.
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:43:19
·
윤신영님// 저도 누가해야 한다고 드러눕지만 않았어도 안했을겁니다.
피시파인더
IP 12.♡.212.2
08-04 2020-08-04 22:09:17 / 수정일: 2020-08-04 22:41:43
·
잘 읽었습니다. BMW / 인텔 / 알티움 등 회사들 보면 Yocto 만 전문적 다루는 엔지니어들이 있더라구요. 솔직히 임베디드 리눅스를 기반으로 제품 개발을 한다면 Yocto / OE가 어렵지만 가장 쉬운(?) 길 같습니다 ㅎㅎ.
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:36:38
·
빅투나님// 맞아요.ㅋㅋ 어렵지만 가장 편하기도 해요
하이드로이드
IP 175.♡.131.6
08-04 2020-08-04 23:00:08
·
앱도 개발하고 어설프게 BSP를 수정하는 수준의 소규모 개발팀에서는 업무량만 폭증할 것 같아서 칩 제작사에서 배포하는 레시피를 함부로 건드리지 못하고 있습니다..;
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:37:31
·
Hydroid님// 막상해보면 그리 복잡하지는 않아요.
지구정복위원회
IP 125.♡.82.156
08-04 2020-08-04 23:09:22
·
!!!
File
IP 125.♡.151.47
08-04 2020-08-04 23:25:20
·
작은회사부터 큰회사까지 Yocto로 대동단결
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:43:49
·
File님// 삽질로 대동단결!!
진짜메뚜기
IP 61.♡.174.40
08-04 2020-08-04 23:44:41
·
yocto를 만지게 된 지 2년째인데 아직도 레시피라던지 그런 건 다 모르겠더라고요
현재 프로젝트가 yocto 쓰면서 제일 많이 다룬 프로젝트인데 아직도 빌드법 말고는 잘 모르겠네요;
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:44:41
·
진짜메뚜기님// 사실 빌드법외에 알아야 될게 있나 싶기도해요
삐도리
IP 112.♡.193.152
08-05 2020-08-05 01:50:13
·
소개 감사합니다
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:46:30
·
삐도리님// ^^
신나는금요일
IP 68.♡.180.1
08-05 2020-08-05 06:55:46
·
사용한지 1년이 좀 넘었습니다. 여전히 머리 쥐어뜯고 있네요.
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:45:39
·
신나는금요일님// 쉽게생각하면 쉽고. 복잡해 보일땐 한도 끝도 없어요.
케로짱
IP 106.♡.193.89
08-05 2020-08-05 07:20:32
·
sstate mirror를 통한 빌드 속도의 극적인 단축이 빠졌네요 ㅋㅋㅋ
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:39:25
·
케로짱님// 이건 안써봤어요 ㅋ
grounder
IP 222.♡.243.145
08-09 2020-08-09 21:31:59
·
@NeverEnd님
sstate를 안쓰면 Yocto의 가장 중요한 기능을 안쓰시는걸로 보입니다.

현 회사에 도입하고 싶다가도 그거만 할 자신이 없어 쭈구리로 있습니다.
주희압빠
IP 61.♡.241.66
08-05 2020-08-05 07:52:10
·
클리앙에 잘 어울리는 글 이네요, 반갑습니다^^
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:46:16
·
주희압빠님// ^^, 환영해주시니 감사 합니다.
꽃곰돌이
IP 106.♡.129.39
08-05 2020-08-05 08:07:06
·
저도 현업에서 yocto를 사용한지 5년이 되어가네요 opensource중에 webOS OSE, luneOS, ROS등이 yocto를 잘 사용하고 있습니다.
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:38:52
·
꽃곰돌이님// 알렉사도 yocto를 쓰더군요. 의외로 많은 곳에서 씁니다.
페이스팝콘
IP 218.♡.60.252
08-05 2020-08-05 08:09:01
·
예전회사에서 멋모르고 yocto로 개발시작했는데 yoc나오더라고요 ㅋ
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:39:55
·
페이스팝콘님// 욕나오고 토나와서 욕토입니다.ㅋ
꿀곰린군
IP 1.♡.134.73
08-05 2020-08-05 08:10:58
·
아음.. 전 회사에서 일할 때 모 사의 임베디드 통신 단말 관련해서 호환 설계하느라 Yocto 로 몇 달 머리 쥐어뜯은 적이 있지요. ㅎㅎ 제공되는 BSP만 가지고 아주 최소한으로 쓰려면 또 그렇게 쓸 수도 있으나.. 제대로 하려면 또 한도 끝도 없더라구요. 추억이네요.
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:47:18
·
꿀곰린군님// 어디까지 할것인가 짜르른것도 쉽지 않긴해요
양자이론
IP 76.♡.119.111
08-05 2020-08-05 08:20:05
·
저도 마이크로소프트에 있을때 Yocto를 썼었는데, 저는 OS 커널 코드만 주로 건드리고 Yocto에 recipe 추가, 편집 하는거는 별로 어렵지 않아서(생각해보니 bitbake 스크립트를 거의 다 들여다 보긴 했던것 같습니다. 하지만 리눅스 커널 코드 이해하는것에 비하면 python script 보는 정도야 뭐...) 그리 고생 안하고 썼는데, 힘든부분이 좀 있나보군요.
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:41:32
·
MARCEL님// ms에서도 쓰는군요. python 만 알면그나마 할만한데. 보통은 규모에 압도 당하죠
skool™
IP 218.♡.26.65
08-05 2020-08-05 08:22:55
·
아... 리눅스를 잘 모르는 사람에게는 욕토는 재앙에 가깝죠.. 처음에 보고 어디부터 시작을 해야하지 하다가 포기 했습니다..
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:42:23
·
skool™님// 하긴 이걸 어디서부터 손대지?가 젤어렵네요
관심좀
IP 112.♡.79.218
08-05 2020-08-05 08:40:09
·
Yocto 프로젝트에서 어플리케이션을 개발하고 있었는데, 상세하게 모르고있던 부분이 일정부분 해소 되었네요.
말씀해주신대로 qtcreator가 막강한것 같습니다. SDK설정만 잘 맞추면 빌드,배포,디버깅까지 모두 가능 ^^
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 09:49:16
·
관심좀님// qtcreator가 리눅스개발 환경에서는 단연코 최고라 봅니다. 아직도 qtcreator쓴다 그럼 저는 qt안 쓰는데요. 라고 하는 사람도 많아요.
뿅뿅
IP 223.♡.53.241
08-05 2020-08-05 11:36:49
·
감사합니다. 막연했는데 실무위주 강좌 참고하기에 좋은 레퍼런스가 있을까요?
NeverEnd
IP 110.♡.176.20
08-05 2020-08-05 15:23:16
·
@뿅뿅님 애석하게도 제가 아는 범위내에서, 참고할만한 게 없습니다. 마지막으로 본게 번역서 였는데, 그야 말로 매뉴얼을 한글로 번역만 한거라 그리 도움이 되진 않았어요.차라리 케이스 스터디 형태로 글을 써볼까 했는데, 상황이 녹록치가 않아서 못하고 있습니다.
늙은쏘가리
IP 116.♡.34.78
08-05 2020-08-05 23:28:06
·
Yocto로 전환한지 6년 넘었는데 처음에는 와 이게 뭐 이렇게 어렵냐고 욕나오고 토나왔었죠.
어느 정도 익숙해지면 욕토만큼 좋은 빌드환경은 없다고 단언합니다.
옛날처럼 소스 찾아서 컴파일하고 안되면 수정하고 안되면 포기하는 그런게 없어서 좋죠.
레시피 찾아서 추가해주면 되거든요.
진짜 욕토 아키텍처 만든 개발자분들 존경합니다.
추천하는 Yocto 개발환경은 Debian 9 배포판을 가장 추천합니다.
Windows WSL1에서는 빌드가 안되고 WSL2에서는 빌드가 되는데 좀 사용하기가 불편하고 빌드속도가 개판입니다.
임베디드 리눅스 개발환경은 단연코 리눅스가 최고입니다.
참고로 최신 리눅스 배포판은 Yocto 빌드가 안되는 경우가 있습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.