Unix & Linux 59

리눅스 커널 소스의 구조 ( Linux Kernel Structure )

arch 아키텍처별로 동작하는 커널 코드가 있음 - arm : 32bit 계열 arm 아키텍쳐 - arm64 : 64bit 계열 Arm 아키텍쳐 - x86 : 인텔 x86 아키텍쳐 include 커널 코드 빌드에 필요한 헤더 Documentation 커널 기술문서 kernel 커널의 핵심 코드가 있는 폴더 다음과 같은 하위 디렉토리 irq 인터럽트 관련 sched 스케쥴링 코드 power 커널 파워매니지먼트 locking 커널 동기화 관련코드 printk 커널 콘솔 관련 코드 trace ftrace 관련 코드 위 디렉토리에는 아키텍처와 무관한 커널 공통 코드가 있고, 아키텍쳐 별로 동작하는 커널 코드는 arch/*/kernel 에 있습니다. 라즈비안의 경우 ARMv7 아키텍쳐 관련 코드는 arch/arm..

Unix & Linux/Kernel 2022.07.07

커널 컴파일 디버깅 노트 (2) - 전처리 코드 생성

리눅스 커널을 빌드하는 과정에서 전처리 코드를 생성하는 방법은 아래와 같다. 리눅스 커널 소스를 분석하다보면 수많은 매크로를 만난다. 이러한 이 매크로가 소스 분석의 걸림돌 중하나이다. 전처리 코드는 이러한 매크로를 모두 풀어서 표현한다. 따라서 훨씬 편하게 소스코드로 분석할 수 있으며, 리눅스 커널 코드 를 분석할 때는 전처리 코드를 함께 봐야한다. 전체 전처리 파일을 추출 linux 폴더의 makefile 수정 -save-temps=obj \ 을 위와 같이 Makefile 을 수정하면된다. 그리고 다시 커널 빌드하면 전처리코드가 out폴더에 생성됩니다. /out/kernel/sched 에 들어가보면 *.i 뿐만아니라 *.s 파일도 생성되어있습니다. 용량은 5G 정도 늘어납니다.

Unix & Linux/Kernel 2022.07.07

커널 컴파일 디버깅 노트 (1) - O=$OUTPUT 추가시 error

아래와 같이 O=$OUTPUT 을 추가하면 아래와 같이 Error 가 발생 왜그럴까? O=$OUTPUT 만 빼면 괜찮다 echo "kernel build" make O=$OUTPUT -j4 zImage modules dtbs -j4 2>&1 | tee $BUILD_LOG 위에 설명한대로 linux 폴더에서 make mrproper하면된다 make mrproper : 이전의 컴파일시 설정되었던 설정을 제거 (최초 커널 컴파일시나 이전 설정한 컴파일 환경을 재사용한다면 생략 가능 ) make menuconfig : 텍스트 환경 혹은 make xconfig : x윈도우 환경 혹은 make oldconfig : 기존의 환경을 불러와서 새로운 것만 설정 make dep : 설정한 영역의 의존성 검사 make cl..

Unix & Linux/Kernel 2022.07.05

리눅스 커널 용어 정리 (1) - zImage , modules , dtbs

zImage Kernel Image 커널 바이너리, 보통 make 명령어로 커널을 빌드하면 만들어진다. 자동 압축 해제되는 Linux 커널 이미지의 압축된 버전 커널이 하나의 파일로 디스크에 저장되어 있는 것 커널은 원래 파일에 저장되어있는 것이 아니라 컴퓨터가 꺼지기 전까지는 메모리에 존재 부트로더에 의해 로드될 최종적인 복합 커널 이미지 Modules 커널에서 사용되는 네트워크 드라이브를 모두 가지고있으면 발생하는 비효율적인 문제를 해결하기위해 모듈이라는 파일로 커널 외부에 별도로 가지고있음으로써 새로운 장치 추가시 커널 바꿀필요없이 해당모듈만 적재후 제거한 후 사용 가능 모듈 관련 명령어 리눅스 커널에 적재된 모듈 정보 출력 lsmod 모듈에 대한 정보 출력 modinfo [module name] ..

Unix & Linux/Kernel 2022.07.04

(ln) 리눅스 사전 , ln 명령어

리눅스 파일 시스템 구조 리눅스의 파일시스템 구조 - 부트 블록 - 슈퍼 블록 - i-node list : inode 를 모아놓은 영역 - 데이터 블록 : data 를 저장하고 있는 영역 i-node 리눅스의 파일, 디렉토리 생성시 반드시 이 값을 갖는다. i-node 확인하는 방법 ls -i -i 옵션을 추가로 작성하면 i-node 를 볼 수 있다. 링크 파일 링크파일의 경우 두가지로 나눌 수 있다. 하드링크 와 소프트 링크이다. 파일은 심볼릭링크파일 이라고도 불린다. 하드링크 파일은 i-node 번호에 직접 연결되어 만들어지는 링크 - 하드 링크를 통해 파일이 생성하면 원본파일의 i-node 를 공유하고 이름만 다른파일이 생성된다. - i-node 를 공유하는 하드링크는 이름을 제외한 모든 속성이 같..