분류 전체보기(665)
-
커널 포팅 (5. 고급 커널 포팅 및 최적화 / 5.3 커널 디버깅 및 프로파일링)
5.3 커널 디버깅 및 프로파일링임베디드 리눅스 시스템에서 커널 디버깅과 성능 분석은 안정적인 운영을 위해 필수적인 과정입니다.이 장에서는 원격 디버깅(kgdb, gdbserver), 성능 분석(ftrace, perf), 실시간 디버깅(dmesg, printk, sysrq) 방법과보안 고려사항, 임베디드 환경에서의 제약 및 주의사항을 함께 다룹니다.🔹 1️⃣ kgdb, gdbserver를 이용한 원격 디버깅커널 디버깅은 일반적인 애플리케이션 디버깅과 다르게 커널 공간에서 실행되는 코드를 분석해야 합니다.이를 위해 kgdb와 gdbserver를 사용하여 원격 디버깅을 수행할 수 있습니다.📌 1️⃣ kgdb를 사용한 원격 디버깅kgdb는 GDB를 이용하여 커널을 디버깅할 수 있도록 해주는 커널 기능입니다..
2025.03.06 -
커널 포팅 (5. 고급 커널 포팅 및 최적화 / 5.2 루트 파일 시스템 설정)
5.2 루트 파일 시스템 설정루트 파일 시스템(rootfs)은 커널이 부팅된 후 실행 환경을 제공하는 필수 요소입니다.임베디드 시스템에서는 rootfs를 최소화하여 저장 공간을 절약하고 빠른 부팅을 목표로 합니다.이 장에서는 rootfs 개념, BusyBox 기반 최소한의 루트 파일 시스템 제작, init 프로세스 및 systemd 활용, 크로스 컴파일 환경 설정, 읽기 전용(rootfs read-only) 구성 방법을 다룹니다.🔹 1️⃣ 임베디드 시스템에서 rootfs 개념 이해루트 파일 시스템(rootfs)은 커널이 부팅된 후 실행되는 기본 파일 시스템입니다.임베디드 시스템에서는 rootfs를 최소화하여 저장 공간을 절약하고 빠른 부팅을 목표로 합니다.✅ rootfs의 주요 역할init 프로세스를 ..
2025.03.06 -
커널 포팅 (5. 고급 커널 포팅 및 최적화 / 5.1 부트로더 커스터마이징)
5.1 부트로더 커스터마이징부트로더는 임베디드 시스템에서 커널을 로드하고 실행하는 중요한 역할을 합니다.U-Boot을 커스터마이징하면 부팅 속도를 최적화하고, 원하는 방식으로 커널을 실행할 수 있습니다.이 장에서는 U-Boot 환경설정, 커널 커맨드 라인(cmdline) 수정, 부팅 속도 최적화 방법을 다룹니다.🔹 U-Boot 환경설정 (bootargs, bootcmd)📌 1️⃣ U-Boot 환경 변수란?U-Boot는 환경 변수(Environment Variables) 를 사용하여 부팅 설정을 관리합니다.부팅 과정에서 가장 중요한 두 가지 변수는 다음과 같습니다.✅ bootargs커널에 전달되는 커맨드 라인 인자(cmdline) 를 설정하는 변수루트 파일 시스템, 콘솔 설정, 디버깅 옵션 등을 포함할..
2025.03.06 -
커널 포팅 (4. 드라이버 포팅 / 4.3 새로운 드라이버 추가하기)
4.3 새로운 드라이버 추가하기리눅스에서 새로운 디바이스 드라이버를 추가하는 과정은 크게 다음과 같습니다.간단한 문자 디바이스 드라이버 작성 (register_chrdev(), cdev_add())/dev 노드 생성 및 접근 (mknod, udev)새로운 하드웨어 인터페이스 추가 (I2C, SPI, GPIO 등)🔹 간단한 문자(Character) 디바이스 드라이버 작성문자 디바이스 드라이버는 데이터를 바이트 단위로 읽고 쓰는 장치를 제어하는 드라이버입니다.예를 들어 시리얼 포트(UART), 키보드, 마우스 등이 문자 디바이스로 동작합니다.✅ 1️⃣ 문자 드라이버 기본 코드 (my_char_driver.c)#include #include #include #include #define DEVICE_NAME..
2025.03.06 -
커널 포팅 (4. 드라이버 포팅 / 4.2 기존 드라이버 포팅)
4.2 기존 드라이버 포팅기존 보드에서 사용되는 디바이스 드라이버를 확인하고, 이를 새로운 환경에 맞게 포팅하는 과정을 다룹니다.리눅스에서는 lsmod, modinfo 등을 사용하여 현재 로드된 드라이버를 확인할 수 있으며, 필요한 드라이버를 분석, 수정, 빌드하여 새로운 환경에서 적용할 수 있습니다.🔹 기존 보드에서 사용되는 드라이버 확인 (lsmod, modinfo)✅ 1️⃣ 현재 로드된 커널 모듈 확인 (lsmod)lsmod출력 예시:Module Size Used bybcm2835_rng 16384 0i2c_bcm2835 16384 0bcm2835_codec 36864 0bcm2835_v4l2 ..
2025.03.06 -
커널 포팅 (4. 드라이버 포팅 / 4.1 기본적인 디바이스 드라이버 개념)
4.1 기본적인 디바이스 드라이버 개념🔹 디바이스 드라이버의 역할과 구조디바이스 드라이버(Device Driver) 는 운영체제(OS)와 하드웨어를 연결하는 중요한 소프트웨어입니다.커널과 하드웨어 간의 인터페이스를 제공하여, 응용 프로그램이 직접 하드웨어를 제어하지 않고 표준 API를 통해 접근할 수 있도록 지원합니다.✅ 디바이스 드라이버의 역할하드웨어 제어: CPU, 메모리, 네트워크, 저장 장치 등의 장치를 관리커널과 하드웨어 간 인터페이스 제공: 응용 프로그램이 직접 하드웨어를 제어하는 것을 방지시스템 자원 관리: 장치의 입출력(I/O) 및 메모리 사용 관리인터럽트 처리: 하드웨어 이벤트(예: 키보드 입력, 네트워크 패킷 수신) 대응✅ 디바이스 드라이버의 기본 구조 리눅스에서는 드라이버를 모듈화된..
2025.03.06