리눅스커널
Posts
154 posts[리눅스커널][가상파일시스템] open(): 파일 객체를 오픈할 때 세부 동작
open(): 파일 객체를 오픈할 때 세부 동작 유저 공간에서 open() 함수를 실행하면 커널 공간에서 다음 그림과 같은 함수 흐름을 확인할 수 있습니다. 위 그림은 유저 공간에서 함수 오픈 오퍼레이션을 실행할 때 함수 실행 흐름입니다. 유저 공간에서 open() 함수를 호출하면 시스템 콜을 발생시켜 실행 흐름이 커널 공간으로 바뀝니다. 이후 open() 함수에 해당하는 시스템 콜 핸들러 함수인 sys_open() 함수가 실행 한 후 ext4 파일시스템에서 관리하는 파일 오픈 함수인 ext4_file_open() 함수를 호출합니다. 이전 절에서 유저 공간에서 read() 혹은 write() 함수를 실행할 때도 위와 비슷한 함수 실행 흐름을 확인했습니다. 파일을 오픈할 때는 read()나 write(
[리눅스커널][디버깅] ftrace 설정과 로그 분석하기
ftrace 란 ftrace 리눅스 커널에서 제공하는 가장 강력한 트레이서입니다. ftrace는 커널 개발자에게 축복입니다. ftrace는 커널 세부 동작을 알기 쉽게 출력하기 때문입니다. ftrace의 특징은 다음과 같습니다.1. 인터럽트, 스케줄링, 커널 타이머 커널 동작을 상세히 추적해줍니다.2. 함수 필터를 지정하면 자신을 호출한 함수와 전체 콜스택까지 출력합니다. 물론 코드를 수정할 필요가 없습니다.3. 함수를 어느 프로세스가 실행하는지 알 수 있습니다.4. 함수 실행 시각을 알 수 있습니다.5. ftrace 로그를 키면 시스템 동작에 부하를 주지 않습니다. 다음에 이어 ftrace를 설정하는 방법을 알아보겠습니다. ftrace는 어떻게 설정할까? ftrace에서 제공하는 nop, func
[리눅스커널][디버깅] T32(Trace32)로 vmlinux 로딩해 시스템 구경하기
T32 시작 명령어 T32 시뮬레이터를 열고 다음 명령어를 입력합시다.sys.cpu cortexa7sys.up 대부분 ARM32 아키텍처는 위 명령어로 T32가 초기화됩니다. T32 명령어로 시스템 점검하기 먼저 커널 섹션 정보를 보겠습니다.y.l.sec__________address________|path\section___________________________|acc|init|physical P:00000000--0000001F|\\vmlinux\.vectors |R-X|L- | P:00001000--000012BF|\\vmlinux\.stubs |R-X|L- | P:C0008000--C
[리눅스커널][디버깅] 크래시 유틸리티로 vmcore를 T32(Trace32)에 로딩하기
소개 크래시 유틸리티는 리눅스 커널 개발에서 인기 있는 디버깅 툴입니다. 특히 search 명령어로 메모리 서치를 할 수 있는 막강한 기능을 제공합니다. 하지만 프로세스별 콜스택을 이동하면서 지역변수를 볼 수 있는 기능이 없어 조금 불편합니다. 이번 포스팅에서 vmcore에서 스택 덤프를 추출해 T32 시뮬레이터로 콜스택을 올려 보는 방법을 소개합니다. 크래시 유틸리티로 프로세스 스택 메모리 덤프하기 "./crash64 vmcore vmlinux" 명령어로 크래시 유틸리티를 실행합니다.austindh.kim~/backup/Vmcore_dump$ ./crash64 vmcore vmlinux crash64 7.1.9++Copyright (C) 2002-2017 Red Hat, Inc.Copyrigh
![[Spoiler] 점프 신작 '공주님 고문 시간입니다' 원작자에 '우공못' 작가 그림. '시간정지용사' 또다른 플레이어? '다음에 오는 만화 대상' 운영 잡지 폐간](https://img.zoomtrend.com/2026/06/07/1780881297-ECA090ED948426-28EC95A0EB8B88EBA980EC8B9CEAB7B8EB8490.jpeg)

