GCC vs Clang 커널 빌드 차이
Linux 커널은 전통적으로 GCC로 빌드되어 왔다. 하지만 최근 몇 년간 Clang / LLVM 기반 빌드가 빠르게 확산되었다. 현재는 둘 다 “정식 지원” 상태이며, 차이는 “지원 여부”가 아니라 특성의 차이에 가깝다.…
Linux Kernel
Linux 커널은 전통적으로 GCC로 빌드되어 왔다. 하지만 최근 몇 년간 Clang / LLVM 기반 빌드가 빠르게 확산되었다. 현재는 둘 다 “정식 지원” 상태이며, 차이는 “지원 여부”가 아니라 특성의 차이에 가깝다.…
이 글은 Ubuntu 환경에서 Clang/LLVM 툴체인을 이용해 Linux 커널을 실제로 빌드하는 방법을 단계별로 정리한다. Clang/LLVM 툴체인 설치는 아래 글을 먼저 확인한다. https://junorionblog.co.kr/linux-%ec%bb%a4%eb%84%90-clang-llvm-%ed%88%b4%ec%b2%b4%ec%9d%b8-%ec%a4%80%eb%b9%84%ed%95%98%ea%b8%b0/ Ubuntu 커널 빌드에 대한 건 아래 글을 참고한다.…
이 글은 리눅스 커널을 Clang/LLVM 툴체인으로 빌드하기 위한 실전 가이드다.LLVM=1 기반의 표준 빌드 플로우, 크로스 컴파일(arm64 포함), LLD/IAS, BTF(pahole), LTO까지 한 번에 정리한다. 커널에서 말하는 “LLVM 빌드”의 의미 커널 문서에서…
리눅스 커널 메일링 리스트(보통 LKML)에 가입하는 방법은 생각보다 단순하다.천천히 단계별로 정리해 본다. 리눅스 커널 메일링 리스트(LKML)란 무엇인가? Linux Kernel Mailing List 는리눅스 커널 개발자들이 패치, 설계 논의, 버그 리포트를 공개적으로…
watermark_boost는 리눅스 커널의 zone 워터마크(watermark) 기반 메모리 리클레임 시스템에서 사용되는 메모리 부족 예측에 따른 proactive reclaim 트리거 조절 값이다. 말 그대로 워터마크의 임계값(watermark_high)을 일시적으로 높여, 더 많은 페이지를 reclaim 하도록…
리눅스 커널을 플랫폼 또는 목적에 맞게 빌드하기 위해서는 .config 파일을 생성하고, 적절한 옵션들을 구성해야 한다. 이 과정은 커널 빌드 전체의 품질과 기능성에 큰 영향을 미친다. 이 글에서는 커널 설정 방법에…
Linux 커널은 printk()로 남긴 메시지를 ring buffer 형태로 저장하고, 이를 /dev/kmsg나 dmesg 명령으로 확인할 수 있게 해준다. 그런데 시스템이 패닉(panic)이나 크래시에 빠지면 이 로그가 디스크에 채 기록되기 전에 시스템이 멈춰버려…
SysRq(System Request)는 리눅스 커널에 내장된 긴급 제어 백도어다. 커널이 응답하지 않거나 시스템이 매우 불안정할 때도, SysRq 키 조합을 통해 시스템을 진단하거나 복구할 수 있도록 도와주는 기능을 한다. 이 글에서는 SysRq의…
임베디드 리눅스 디바이스를 개발할 때, 시리얼 콘솔을 통해 커널 디버깅 또는 긴급 명령을 보내는 경우가 있다. 그중 하나가 Magic SysRq 키 조합을 시리얼 포트를 통해 보내는 기능이다. Magic SysRq는 리눅스…
Linux 커널은 일반적으로 사용자 공간(user space)에서 동작하는 프로그램을 직접 실행하지 않는다. 그런데 커널 모듈이나 커널 코드에서 특정 시점에 로그를 외부로 전송하거나 오류 발생 시 복구 스크립트를 호출하는 등, 사용자 공간…