본문 바로가기

Linux11

Kernel Panic Calltrace 분석 Kernel Panic이 발생한 경우 하기와 같이 Calltrace log를 출력하기 때문에 해당 정보를 기반으로 디버깅 하는 방법 정리 example) xen porting 과정 중 kernel 부팅 시 발생한 error[    0.500423] Internal error: synchronous external abort: 96000010 [#1] PREEMPT SMP[    0.501475] Modules linked in:[    0.502306] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.20.11 #6[    0.503174] Hardware name: linux,dummy-virt (DT)[    0.507173] pstate: 40000005 (nZcv d.. 2024. 2. 8.
Bootloader(U-Boot) Overview 개요 전원 인가 시, 내부 ROM이 실행되어 Operation Mode에 맞게 Bootloader를 sram에 loading하고 실행되어 cpu 및 memory, hw 초기화 등을 수행하고 OS를 DRAM에 load하고 제어권을 넘기는 프로그램. U-boot 임베디드 장치에서 장치의 운영 체제 커널을 부팅하기 위한 지침을 패키징하는 데 사용되는 오픈 소스 기본 bootloader. ARM processor 기반 & 임베디드 Linux 시스템 경우 주로 u-boot를 사용 u-boot를 기반으로 자신의 system or board에 맞게 porting을 진행 directory 구성 arch: 주로 architecture에 dependency가 있는 code, start.S 코드가 위치 board: 보드 관.. 2023. 12. 28.
Device Driver 개요 디바이스 드라이버는 특정 H/W 장치(Device)에 대한 제어를 위해 커널에서 동작하는 프로그램으로서, 시스템과 H/W 장치 간 인터페이스 역할 특성 커널에 포함되어 동작(built-in)하거나 런타임에 적재(module)되어 사용 됨. 커널의 일부분으로 동작함으로 error 발생 시 시스템이 critical한 영향을 끼칠수 있음 표준 인터페이스를 제공해야 하며, 커널 Service(memory allocation, IRQ, wait, etc...)를 이용할 수 있다. 종류 Character(문자) 디바이스 드라이버: buffer를 거치지 않고 direct로 raw data에 대하여 read/write 가능한 장치(ex. 키보드, 마우스, 시리얼포트 etc) Block(블록) 디바이스 드라이버: .. 2022. 9. 14.
runtime에 target board kernel의 config 확인 커널을 빌드하는 host 환경이 아닌 실행중인 target board에서 해당 kernel image에 적용된 config를 확인할 수 있는 방법 /proc 디렉토리 아래 config.gz로 해당 커널 image의 config가 압축되어 config.gz파일로 존재 이를 압축 해제하게 되면 해당 image의 kernel config를 확인할 수 있음 하기 명령은 압축해제한 config를 running.config에 저장 cat /proc/config.gz | gunzip > /tmp/running.config 압축 해제한 config 확인 vi /tmp/running.config # # Automatically generated file; DO NOT EDIT. # Linux/arm64 4.14.202 .. 2022. 9. 14.
Device Driver - Atomic Atomic 연산 Atomic 연산이란 연산 수행 중 다른 thread로 context 전환이 되지 않는 연산을 의미하며 task의 context switching이 일어나거나 interrupt routine에서 해당 메모리에 대해 동시 처리되지 않도록 보장하는 연산을 일컫는다. 성능이 굉장히 중요한 부분에 있어서 Lock을 사용하기에는 성능 저하가 우려되는 경우 사용 Function Description ATOMIC_INIT(int i) At declaration, initialize an atomic_t to i int atomic_read(atomic_t *v) Atomically read the integer value of v void atomic_set(atomic_t *v, int i) At.. 2022. 5. 23.
[cmd] sed Description GUI기반의 편집기인 vi처럼 CLI(Command Line Interface)기반으로 파일을 인자로 받아 명령를 통해 작업을 진행한 후, 화면에 출력하는 방식 명령어로서, 원본을 직접 수정하지 않고 수정한 결과를 출력해주는 역할의 명령어 Pattern space와 Hold space sed명령어는 동작시 내부적으로 2개의 Work Space를 사용하는데, 이 두 버퍼를 Pattern Space(Pattern Buffer)와 Hold Space(Hold Buffer)라고 함 Pattern space: 입력 스트림을 통해 읽어들인 라인 한 줄이 저장되는 공간으로서 수정, 출력 등의 명령이 적용(처리)되는 공간 Hold space: 임시 저장공간으로서 수정 명령 등의 영향을 받지 않아 .. 2022. 3. 15.
728x90