커널 3

리눅스 커널 소스의 구조 ( 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

라즈베리파이3, BCM2709 ? 뭘까?

BCM2709 커널 컴파일하다보면 BCM2709 라는 뭔가 칩셋명같은 것이 보인다. 무엇일까? 구글에서 뭔가 실마리가 될만한 표를 찾았다. 하드웨어칸에 BCM2709 라고있다 . CPU 명일지도 몰랐다고 생각했는데 CPU 는 브로드컴 BCM2837 을 사용한다. 쿼드코어 64bit 그러면 BCM2709 는 어떤칩일까? 찾았다. 바로 Base 가 되는 칩? 이라는 것이다. BCM2709 에 살을 붙여서 2837 이 나왔다는 이야기 실제로 불일치는 실리콘 및 칩 패키지의 지정 때문입니다. 원래 BCM2708로 알려진 실리콘 다이가 있었고 모든 초기 개발은 이를 중심으로 이루어졌습니다. 256MB DRAM이 있는 스택형 9x9 패키지에서는 BCM2763으로 알려져 있습니다. (스택은 말 그대로 프로세서 상단에..