[리눅스커널][디버깅] ftrace 설정과 로그 분석하기
By Guillermo Austin Kim | 2019년 3월 17일 |
ftrace 란 ftrace 리눅스 커널에서 제공하는 가장 강력한 트레이서입니다. ftrace는 커널 개발자에게 축복입니다. ftrace는 커널 세부 동작을 알기 쉽게 출력하기 때문입니다. ftrace의 특징은 다음과 같습니다.1. 인터럽트, 스케줄링, 커널 타이머 커널 동작을 상세히 추적해줍니다.2. 함수 필터를 지정하면 자신을 호출한 함수와 전체 콜스택까지 출력합니다. 물론 코드를 수정할 필요가 없습니다.3. 함수를 어느 프로세스가 실행하는지 알 수 있습니다.4. 함수 실행 시각을 알 수 있습니다.5. ftrace 로그를 키면 시스템 동작에 부하를 주지 않습니다. 다음에 이어 ftrace를 설정하는 방법을 알아보겠습니다. ftrace는 어떻게 설정할까? ftrace에서 제공하는 nop, func
리눅스에서 ZFS 설치/구성
By 반달가면 | 2018년 6월 4일 |
RAID카드 없이 여러개의 HDD를 묶어서 하나의 저장공간으로 사용할 방법을 찾아보다가 ZFS에 대해 알게 되었다. 주요 특징 두어가지가 눈에 띄어서 실제로 괜찮은지 시험해 보기로. ZFS는 zpool이라는 것을 구성해서 여러개의 저장장치를 하나의 저장공간으로 묶을 수 있다. 다만 여러개의 저장장치를 묶을 때 각 저장장치의 사용가능 공간은 이들중 가장 용량이 작은 저장장치에 의해 제한된다. 그러므로 같은 용량의 디스크를 묶는 것이 좋겠다. zpool의 종류에 따라 RAID와 유사하게 데이터 오류에 대한 보호 기능도 제공한다. 종류는 아래와 같다. striped: RAID0 비슷한 형태. 데이터 보호 기능이 없다. mirror: RAID1 비슷한 형태. 데이터 전체를 별도로 복사해서 가지
[리눅스커널][시스템콜] strace로 시스템콜 디버깅하기
By Guillermo Austin Kim | 2019년 2월 21일 |
리눅스에서는 시스템콜 디버깅을 위한 strace라는 훌륭한 툴을 제공합니다. 유저 프로그램이 실행할 때 어떤 시스템콜을 실행했는지 확인할 수 있습니다. strace 이란 툴은 리눅스에서 제공하는 강력한 시스템 트레이싱 기능입니다. 물론 라즈베리파이에서도 기본으로 설치되어 있어 바로 사용할 수 있습니다. strace는 다음 기능을 제공합니다.1. glibc(GNU C) 라이브러리에서 시스템 콜을 호출하는 함수 이름 출력2. 시스템콜 실행 후 반환값 이 기능을 쓰기 위해 우선 다음 코드를 시스템 프로그램으로 입력해 봅시다.1 #include <stdio.h>2 #include <stdlib.h>3 #include <unistd.h>4 #include <sys/t
[라즈베리파이]리눅스 커널 매크로 분석 방법
By Guillermo Austin Kim | 2018년 6월 14일 |
#리눅스 커널 매크로 분석 - 리눅스 커널 매크로 분석 방법 - 매크로 ##uname 파라미터 전달 기법 - __init 매크로 (1) - __init 매크로 (2) - container_of 매크로 - current 매크로 (1) - current 매크로 (2) - current 매크로 (3) - BUG 매크로 - WARN 매크로 매크로 분석에 도움 되는 두 가지 방법을 소개합니다. 전처리 파일 추출과 바이너리 유틸리티를 활용해서 어셈블리 코드를 보는 방법입니다. 매크로를 분석할 때는 물론 평소 커널 코드 읽을 때는 이 방법을 적극적으로 활용해서 분석하기를 바랍니다. C 코드만 볼 때 보다 훨씬 효율적으로 코드를 읽을 수 있고 더 유용한 디버깅 정보를 볼 수 있거든요. 전처리 파일 추출이번에는