리눅스
Posts
554 posts[리눅스커널][디버깅] 커널 디버깅이란 무엇인가?
디버깅은 '디버그'와 'ing' 합성어로 버그를 잡는 과정을 뜻합니다. 누군가 '디버깅을 하고 있다.' 라고 말하면 '버그를 수정하고 있다.'고 볼 수 있습니다. 이번 절에서 디버깅 방법을 소개하기 전 디버깅이 중요한 이유를 다음 관점으로 알아보겠습니다. 문제 해결 능력 커널 코드 학습 능력 필자는 디버깅을 단지 버그를 잡는 과정으로만 보지 않습니다. 리눅스 커널과 드라이버가 정상 동작할 때 자료구조와 함수 호출까지 파악하는 과정을 디버깅이라고 생각합니다. 그 이유를 더 알아볼까요? 디버깅은 문제 해결을 키우는 지름길 신입 개발자들은 실전 리눅스 개발에서 어떤 업무를 하는지 궁금해합니다. 임베디드 리눅스는 ‘클라우드 서버’, ‘휴대폰’, ‘자동차’ 까지 다양한 분야에서 쓰고 있습니다. 따라서 실전
[리눅스커널][가상파일시스템] 파일 객체란
파일 객체대부분 유저는 파일을 생성하고 읽고 쓰기 위한 용도로 씁니다. 이 때 파일 동작에 대한 상세 규칙과 속성은 파일 객체에서 확인할 수 있습니다. 만약 라즈베리파이에서 2개 Geany프로그램에서 1개 파일을 열 수 있습니다. 이 때 몇 개 파일 객체가 생성될까요? 2개 파일 객체는 각각 프로세스 별로 생성합니다. 파일 객체는 이렇게 파일을 오픈하고 읽고 쓰는 상황에서 프로세스가 파일을 관리하기 위해 생성합니다. 파일 객체에 대한 상세 내용은 struct file 구조체에서 확인할 수 있습니다. 다음 소절에서 struct file 구조체에 대해 알아보겠습니다. struc file 구조체 분석 파일 객체는 다음 해더 파일에 정의돼 있습니다.[https://elixir.bootlin.com/linux
데비안/우분투 계열 리눅스에서 S/W 패키지 검색/다운로드/설치 (터미널창)
데비안/우분투 계열 리눅스에서 S/W 패키지를 검색하고 설치하는 작업은 주로 시냅틱 패키지 관리자(Synaptic Package Manager)에서 많이 하는데, ssh로 접속해서 터미널창에서 작업을 하는 경우도 종종 있는 관계로 터미널창(커맨드 라인)에서 명령어 입력으로 작업하는 과정도 정리해 두기로. 설치하고자 하는 패키지 이름을 정확하게 모를 경우에 우선 검색을 해야 한다. 예를 들어 아파치(apache) 웹서버 패키지를 찾기 위해 "apache"가 포함된 패키지를 검색한다고 하면, 아래와 같이 작업하면 되겠다. # S/W 저장소 정보 갱신 sudo apt-get update # 이름 또는 설명에 "apache" 포함 패키지 검색 apt-cache search "apache" | m
[리눅스커널][스케줄링] 크래시 유틸리티로 컨택스트 스위칭 디버깅하기
크래시 유틸리티로 컨택스트 스위칭 디버깅하기 이번에는 크래시 유틸리티를 활용해 컨택스트 정보를 확인하겠습니다. 다음 정보는 ARM 코어에서 실행 중인 프로세스의 레지스터 세트입니다.pc : [<80f65224>] lr : [<80f65bcc>] psr: 0x80f655acsp : 0x9b7dfce8 ip : 0x9b7dfd74 fp : 0x9b7dfd64r10: 0x0 r9 : 0x9f89ea00 r8 : 0x9db8b200r7 : 0x81709294 r6 : 0x9eb07000 r5 : 0x828ea000 r4 : 0xa6b46780r3 : 0x00000000 r2 : 0x036db918 r1 : 0x00000089 r0 : 0x7



