리누스 토발즈 “리눅스는 반AI 프로젝트 아니다” — 이미 시행 중인 Assisted-by 태그 정책까지
2024년 10월만 해도 리누스 토발즈는 AI 코딩 도구를 두고 "90%는 마케팅 과장"이라며 무시하겠다고 말했습니다. 2026년 7월 15일, 그는 정반대에 가까운 어조로 리눅스 커널 메일링 리스트에 이렇게 썼습니다. "Linux is not…
Linux Kernel
2024년 10월만 해도 리누스 토발즈는 AI 코딩 도구를 두고 "90%는 마케팅 과장"이라며 무시하겠다고 말했습니다. 2026년 7월 15일, 그는 정반대에 가까운 어조로 리눅스 커널 메일링 리스트에 이렇게 썼습니다. "Linux is not…
라우팅 테이블이나 설정 캐시처럼 읽기는 압도적으로 많고 쓰기는 어쩌다 한 번인 자료구조에 일반 락(mutex/spinlock)을 쓰면, 정작 서로 방해할 일이 없는 리더끼리도 락 때문에 경합한다. RCU(Read-Copy-Update)는 리더 쪽을 아예 락-프리로 만들어버리는…
로컬 디스크가 부족하거나, diskless 클라이언트를 원격 스토리지로 부팅해야 하거나, 원격에 있는 이미지 파일을 로컬 블록 디바이스처럼 다루고 싶을 때가 있다. iSCSI가 이런 용도의 표준이지만 타깃 설정이 상대적으로 번거롭다. NBD(Network Block…
KASAN은 힙 오버플로우나 use-after-free를 잡아내는 데 강력하지만, 모든 할당에 리다이렉션 존(redzone)과 섀도 메모리 검사를 붙이는 방식이라 오버헤드가 크고 프로덕션에 상시 켜두기는 부담스럽다. KFENCE(Kernel Electric-Fence)는 이 문제를 확률적 샘플링으로 우회한다 —…
ARM GICv3의 컴포넌트 구성과 초기화 흐름은 별도 글에서 다뤘다. 그런데 막상 각 레지스터를 읽고 쓰는 실제 커널 코드를 보면 writel_relaxed() 한 줄로 끝나는 경우가 드물다. 하드웨어에 값을 쓴 뒤 그…
업스트림 소스를 --depth 1로 clone해 rust_minimal.o를 빌드하는 데는 성공했지만, 그 트리는 지금 부팅된 우분투 배포 커널과 버전이 다른 별개의 트리였다. 실제로 insmod까지 되려면 지금 실행 중인 커널 자체를 기준으로 빌드해야…
1~3부에서 최소 모듈, misc device, 인터럽트 동기화를 각각 다뤘는데, 매번 module! 매크로부터 새로 채워나갔다. 실제로 새 모듈을 시작할 때는 그 반대가 편하다 — 어떤 필드가 필수고 어떤 게 선택인지, 초기화…
2부에서는 misc device의 상태를 Mutex로 보호했다. 그런데 Mutex::lock()은 경합이 발생하면 현재 태스크를 재웠다가 나중에 깨우는 방식으로 동작한다. 하드웨어 인터럽트 핸들러(hardirq context)는 애초에 "태스크"라는 개념이 없는 컨텍스트라 이 방식이 통하지 않는다.…
지난 글에서 살펴본 rust_minimal.rs는 로드되면 로그 몇 줄을 찍고 언로드되면 사라지는, 사실상 아무 일도 하지 않는 모듈이었다. 실제 드라이버라면 얘기가 다르다. 유저스페이스가 open()으로 열고, read()/write()로 데이터를 주고받고, ioctl()로 제어 명령을…
리눅스 커널 CVE 목록을 오래 들여다본 사람이라면 use-after-free, 버퍼 오버플로우, 널 포인터 역참조 같은 메모리 안전성 버그가 얼마나 자주 반복되는지 알 것이다. 리눅스 안정 커널 메인테이너 그렉 크로아-하트만은 지난 25년간의…