Yocto, 쉽게 이해하고 깊게 다루기 pdf 다운로드를 무료로 제공합니다 Yocto는 하드웨어에 상관없이 작동하는 커스텀 리눅스를 개발하도록 도와주는 오픈소스 프로젝트이다. 현업에서 Yocto를 배워야 하거나
관련 교재 pdf 모음
책 소개
개발자의 삶은 많이 고단한 것 같다. 급격히 변하는 시대에 익혀야 할 것도, 알아야 할 것도 많기 때문이다. 특히 리눅스 개발자로 뛰어들게 되면 그 과정부터 결코 만만치 않다는 것을 느끼게 된다. 리눅스의 코드를 보면 그 방대한 코드와 구조에 압도되곤 한다. 단순히 C 언어만을 안다고 리눅스 코드가 눈에 들어오는 것도 아니고, 요즘에는 파이썬, C++, Rust 등의 코드도 익혀야 하기 때문에 코드를 해석하는 속도가 무척 더디다. 처음 Yocto를 접했을 때, 다른 개발자가 짜 놓은 코드를 참고해 대충 돌아가게 코드를 만들기는 했지만, 왜 이렇게 해야 하는지, 어떤 순서로 실행되는 것인지 종잡을 수가 없었다. 이를테면 리눅스 드라이버를 작성하는데 ‘SRC_URI에 upstream의 주소를 적고 do_compile에 컴파일이 될 수 있도록 코드를 넣고, do_install에서 배치를 한다’ 정도가 아는 것의 전부인 때도 있었다. 사정이 이렇다 보니 원하는 기능 개선이나 새로운 아이디어를 반영한다는 것은 뒷전으로 밀리고, 좁은 배경지식의 바운더리 안에서 코드를 맞춰 짜는 웃픈 일들이 벌어지고는 했다. 개발자라면 자신이 원하는 대로 구조를 잡고 코드를 만들어야 한다. 때문에 당시 나와 같은 수준의 개발자라면, 그런 웃픈 일이 생기지 않게끔 Yocto에 대한 지식을 늘릴 책임이 있다고 생각한다. 당시의 나와 같이 Yocto를 잘 알지 못해 좌절하는 사람이 있다면, 다시 한번 찬찬히 시간을 내서 Yocto에 대한 기본 개념과 사용법을 익힐 시간이라고 말해주고 싶다. ‘인생은 실전이다‘라는 인기 유튜버의 책에서 좋아하는 문구가 있다. ‘나이 먹는 것을 걱정하지 말고, 너무 늦게 시작했다는 것도 걱정하지 말고 ‘똑바로 못하는 걸’ 걱정하자. 세상에는 늦은 때란 없다. 세상에는 ‘완성’과 ‘미완성’만 있을 뿐이다.”
Yocto, 쉽게 이해하고 깊게 다루기
1장. Yocto의 소개와 추상화 개념
1.1 추상화와 Yocto 프로젝트
1.2 Yocto와 앞으로의 학습 방법
1.3 Yocto 프로젝트
1.4 실습에 필요한 설치 파일들
1.5 요약
2장. bitbake
2.1 bitbake 소스받기
2.2 메타데이터
2.3 메타데이터 파일들
2.4 bitbake 문법 첫 번째
2.5 bitbake 실행
2.6 bitbake로 “Hello! bitbake world!” 출력
2.7 지금까지 생성한 메타데이터 해석
2.8 예제에서 bitbake의 실행 절차
2.9 addtask 지시어를 통한 태스크 추가
2.10 요약
3장. Poky
3.1 오픈임베디드
3.2 Poky 소스를 다운로드하고 빌드 실행
3.3 빌드 결과를 QEMU 에뮬레이터로 실행
3.4 bitbake 환경 변수 옵션을 통한 변숫값 확인
3.5 리눅스 호스트를 위한 소프트웨어 빌드 과정과 오픈임베디드 빌드 시스템의 빌드 과정 비교
3.6 요약
4장. 빌드 속도 개선을 위한 작업들
4.1 소스받기
4.2 자신만의 소스 저장소 PREMIRRORS 구성
4.3 자신만의 공유 상태 캐시(Shared State Cache) 생성
4.4 요약
5장. 새로운 레이어를 만들고 레시피 생성
5.1 문법을 실습할 예제 작성
5.2 bitbake 문법 두 번째
5.3 hello 애플리케이션 레시피 작성
5.4 라이선스
5.5 레시피 확장 파일
5.6 BBFILE_COLLECTIONS, BBFILE_PATTERN 변수의 역할
5.7 요약
6장. 초기화 관리자 추가 및 로그 파일을 통한 디버깅
6.1 systemd 초기화 관리자 추가
6.2 로그를 이용한 디버깅
6.3 요약
7장. 유용한 오픈임베디드 코어 클래스 기능을 사용한 빌드 최적화
7.1 Autotools를 이용한 nano editor 빌드
7.2 빌드히스토리
7.3 rm-work를 통한 디스크 크기 절감
7.4 externalsrc를 이용한 외부 소스로부터 소스 빌드
7.5 요약
8장. 의존성
8.1 의존성의 종류
8.2 의존성을 제공하는 레시피의 PROVIDES 변수
8.3 요약
9장. 패키지 그룹 및 빌드 환경 구축
9.1 IMAGE_INSTALL, IMAGE_FEATURES 변수
9.2 패키지 그룹
9.3 미리 정의된 패키지 그룹
9.4 커스텀 빌드 스크립트를 통한 빌드 환경 구축
9.5 요약
10장. Poky 배포를 기반으로 한 커스텀 이미지, BSP 레이어 작성
10.1 커스텀 이미지 레시피 생성
10.2 BSP 레이어
10.3 bitbake 문법 세 번째
10.4 커스텀 BSP 레이어 만들기
10.5 요약
11장. 커널 레시피
11.1 커널 환경 설정
11.2 변경 또는 추가된 커널 환경 옵션들을 패치로 생성
11.3 변경 또는 추가된 커널 소스를 패치로 생성
11.4 생성된 패치 및 환경 설정 단편 파일 커널 레시피에 추가
11.5 devshell을 이용한 코드 수정
11.6 커널 메타데이터
11.7 non linux-yocto 스타일 커널 레시피 구성
11.8 요약
12장. 커널 레시피의 확장
12.1 externalsrc 클래스를 통한 로컬 커널 소스 사용
12.2 커널 소스 내의 defconfig 파일 사용
12.3 커널 소스 밖에서 커널 모듈 생성
12.4 MACHINE_EXTRA_RDEPENDS, MACHINE_ESSENTIAL_EXTRA_RDEPENDS 변수를 이용한 커널 모듈 설치
12.5 요약
13장. 배포 레이어
13.1 배포 레이어
13.2 자신만의 배포 레이어 생성
13.3 DISTRO_FEATURES와 IMAGE_FEATURES 그리고 MACHINE_FEATURES의 차이점.391
13.4 요약
14장. 커스터머 레이어
14.1 커스터머 레이어 생성
14.2 Great System에 대한 정리
14.3 요약
15장. 패키지
15.1 빌드 과정에서의 패키지 태스크들
15.2 RPM 패키지
15.3 yum
15.4 라이브러리 생성을 통한 패키지 실습
15.5 개선된 라이브러리 생성 패키지
15.6 요약
16장. 패키지 설치 과정을 실행하는 do_rootfs, do_image 태스크
16.1 do_rootfs 태스크
16.2 루트 파일 시스템 커스터마이즈하기
16.3 설치 후 스크립트
16.4 do_image 태스크 실행에 따른 최종 이미지 생성
16.5 요약
17장. 공유 상태 캐시와 시그니처
17.1 공유 상태 캐시
17.2 시그니처
17.3 이미 생성된 공유 상태 캐시 최적화
17.4 요약
18장. kirkstone
18.1 kirkstone의 특징들
18.2 kirkstone 설치
18.3 dunfell 버전의 예제를 kirkstone으로 마이그레이션하기
18.4 요약
19장. SDK(Software Development Kit)
19.1 SDK 생성
19.2 설치된 SDK를 사용한 타깃 애플리케이션 생성
19.3 설치된 SDK를 사용한 타깃 커널 모듈 생성
19.4 meta-toolchain
19.5 요약
20장. 그 외 다루지 않았던 주제들
20.1 파이썬 함수 및 변수 확장
20.2 익명 파이썬 함수
20.3 bitbake 문법 네 번째
20.4 oe-pkgdata-util 툴의 사용
20.5 PACKAGECONFIG 변수
20.6 소스 코드의 배포
20.7 이미 만들어져 있는 레이어 포팅
20.8 요약
21장. devtool
21.1 devtool 개요
21.2 devtool을 이용한 애플리케이션 생성
21.3 devtool을 이용한 커널 모듈 생성
21.4 요약
별책 부록