Run if you want it
300x250

Linux 10

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 daif -PAN -..

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: 보드 관..

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(블록) 디바이스 드라이버: ..

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 ..

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..

[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: 임시 저장공간으로서 수정 명령 등의 영향을 받지 않아 ..

Linux System/Linux 2022.03.15

PACKAGECONFIG

Description Yocto recipe상에서 해당 레시피에 대한 feature에 대하여 enable하거나 disable 또는 dependency를 설정할 수 있는 변수로서 아래와 같은 형태로 사용한다. 기본형태 PACKAGECONFIG ??= "f1" PACKAGECONFIG[f1] = "--with-f1,--without-f1,build-deps-f1,rt-deps-f1" 1. PACKAGECONFIG에 명시된 feature에 대하여 해당 feature에 대한 configure를 설정 ex) f1이 PACKAGECONFIG에 명시되어 있으므로 PACKAGECONFIG[f1]이 활성화 되어 정의된 configure 적용 2. 각 feature에 대한 configure 설정, 4 가지 config 설..

[func] mmap() / munmap() - memory 맵핑

Definition 파일이나 장치를 메모리에 대응 or 해제 시킴 #include #include void * mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); int munmap(void *start, size_t length); Description mmap() 함수는 fd로 지정된 파일에서 offset을 기점으로 시작해서 length byte만큼 start 주소로 대응시키는 함수 offset과 length는 PAGE_SIZE의 단위여야 함(대개 start 주소를 0으로 지정) 지정된 영역이 mapping된 실제 시작위치를 반환 * PAGE_SIZE? Page는 MMU에서 메모리 관리 시 사용하는 최소 단위 pro..

Linux System/Linux 2021.07.23

[cmd] install 명령어

cp와 유사한 명령이지만 cp에 비하여 다양한 복사 옵션들이 존재하는 명령어 install -d 디렉토리 // 지정한 path에 디렉토리가 존재하지 않는다면 직접 만듬 ex) install -d /usr/lib/testlib/ install -m [권한 모드] 파일 디렉토리 // 파일에 대한 권한을 설정하여 디렉토리로 copy ex) install -m 755 AAA alphabet/ // AAA의 권한모드가 755로 변경되어 copy됨 install -g // 소유그룹 설정 install -o // 소유자 설정 install -s // strip이 수행. 심볼릭테이블이 삭제되므로 파일의 크기가 줄어듬

Linux System/Linux 2020.08.05

[func] fcntl

fcntl은 파일들의 특성 제어를 위해 제공하는 함수이다. #include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); 첫 번째 fd는 open,socket 등의 시스템 호출을 통해서 만들어진 file descriptor이다. 두 번째 cmd를 통해 fd에 대한 특성을 제어할 수 있다. cmd command description 비고 F_DUPFD fd를 복사하기 위해 사용한다. F_DUPFD 를 사용할경우 arg 와 같은 크기의 파일지정자를 되돌려주거나, 이미 사용되어지고 있다면, arg 보다 큰 할당가능한 파일지정번호중 가장 작..

Linux System/Linux 2020.04.07
728x90