메모리가 작은 시스템을 위한 커널 경량화 (2) — initrd 사용에 따른 영향

지난 편에서는 initrd 없이 root=/dev/vda로 직접 부팅하는 구성으로 defconfig 커널의 베이스라인을 측정했다. 하지만 실제 임베디드/컨테이너 이미지에서는 initrd(정확히는 initramfs)를 쓰는 구성도 흔하다 — 루트 파일시스템 드라이버를 모듈로 빼두고 initramfs에서 필요한 것만…

Continue Reading메모리가 작은 시스템을 위한 커널 경량화 (2) — initrd 사용에 따른 영향

메모리가 작은 시스템을 위한 커널 경량화 (1) — 측정 방법론과 베이스라인

컨테이너나 저사양 임베디드 보드처럼 메모리가 1GB 이하로 제한된 환경에서는 배포판 defconfig 커널조차 여유 공간을 상당히 잡아먹는다. 배포판 커널은 다양한 하드웨어를 지원하기 위해 수많은 드라이버와 서브시스템을 켜둔 상태라, 실제 타깃 환경에서는…

Continue Reading메모리가 작은 시스템을 위한 커널 경량화 (1) — 측정 방법론과 베이스라인

Ubuntu 22.04 LXC 컨테이너 사용하기

LXC(Linux Containers)는 리눅스 커널의 컨트롤 그룹(cgroup)과 네임스페이스만으로 격리된 실행 환경을 만드는 컨테이너 기술로, Docker가 내부적으로 쓰던 기반 기술이기도 하다. Docker처럼 이미지 레이어나 오케스트레이션 기능은 없지만, 그만큼 가볍고 VM에 가까운 방식으로…

Continue ReadingUbuntu 22.04 LXC 컨테이너 사용하기

BCC

커널 내부에서 어떤 프로세스가 어떤 파일을 열고, 어떤 시스템 콜을 얼마나 호출하는지 확인하고 싶을 때 strace는 대상 프로세스 하나에 붙어야 하고 오버헤드도 커서 운영 중인 서버에서 시스템 전체를 훑어보기엔 부담스럽다.…

Continue ReadingBCC

CVSS 10.0 취약점 “RufRoot” — Claude Code·Codex 에이전트 하네스 Ruflo의 무인증 원격코드실행

Model Context Protocol(MCP)로 여러 AI 에이전트를 묶어 자동화 워크플로를 돌리는 오케스트레이션 툴이 최근 빠르게 늘고 있습니다. Claude Code와 OpenAI Codex를 지휘하는 "에이전트 메타 하네스" Ruflo도 그중 하나로, GitHub 스타 6만…

Continue ReadingCVSS 10.0 취약점 “RufRoot” — Claude Code·Codex 에이전트 하네스 Ruflo의 무인증 원격코드실행

Arm GIC v3와 Pseudo-NMI에 대한 이해

x86에는 IRQ 마스크와 무관하게 항상 들어오는 진짜 NMI(Non-Maskable Interrupt) 핀이 있지만, ARM에는 그런 하드웨어가 없다. 그런데 PMU(성능 카운터) 오버플로우 인터럽트처럼 "일반 IRQ가 막혀 있는 구간에서도 반드시 들어와야" 정확한 프로파일링이 되는…

Continue ReadingArm GIC v3와 Pseudo-NMI에 대한 이해

[ARM] arch_has_hw_pte_young() 이해

MGLRU(Multi-Gen LRU) 페이지 에이징이나 fork() 이후 CoW(Copy-on-Write) 처리처럼, 커널이 "이 페이지가 최근에 접근됐는가"를 알아야 하는 곳이 많다. 이걸 알아내는 방법은 두 가지다 — 오래된 PTE에 접근할 때마다 일부러 페이지 폴트를…

Continue Reading[ARM] arch_has_hw_pte_young() 이해