임베디드 스터디 - 리눅스 부팅 과정
리눅스 커널 부팅 과정을 학습한다. zImage 자가 압축 해제, 어셈블리 초기화 단계, start_kernel()의 서브시스템 초기화 순서(setup_arch·mm_init·sched_init), rest_init()의 PID 0·1·2 생성, initramfs 마운트와 /sbin/init 실행까지의 전체 흐름을 다룬다.
리눅스 커널 부팅 과정을 학습한다. zImage 자가 압축 해제, 어셈블리 초기화 단계, start_kernel()의 서브시스템 초기화 순서(setup_arch·mm_init·sched_init), rest_init()의 PID 0·1·2 생성, initramfs 마운트와 /sbin/init 실행까지의 전체 흐름을 다룬다.
리눅스 커널 구성(Configuration) 시스템을 학습한다. Kconfig 언어의 tristate·bool·depends on·default 키워드, make menuconfig TUI 동작, .config 파일 구조, 빌트인(=y)과 모듈(=m)의 차이와 선택 기준을 다룬다.
리눅스 커널 빌드 과정을 학습한다. Kbuild 시스템의 계층적 Makefile 구조, ARCH·CROSS_COMPILE 환경변수로 크로스 컴파일러를 지정하는 방법, Kconfig·menuconfig·defconfig·.config 파일의 역할, vmlinux·zImage·uImage 빌드 결과물 변환 과정을 다룬다.
리눅스 커널 소스 트리 구조를 학습한다. arch/, drivers/, fs/, mm/, kernel/, net/, include/ 각 디렉토리의 역할과 책임 범위, 아키텍처 종속 코드와 공통 코드의 분리 원칙을 다룬다.
소프트웨어 공학과 SDLC 모델을 학습한다. 소프트웨어 위기의 배경, 폭포수·V-Model·프로토타이핑·나선형·애자일(Scrum) 모델의 특징과 강약점, 임베디드에서의 모델 선택 기준과 혼합 패턴을 다룬다.
임베디드 부트로더 레벨 전원 관리를 학습한다. Power-On Reset(POR)의 동작 원리, GPIO·RTC·통신 기반 Wake-up 소스와 부팅 경로 결정, Sleep 모드별 Wake-up 트리거 비교, Watchdog Timer 동작과 스타트업 코드에서의 WDT 처리 패턴을 다룬다.
임베디드 Linux의 OS 전원 관리를 학습한다. 시스템 Sleep 상태(S0~S4)와 /sys/power/state 제어, Suspend-to-RAM·Suspend-to-Disk 차이, Runtime PM의 usage count 기반 동작과 dev_pm_ops 콜백 구조, Linux PM 프레임워크 전체 계층을 다룬다.
임베디드 시스템의 전원 관리 하드웨어를 학습한다. LDO 레귤레이터 동작 원리, DC-DC 스위치 컨버터(Buck·Boost·Buck-Boost·Cuk)의 에너지 변환 방식, PWM·PFM 출력 방식 비교, PMIC의 Power Sequencing과 Latch-Up 방지를 다룬다.
임베디드 Linux 개발 환경의 NFS 마운팅을 학습한다. NFS를 통한 원격 루트 파일시스템 마운트 원리, /etc/exports 서버 설정과 no_root_squash 옵션, U-Boot bootargs를 이용한 타겟 보드 NFS 루트 설정, tftp+NFS 개발 환경 전체 흐름을 다룬다.
임베디드 Linux의 초기 RAM 디스크를 학습한다. 루트 파일시스템 마운트의 닭-달걀 문제, initrd와 initramfs 차이, initramfs 내부 구성과 /init 실행 흐름, 그리고 경량 유틸리티 모음인 BusyBox의 구조와 동작 방식을 다룬다.