{"product_id":"139114","title":"Yocto 쉽게 이해하고 깊게 다루기","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPBvhOyeLBCBKwCDlxhEHAXM9nyW.png?v=1765072976\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\n\u003cdiv style=\"width:95%\"\u003e\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003eYocto, 쉽게 이해하고 깊게 다루기\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/121161680\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eDescription\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책소개\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  Yocto는 하드웨어에 상관없이 작동하는 커스텀 리눅스를 개발하도록 도와주는 오픈소스 프로젝트이다.\u003cbr\u003e현업에서 Yocto를 배워야 하거나, Yocto를 알고는 있지만 피상적으로 알고 있는 경우가 많다.\u003cbr\u003e이 책은 개발을 더 원활히 하고 싶은 개발자를 위해 만들어졌다.\u003cbr\u003e빌드 도구인 bitbake(비트베이크)부터 시작해서 현업에서 사용해야 하는 대부분의 지식을 담았다.\u003cbr\u003e개념을 쉽게 이해할 수 있도록 간단한 예제를 수록했으며, 애플리케이션부터 커널 드라이버 작성까지 Yocto를 사용해서 작성할 수 있는 방법을 기술했다.\u003cbr\u003e또한 최신 Yocto 버전인 kirkstone를 수록해서 최신 추세를 따라갈 수 있도록 했다.\u003cbr\u003e임베디드 리눅스에 경험이 있는 독자라면 책의 실용적인 가이드를 통해 Yocto를 성공적으로 사용할 수 있는 방법을 배울 수 있을 것이다.\u003cbr\u003e\n\u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cul\u003e \u003cli\u003e 책의 일부 내용을 미리 읽어보실 수 있습니다.\u003cbr\u003e\u003cspan\u003e미리보기\u003c\/span\u003e\n\u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e목차\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e1장.\u003cbr\u003eYocto의 소개와 추상화 개념\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e1.1 추상화와 Yocto 프로젝트\u003cbr\u003e1.2 Yocto와 앞으로의 학습 방법\u003cbr\u003e1.3 Yocto 프로젝트\u003cbr\u003e1.4 실습에 필요한 설치 파일들\u003cbr\u003e1.5 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e2장.\u003cbr\u003ebitbake\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e2.1 bitbake 소스받기\u003cbr\u003e2.2 메타데이터\u003cbr\u003e2.3 메타데이터 파일들\u003cbr\u003e2.4 bitbake 문법 첫 번째\u003cbr\u003e2.5 bitbake 실행\u003cbr\u003e2.6 bitbake로 “Hello! bitbake world!” 출력\u003cbr\u003e2.7 지금까지 생성한 메타데이터 해석\u003cbr\u003e2.8 예제에서 bitbake의 실행 절차\u003cbr\u003e2.9 addtask 지시어를 통한 태스크 추가\u003cbr\u003e2.10 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e3장.\u003cbr\u003ePoky\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e3.1 오픈임베디드\u003cbr\u003e3.2 Poky 소스를 다운로드하고 빌드 실행\u003cbr\u003e3.3 빌드 결과를 QEMU 에뮬레이터로 실행\u003cbr\u003e3.4 bitbake 환경 변수 옵션을 통한 변숫값 확인\u003cbr\u003e3.5 리눅스 호스트를 위한 소프트웨어 빌드 과정과 오픈임베디드 빌드 시스템의 빌드 과정 비교\u003cbr\u003e3.6 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e4장.\u003cbr\u003e빌드 속도 개선을 위한 작업들\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e4.1 소스받기\u003cbr\u003e4.2 자신만의 소스 저장소 PREMIRRORS 구성\u003cbr\u003e4.3 자신만의 공유 상태 캐시(Shared State Cache) 생성\u003cbr\u003e4.4 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e5장.\u003cbr\u003e새로운 레이어를 만들고 레시피 생성\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e5.1 문법을 실습할 예제 작성\u003cbr\u003e5.2 bitbake 문법 두 번째\u003cbr\u003e5.3 hello 애플리케이션 레시피 작성\u003cbr\u003e5.4 라이선스\u003cbr\u003e5.5 레시피 확장 파일\u003cbr\u003e5.6 BBFILE_COLLECTIONS, BBFILE_PATTERN 변수의 역할\u003cbr\u003e5.7 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e6장.\u003cbr\u003e초기화 관리자 추가 및 로그 파일을 통한 디버깅\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e6.1 systemd 초기화 관리자 추가\u003cbr\u003e6.2 로그를 이용한 디버깅\u003cbr\u003e6.3 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e7장.\u003cbr\u003e유용한 오픈임베디드 코어 클래스 기능을 사용한 빌드 최적화\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e7.1 Autotools를 이용한 nano editor 빌드\u003cbr\u003e7.2 빌드히스토리\u003cbr\u003e7.3 rm-work를 통한 디스크 크기 절감\u003cbr\u003e7.4 externalsrc를 이용한 외부 소스로부터 소스 빌드\u003cbr\u003e7.5 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e8장.\u003cbr\u003e의존성\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e8.1 의존성의 종류\u003cbr\u003e8.2 의존성을 제공하는 레시피의 PROVIDES 변수\u003cbr\u003e8.3 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e9장.\u003cbr\u003e패키지 그룹 및 빌드 환경 구축\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e9.1 IMAGE_INSTALL, IMAGE_FEATURES 변수\u003cbr\u003e9.2 패키지 그룹\u003cbr\u003e9.3 미리 정의된 패키지 그룹\u003cbr\u003e9.4 커스텀 빌드 스크립트를 통한 빌드 환경 구축\u003cbr\u003e9.5 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e10장.\u003cbr\u003ePoky 배포를 기반으로 한 커스텀 이미지, BSP 레이어 작성\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e10.1 커스텀 이미지 레시피 생성\u003cbr\u003e10.2 BSP 레이어\u003cbr\u003e10.3 bitbake 문법 세 번째\u003cbr\u003e10.4 커스텀 BSP 레이어 만들기\u003cbr\u003e10.5 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e11장.\u003cbr\u003e커널 레시피\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e11.1 커널 환경 설정\u003cbr\u003e11.2 변경 또는 추가된 커널 환경 옵션들을 패치로 생성\u003cbr\u003e11.3 변경 또는 추가된 커널 소스를 패치로 생성\u003cbr\u003e11.4 생성된 패치 및 환경 설정 단편 파일 커널 레시피에 추가\u003cbr\u003e11.5 devshell을 이용한 코드 수정\u003cbr\u003e11.6 커널 메타데이터\u003cbr\u003e11.7 non linux-yocto 스타일 커널 레시피 구성\u003cbr\u003e11.8 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e12장.\u003cbr\u003e커널 레시피의 확장\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e12.1 externalsrc 클래스를 통한 로컬 커널 소스 사용\u003cbr\u003e12.2 커널 소스 내의 defconfig 파일 사용\u003cbr\u003e12.3 커널 소스 밖에서 커널 모듈 생성\u003cbr\u003e12.4 MACHINE_EXTRA_RDEPENDS, MACHINE_ESSENTIAL_EXTRA_RDEPENDS 변수를 이용한 커널 모듈 설치\u003cbr\u003e12.5 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e13장.\u003cbr\u003e배포 레이어\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e13.1 배포 레이어\u003cbr\u003e13.2 자신만의 배포 레이어 생성\u003cbr\u003e13.3 DISTRO_FEATURES와 IMAGE_FEATURES 그리고 MACHINE_FEATURES의 차이점.391\u003cbr\u003e13.4 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e14장.\u003cbr\u003e커스터머 레이어\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e14.1 커스터머 레이어 생성\u003cbr\u003e14.2 Great System에 대한 정리\u003cbr\u003e14.3 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e15장.\u003cbr\u003e패키지\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e15.1 빌드 과정에서의 패키지 태스크들\u003cbr\u003e15.2 RPM 패키지\u003cbr\u003e15.3 yum\u003cbr\u003e15.4 라이브러리 생성을 통한 패키지 실습\u003cbr\u003e15.5 개선된 라이브러리 생성 패키지\u003cbr\u003e15.6 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e16장.\u003cbr\u003e패키지 설치 과정을 실행하는 do_rootfs, do_image 태스크\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e16.1 do_rootfs 태스크\u003cbr\u003e16.2 루트 파일 시스템 커스터마이즈하기 \u003cbr\u003e16.3 설치 후 스크립트\u003cbr\u003e16.4 do_image 태스크 실행에 따른 최종 이미지 생성\u003cbr\u003e16.5 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e17장.\u003cbr\u003e공유 상태 캐시와 시그니처\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e17.1 공유 상태 캐시\u003cbr\u003e17.2 시그니처\u003cbr\u003e17.3 이미 생성된 공유 상태 캐시 최적화\u003cbr\u003e17.4 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e18장.\u003cbr\u003ekirkstone\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e18.1 kirkstone의 특징들\u003cbr\u003e18.2 kirkstone 설치\u003cbr\u003e18.3 dunfell 버전의 예제를 kirkstone으로 마이그레이션하기\u003cbr\u003e18.4 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e19장. SDK(Software Development Kit)\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e19.1 SDK 생성\u003cbr\u003e19.2 설치된 SDK를 사용한 타깃 애플리케이션 생성\u003cbr\u003e19.3 설치된 SDK를 사용한 타깃 커널 모듈 생성\u003cbr\u003e19.4 meta-toolchain\u003cbr\u003e19.5 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e20장.\u003cbr\u003e그 외 다루지 않았던 주제들\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e20.1 파이썬 함수 및 변수 확장\u003cbr\u003e20.2 익명 파이썬 함수\u003cbr\u003e20.3 bitbake 문법 네 번째\u003cbr\u003e20.4 oe-pkgdata-util 툴의 사용\u003cbr\u003e20.5 PACKAGECONFIG 변수\u003cbr\u003e20.6 소스 코드의 배포\u003cbr\u003e20.7 이미 만들어져 있는 레이어 포팅\u003cbr\u003e20.8 요약\u003cbr\u003e\u003cbr\u003e\u003cb\u003e21장.\u003cbr\u003edevtool\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e21.1 devtool 개요\u003cbr\u003e21.2 devtool을 이용한 애플리케이션 생성\u003cbr\u003e21.3 devtool을 이용한 커널 모듈 생성\u003cbr\u003e21.4 요약\u003cbr\u003e\u003cbr\u003e별책 부록 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e출판사 리뷰\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e이 책에서 다루는 내용 \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e-입문자들이 Yocto의 구조와 개념을 익힐 수 있도록 bitbake의 기초 동작부터 설명\u003cbr\u003e-오픈 임베디드 코어와 bitbake를 포함하는 오픈 임베디드 빌드 시스템에 대한 기초 동작부터 설명\u003cbr\u003e-Yocto를 이용한 애플리케이션, 커널 드라이버 등의 코드 작성법\u003cbr\u003e-최신 Yocto 버전인 kirkstone의 개념 및 dunfell 버전에서 kirkstone으로의 마이그레이션 방법\u003cbr\u003e-계층형 아키텍처에 기반한, 정해진 Yocto 레이어에 대한 설명과 예제\u003cbr\u003e-Yocto의 까다로운 부분인 패키지와 의존성에 대한 설명 및 예제\u003cbr\u003e-SDK, devtool을 이용한 패키지 개발에 대한 설명 및 예제\u003cbr\u003e-Yocto에서 제공되는 임베디드 코어를 이용한 손쉽고 효율적인 코드 작성법\u003cbr\u003e\u003cbr\u003e\u003cb\u003e이 책의 대상 독자 \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e-평소 Yocto에 관심은 있었지만 어디서부터 어떻게 공부해야 할지 모르는 입문자\u003cbr\u003e-Yocto를 다루고는 있지만 막연히 사용할 줄만 알고, 전체적인 구조와 원리를 모르는 실무자\u003cbr\u003e-Yocto를 이용해 리눅스 기반의 프로그램을 만들어 보고 싶은 개발자\u003cbr\u003e\u003cbr\u003e\u003cb\u003e이 책의 구성 \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e1장에서는 Yocto가 무엇인지 알아보고 Yocto에 담긴 추상화의 의미를 이해한다.\u003cbr\u003e2장에서는 Yocto에서 빌드 시스템의 중심인 bitbake에 대해 자세하게 알아본다.\u003cbr\u003e3장에서는 오픈 임베디드 빌드 시스템을 담고 있는 Poky에 대해 알아본다.\u003cbr\u003e4장에서는 실습에 들어가기에 앞서 빌드를 좀 더 빠르게 할 수 있는 방안으로 두 가지 방법을 제시한다.\u003cbr\u003e따라서 자신만의 PREMIRRORS와 공유 상태 캐시를 구성하는 방법을 학습한다.\u003cbr\u003e5장에서는 새로운 레이어를 만들고 직접 레시피 파일을 작성해 본 후 관련 문법을 학습한다.\u003cbr\u003e\u003cbr\u003e6장에서는 5장에서 만든 애플리케이션 바이너리를 init 시스템인 systemd에서 실행하는 방법을 알아보고 디버깅하는 방법에 대해서도 학습한다.\u003cbr\u003e7장에서는 오픈 임베디드 코어가 제공하는 클래스를 이용한 빌드 최적화 방법들에 대해 다룬다.\u003cbr\u003eAutotools를 이용해 간단하게 애플리케이션을 빌드할 수 있는 방법, 소스를 로컬에 위치시키는 externalsrc, 불필요한 빌드 산출물을 삭제하는 rm_work, 빌드 정보를 저장하는 buildhistory 클래스에 대해 학습한다.\u003cbr\u003e8장에서는 레시피와 패키지들 간의 의존성에 대해 알아본다.\u003cbr\u003e의존성에는 빌드 의존성과 실행 시간 의존성이 있는데 이에 대해 상세하게 살펴본다.\u003cbr\u003e9장에서는 패키지 그룹에 대해 알아보고 앞으로의 실습을 위해 자체 빌드 환경을 구축해 본다.\u003cbr\u003e10장부터는 Poky 배포를 기반으로 한 커스텀 이미지와 커스텀 BSP 레이어를 생성한다.\u003cbr\u003e이 내용은 레이어드 아키텍처에 기반해 학습을 진행한다.\u003cbr\u003e레이어를 하나씩 만들어 가며 실제로 현업에서 이뤄지는 작업들을 이해해 본다.\u003cbr\u003e\u003cbr\u003e11장에서는 커널 레시피에 대해 학습한다.\u003cbr\u003e오픈 임베디드 빌드 시스템은 커널을 쉽게 빌드할 수 있도록 도와주는 클래스를 제공한다.\u003cbr\u003e이 클래스를 이용해 패치 및 환경 설정 옵션들을 쉽게 적용할 수 있다.\u003cbr\u003e또한 Yocto에서 제공하는 커널 메타데이터에 대해서도 알아본다.\u003cbr\u003e12장에서는 11장에서 학습한 커널 레시피를 확장해 기능을 추가해 본다.\u003cbr\u003e커널 소스를 externalsrc 클래스를 상속해 외부에 따로 저장하고 defconfig 파일을 커널 내 소스에서 사용할 수 있도록 하는 방법도 학습한다.\u003cbr\u003e또한 커널 모듈을 커널 소스 트리 밖에서 만드는 법을 학습한다.\u003cbr\u003e13장에서는 배포 레이어를 학습한다.\u003cbr\u003e이를 통해 배포 레이어가 배포 전반에 걸친 빌드에 대한 환경 설정을 갖고 있다는 것을 이해할 수 있다.\u003cbr\u003e그리고 자신만의 배포 레이어를 만들어 배포 레이어에 대한 이해를 높인다.\u003cbr\u003e14장에서는 레이어드 아키텍처의 최상위 레이어인 커스터머(customer) 레이어를 만들어봄으로써 실제 현업에서 칩 벤더가 배포한 Yocto 기반의 코드를 어떻게 추가하고 변경하는지, 이해해 본다.\u003cbr\u003e15장에서는 패키지에 대해 학습한다.\u003cbr\u003e크로스 빌드 환경에서 만들어진 결과물들을 실제 타깃에 넣기 위해서는 패키지로 만들어야 한다.\u003cbr\u003e패키지에 대한 이해를 위해 공유 라이브러리 생성에 대해서도 알아본다.\u003cbr\u003e\u003cbr\u003e16장에서는 패키지 설치 과정을 학습한다.\u003cbr\u003e최종적으로 만들어질 이미지인 루트 파일 시스템을 생성하는 방법에 대해 배우게 된다.\u003cbr\u003e17장에서는 4장에서 구축했던 공유 상태 캐시에 대해 좀 더 자세하게 다루고 공유 상태 캐시를 최적화하는 방법에 대해서도 학습한다.\u003cbr\u003e18장에서는 장기간 지원 Yocto 버전인 kirkstone에 대해 학습한다.\u003cbr\u003ekirkstone만의 특징을 알아보고 실제 kirkstone을 설치해 본다.\u003cbr\u003e그리고 기존에 dunfell 버전으로 작성했던 예제를 kirkstone으로 마이그레이션해 본다.\u003cbr\u003e19장에서는 SDK에 대해 학습한다.\u003cbr\u003e외부에서 애플리케이션이나 커널 모듈을 개발할 때 개발 환경으로 SDK를 사용하므로 SDK를 생성하는 방법을 학습한다.\u003cbr\u003e그리고 생성된 SDK를 호스트에 설치하고 생성된 SDK를 이용해 애플리케이션과 외부 커널 모듈을 만들어 본다.\u003cbr\u003e20장에서는 파이썬 함수, 익명 파이썬 함수와 bitbake 문법을 다룬다.\u003cbr\u003e그리고 oe-pkgdta-util 툴의 사용 방법, PACKAGECONFIG 변수의 사용을 통해 기능 단위로 빌드를 설정하는 방법, 오픈 임베디드 코어에서 제공하는 소스 코드를 배포하는 방법, 이미 만들어져 있는 레이어를 현재 진행하는 프로젝트에 포팅 해 사용하는 방법을 학습한다.\u003cbr\u003e21장에서는 devtool에 대해 학습한다.\u003cbr\u003e앞에서는 새로운 패키지를 생성할 때 레이어를 생성하고 레시피 작성, layer.conf 파일에 레시피 추가 그리고 이미지 레시피에 패키지를 추가했다.\u003cbr\u003e이런 과정을 수행하는 데는 어느 정도의 수고와 Yocto에 대한 기반 지식이 필요하다.\u003cbr\u003e그러나 devtool을 사용하면 수고를 덜고 Yocto에 대한 기반 지식이 없더라도 간단하게 애플리케이션이나 커널 모듈을 개발할 수 있다.\u003cbr\u003e따라서 21장에서는 devtool의 개념을 학습하고, 간단한 예제를 통해 devtool의 사용법을 익혀본다.\u003cbr\u003e\u003cbr\u003e\u003cb\u003e지은이의 말 \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e개발자의 삶은 많이 고단한 것 같다.\u003cbr\u003e급격히 변하는 시대에 익혀야 할 것도, 알아야 할 것도 많기 때문이다.\u003cbr\u003e특히 리눅스 개발자로 뛰어들게 되면 그 과정부터 결코 만만치 않다는 것을 느끼게 된다.\u003cbr\u003e리눅스의 코드를 보면 그 방대한 코드와 구조에 압도되곤 한다.\u003cbr\u003e단순히 C 언어만을 안다고 리눅스 코드가 눈에 들어오는 것도 아니고, 요즘에는 파이썬, C++, Rust 등의 코드도 익혀야 하기 때문에 코드를 해석하는 속도가 무척 더디다.\u003cbr\u003e\u003cbr\u003e처음 Yocto를 접했을 때, 다른 개발자가 짜 놓은 코드를 참고해 대충 돌아가게 코드를 만들기는 했지만, 왜 이렇게 해야 하는지, 어떤 순서로 실행되는 것인지 종잡을 수가 없었다.\u003cbr\u003e이를테면 리눅스 드라이버를 작성하는데 ‘SRC_URI에 upstream의 주소를 적고 do_compile에 컴파일이 될 수 있도록 코드를 넣고, do_install에서 배치를 한다’ 정도가 아는 것의 전부인 때도 있었다.\u003cbr\u003e사정이 이렇다 보니 원하는 기능 개선이나 새로운 아이디어를 반영한다는 것은 뒷전으로 밀리고, 좁은 배경지식의 바운더리 안에서 코드를 맞춰 짜는 웃픈 일들이 벌어지고는 했다.\u003cbr\u003e\u003cbr\u003e개발자라면 자신이 원하는 대로 구조를 잡고 코드를 만들어야 한다.\u003cbr\u003e때문에 당시 나와 같은 수준의 개발자라면, 그런 웃픈 일이 생기지 않게끔 Yocto에 대한 지식을 늘릴 책임이 있다고 생각한다.\u003cbr\u003e당시의 나와 같이 Yocto를 잘 알지 못해 좌절하는 사람이 있다면, 다시 한번 찬찬히 시간을 내서 Yocto에 대한 기본 개념과 사용법을 익힐 시간이라고 말해주고 싶다.\u003cbr\u003e‘인생은 실전이다‘라는 인기 유튜버의 책에서 좋아하는 문구가 있다.\u003cbr\u003e‘나이 먹는 것을 걱정하지 말고, 너무 늦게 시작했다는 것도 걱정하지 말고 ‘똑바로 못하는 걸’ 걱정하자.\u003cbr\u003e세상에는 늦은 때란 없다.\u003cbr\u003e세상에는 ‘완성’과 ‘미완성’만 있을 뿐이다.” \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eGOODS SPECIFICS\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e발행일 : \u003c\/strong\u003e2023년 08월 28일\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e쪽수, 무게, 크기 : \u003c\/strong\u003e612쪽 | 188*235*28mm\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN13 : \u003c\/strong\u003e9791161757780\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN10 : \u003c\/strong\u003e1161757783\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cspan\u003e\u003c\/span\u003e\n\u003c\/center\u003e\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893340373034,"sku":"139114","price":52.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/141548fe25c2c465761aef739f90a9bd.jpg?v=1765397297","url":"https:\/\/librairie.coreenne.fr\/ko\/products\/139114","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}